@@ -6378,9 +6378,10 @@ getForeignDataWrappers(int *numForeignDataWrappers)
6378
6378
"fdwhandler::pg_catalog.regproc, "
6379
6379
"fdwvalidator::pg_catalog.regproc, fdwacl, "
6380
6380
"array_to_string(ARRAY("
6381
- " SELECT quote_ident(option_name) || ' ' || "
6382
- " quote_literal(option_value) "
6383
- " FROM pg_options_to_table(fdwoptions)), ', ') AS fdwoptions "
6381
+ "SELECT quote_ident(option_name) || ' ' || "
6382
+ "quote_literal(option_value) "
6383
+ "FROM pg_options_to_table(fdwoptions)"
6384
+ "), ', ') AS fdwoptions "
6384
6385
"FROM pg_foreign_data_wrapper" ,
6385
6386
username_subquery );
6386
6387
}
@@ -6391,9 +6392,10 @@ getForeignDataWrappers(int *numForeignDataWrappers)
6391
6392
"'-' AS fdwhandler, "
6392
6393
"fdwvalidator::pg_catalog.regproc, fdwacl, "
6393
6394
"array_to_string(ARRAY("
6394
- " SELECT quote_ident(option_name) || ' ' || "
6395
- " quote_literal(option_value) "
6396
- " FROM pg_options_to_table(fdwoptions)), ', ') AS fdwoptions "
6395
+ "SELECT quote_ident(option_name) || ' ' || "
6396
+ "quote_literal(option_value) "
6397
+ "FROM pg_options_to_table(fdwoptions)"
6398
+ "), ', ') AS fdwoptions "
6397
6399
"FROM pg_foreign_data_wrapper" ,
6398
6400
username_subquery );
6399
6401
}
@@ -6479,9 +6481,10 @@ getForeignServers(int *numForeignServers)
6479
6481
"(%s srvowner) AS rolname, "
6480
6482
"srvfdw, srvtype, srvversion, srvacl,"
6481
6483
"array_to_string(ARRAY("
6482
- " SELECT quote_ident(option_name) || ' ' || "
6483
- " quote_literal(option_value) "
6484
- " FROM pg_options_to_table(srvoptions)), ', ') AS srvoptions "
6484
+ "SELECT quote_ident(option_name) || ' ' || "
6485
+ "quote_literal(option_value) "
6486
+ "FROM pg_options_to_table(srvoptions)"
6487
+ "), ', ') AS srvoptions "
6485
6488
"FROM pg_foreign_server" ,
6486
6489
username_subquery );
6487
6490
@@ -11407,9 +11410,13 @@ dumpUserMappings(Archive *fout,
11407
11410
11408
11411
appendPQExpBuffer (query ,
11409
11412
"SELECT usename, "
11410
- "array_to_string(ARRAY(SELECT quote_ident(option_name) || ' ' || quote_literal(option_value) FROM pg_options_to_table(umoptions)), ', ') AS umoptions\n"
11413
+ "array_to_string(ARRAY("
11414
+ "SELECT quote_ident(option_name) || ' ' || "
11415
+ "quote_literal(option_value) "
11416
+ "FROM pg_options_to_table(umoptions)"
11417
+ "), ', ') AS umoptions "
11411
11418
"FROM pg_user_mappings "
11412
- "WHERE srvid = %u " ,
11419
+ "WHERE srvid = '%u' " ,
11413
11420
catalogId .oid );
11414
11421
11415
11422
res = PQexec (g_conn , query -> data );
@@ -11969,12 +11976,12 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
11969
11976
int numParents ;
11970
11977
TableInfo * * parents ;
11971
11978
int actual_atts ; /* number of attrs in this CREATE statment */
11972
- char * reltypename ;
11979
+ const char * reltypename ;
11973
11980
char * storage ;
11981
+ char * srvname ;
11982
+ char * ftoptions ;
11974
11983
int j ,
11975
11984
k ;
11976
- char * srvname ;
11977
- char * ftoptions = NULL ;
11978
11985
11979
11986
/* Make sure we are in proper schema */
11980
11987
selectSourceSchema (tbinfo -> dobj .namespace -> dobj .name );
@@ -12060,15 +12067,25 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
12060
12067
12061
12068
/* retrieve name of foreign server and generic options */
12062
12069
appendPQExpBuffer (query ,
12063
- "SELECT fs.srvname, array_to_string(ARRAY("
12064
- " SELECT quote_ident(option_name) || ' ' || "
12065
- " quote_literal(option_value)"
12066
- " FROM pg_options_to_table(ftoptions)), ', ') AS ftoptions "
12067
- "FROM pg_foreign_table ft JOIN pg_foreign_server fs "
12068
- " ON (fs.oid = ft.ftserver) "
12069
- "WHERE ft.ftrelid = %u" , tbinfo -> dobj .catId .oid );
12070
+ "SELECT fs.srvname, "
12071
+ "pg_catalog.array_to_string(ARRAY("
12072
+ "SELECT pg_catalog.quote_ident(option_name) || "
12073
+ "' ' || pg_catalog.quote_literal(option_value) "
12074
+ "FROM pg_catalog.pg_options_to_table(ftoptions)"
12075
+ "), ', ') AS ftoptions "
12076
+ "FROM pg_catalog.pg_foreign_table ft "
12077
+ "JOIN pg_catalog.pg_foreign_server fs "
12078
+ "ON (fs.oid = ft.ftserver) "
12079
+ "WHERE ft.ftrelid = '%u'" ,
12080
+ tbinfo -> dobj .catId .oid );
12070
12081
res = PQexec (g_conn , query -> data );
12071
12082
check_sql_result (res , g_conn , query -> data , PGRES_TUPLES_OK );
12083
+ if (PQntuples (res ) != 1 )
12084
+ {
12085
+ write_msg (NULL , "query returned %d foreign server entries for foreign table \"%s\"\n" ,
12086
+ PQntuples (res ), tbinfo -> dobj .name );
12087
+ exit_nicely ();
12088
+ }
12072
12089
i_srvname = PQfnumber (res , "srvname" );
12073
12090
i_ftoptions = PQfnumber (res , "ftoptions" );
12074
12091
srvname = strdup (PQgetvalue (res , 0 , i_srvname ));
@@ -12259,7 +12276,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
12259
12276
}
12260
12277
12261
12278
if (tbinfo -> relkind == RELKIND_FOREIGN_TABLE )
12262
- appendPQExpBuffer (q , "\nSERVER %s" , srvname );
12279
+ appendPQExpBuffer (q , "\nSERVER %s" , fmtId ( srvname ) );
12263
12280
12264
12281
if ((tbinfo -> reloptions && strlen (tbinfo -> reloptions ) > 0 ) ||
12265
12282
(tbinfo -> toast_reloptions && strlen (tbinfo -> toast_reloptions ) > 0 ))
0 commit comments