@@ -472,11 +472,15 @@ pgduckdb_write_row_refname(StringInfo buf, char *refname, bool is_top_level) {
472
472
* are not escaped yet.
473
473
*/
474
474
List *
475
- pgduckdb_db_and_schema (const char *postgres_schema_name, bool is_duckdb_table ) {
476
- if (!is_duckdb_table ) {
475
+ pgduckdb_db_and_schema (const char *postgres_schema_name, const char *duckdb_table_am_name ) {
476
+ if (duckdb_table_am_name == nullptr ) {
477
477
return list_make2 ((void *)" pgduckdb" , (void *)postgres_schema_name);
478
478
}
479
479
480
+ if (strcmp (" duckdb" , duckdb_table_am_name) != 0 ) {
481
+ return list_make2 ((void *)duckdb_table_am_name, (void *)postgres_schema_name);
482
+ }
483
+
480
484
if (strcmp (" pg_temp" , postgres_schema_name) == 0 ) {
481
485
return list_make2 ((void *)" pg_temp" , (void *)" main" );
482
486
}
@@ -538,8 +542,8 @@ pgduckdb_db_and_schema(const char *postgres_schema_name, bool is_duckdb_table) {
538
542
* database are quoted if necessary.
539
543
*/
540
544
const char *
541
- pgduckdb_db_and_schema_string (const char *postgres_schema_name, bool is_duckdb_table ) {
542
- List *db_and_schema = pgduckdb_db_and_schema (postgres_schema_name, is_duckdb_table );
545
+ pgduckdb_db_and_schema_string (const char *postgres_schema_name, const char *duckdb_table_am_name ) {
546
+ List *db_and_schema = pgduckdb_db_and_schema (postgres_schema_name, duckdb_table_am_name );
543
547
const char *db_name = (const char *)linitial (db_and_schema);
544
548
const char *schema_name = (const char *)lsecond (db_and_schema);
545
549
return psprintf (" %s.%s" , quote_identifier (db_name), quote_identifier (schema_name));
@@ -558,9 +562,9 @@ pgduckdb_relation_name(Oid relation_oid) {
558
562
Form_pg_class relation = (Form_pg_class)GETSTRUCT (tp);
559
563
const char *relname = NameStr (relation->relname );
560
564
const char *postgres_schema_name = get_namespace_name_or_temp (relation->relnamespace );
561
- bool is_duckdb_table = pgduckdb::IsDuckdbTable (relation );
565
+ const char *duckdb_table_am_name = pgduckdb::DuckdbTableAmGetName (relation_oid );
562
566
563
- const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, is_duckdb_table );
567
+ const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, duckdb_table_am_name );
564
568
565
569
char *result = psprintf (" %s.%s" , db_and_schema, quote_identifier (relname));
566
570
@@ -611,7 +615,8 @@ pgduckdb_get_tabledef(Oid relation_oid) {
611
615
Relation relation = relation_open (relation_oid, AccessShareLock);
612
616
const char *relation_name = pgduckdb_relation_name (relation_oid);
613
617
const char *postgres_schema_name = get_namespace_name_or_temp (relation->rd_rel ->relnamespace );
614
- const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, pgduckdb::IsDuckdbTable (relation));
618
+ const char *duckdb_table_am_name = pgduckdb::DuckdbTableAmGetName (relation->rd_tableam );
619
+ const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, duckdb_table_am_name);
615
620
616
621
StringInfoData buffer;
617
622
initStringInfo (&buffer);
@@ -799,7 +804,7 @@ pgduckdb_get_viewdef(const ViewStmt *stmt, const char *postgres_schema_name, con
799
804
StringInfoData buffer;
800
805
initStringInfo (&buffer);
801
806
802
- const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, true );
807
+ const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, " duckdb " );
803
808
appendStringInfo (&buffer, " CREATE SCHEMA IF NOT EXISTS %s; " , db_and_schema);
804
809
805
810
appendStringInfoString (&buffer, " CREATE " );
@@ -879,7 +884,7 @@ pgduckdb_get_rename_relationdef(Oid relation_oid, RenameStmt *rename_stmt) {
879
884
Assert (pgduckdb::IsDuckdbTable (relation) || pgduckdb::IsMotherDuckView (relation));
880
885
881
886
const char *postgres_schema_name = get_namespace_name_or_temp (relation->rd_rel ->relnamespace );
882
- const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, true );
887
+ const char *db_and_schema = pgduckdb_db_and_schema_string (postgres_schema_name, " duckdb " );
883
888
const char *old_table_name = psprintf (" %s.%s" , db_and_schema, quote_identifier (rename_stmt->relation ->relname ));
884
889
885
890
const char *relation_type = " TABLE" ;
0 commit comments