Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb42ea79

Browse files
committed
Ensure that user created rows in extension tables get dumped if the table is explicitly requested, either with a -t/--table switch of the table itself, or by -n/--schema switch of the schema containing the extension table. Patch reviewed by Vibhor Kumar and Dimitri Fontaine.
Backpatched to 9.1 when the extension management facility was added.
1 parent5eb7c4d commitb42ea79

File tree

1 file changed

+41
-12
lines changed

1 file changed

+41
-12
lines changed

‎src/bin/pg_dump/pg_dump.c

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14621,10 +14621,6 @@ getExtensionMembership(Archive *fout, ExtensionInfo extinfo[],
1462114621
intnconfigitems;
1462214622
intnconditionitems;
1462314623

14624-
/* Tables of not-to-be-dumped extensions shouldn't be dumped */
14625-
if (!curext->dobj.dump)
14626-
continue;
14627-
1462814624
if (parsePGArray(extconfig,&extconfigarray,&nconfigitems)&&
1462914625
parsePGArray(extcondition,&extconditionarray,&nconditionitems)&&
1463014626
nconfigitems==nconditionitems)
@@ -14634,21 +14630,54 @@ getExtensionMembership(Archive *fout, ExtensionInfo extinfo[],
1463414630
for (j=0;j<nconfigitems;j++)
1463514631
{
1463614632
TableInfo*configtbl;
14633+
Oidconfigtbloid=atooid(extconfigarray[j]);
14634+
booldumpobj=curext->dobj.dump;
1463714635

14638-
configtbl=findTableByOid(atooid(extconfigarray[j]));
14636+
configtbl=findTableByOid(configtbloid);
1463914637
if (configtbl==NULL)
1464014638
continue;
1464114639

1464214640
/*
14643-
* Note: config tables are dumped without OIDs regardless of
14644-
* the --oids setting.This is because row filtering
14645-
* conditions aren't compatible with dumping OIDs.
14641+
* Tables of not-to-be-dumped extensions shouldn't be dumped
14642+
* unless the table or its schema is explicitly included
1464614643
*/
14647-
makeTableDataInfo(configtbl, false);
14648-
if (configtbl->dataObj!=NULL)
14644+
if (!curext->dobj.dump)
1464914645
{
14650-
if (strlen(extconditionarray[j])>0)
14651-
configtbl->dataObj->filtercond=pg_strdup(extconditionarray[j]);
14646+
/* check table explicitly requested */
14647+
if (table_include_oids.head!=NULL&&
14648+
simple_oid_list_member(&table_include_oids,
14649+
configtbloid))
14650+
dumpobj= true;
14651+
14652+
/* check table's schema explicitly requested */
14653+
if (configtbl->dobj.namespace->dobj.dump)
14654+
dumpobj= true;
14655+
}
14656+
14657+
/* check table excluded by an exclusion switch */
14658+
if (table_exclude_oids.head!=NULL&&
14659+
simple_oid_list_member(&table_exclude_oids,
14660+
configtbloid))
14661+
dumpobj= false;
14662+
14663+
/* check schema excluded by an exclusion switch */
14664+
if (simple_oid_list_member(&schema_exclude_oids,
14665+
configtbl->dobj.namespace->dobj.catId.oid))
14666+
dumpobj= false;
14667+
14668+
if (dumpobj)
14669+
{
14670+
/*
14671+
* Note: config tables are dumped without OIDs regardless of
14672+
* the --oids setting.This is because row filtering
14673+
* conditions aren't compatible with dumping OIDs.
14674+
*/
14675+
makeTableDataInfo(configtbl, false);
14676+
if (configtbl->dataObj!=NULL)
14677+
{
14678+
if (strlen(extconditionarray[j])>0)
14679+
configtbl->dataObj->filtercond=pg_strdup(extconditionarray[j]);
14680+
}
1465214681
}
1465314682
}
1465414683
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp