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

Commita51d560

Browse files
committed
Don't dump CHECK constraints with same source and names both
starting with '$'.
1 parent1d9819d commita51d560

File tree

2 files changed

+30
-61
lines changed

2 files changed

+30
-61
lines changed

‎src/bin/pg_dump/pg_backup_archiver.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
*
1919
* IDENTIFICATION
20-
*$Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.29 2001/04/03 08:52:59 pjw Exp $
20+
*$Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.30 2001/04/04 06:47:30 pjw Exp $
2121
*
2222
* Modifications - 28-Jun-2000 - pjw@rhyme.com.au
2323
*-Initial version.
@@ -68,7 +68,7 @@ typedef z_stream *z_streamp;
6868

6969
#defineK_VERS_MAJOR 1
7070
#defineK_VERS_MINOR 5
71-
#defineK_VERS_REV1
71+
#defineK_VERS_REV2
7272

7373
/* Data block types */
7474
#defineBLK_DATA 1

‎src/bin/pg_dump/pg_dump.c

Lines changed: 28 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
*
2424
* IDENTIFICATION
25-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.199 2001/04/03 08:52:59 pjw Exp $
25+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.200 2001/04/04 06:47:30 pjw Exp $
2626
*
2727
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828
*
@@ -122,6 +122,11 @@
122122
*OID of the type functions, but type must be created after
123123
*the functions.
124124
*
125+
* Modifications - 4-Apr-2001 - pjw@rhyme.com.au
126+
*
127+
* - Don't dump CHECK constraints with same source and names both
128+
*starting with '$'.
129+
*
125130
*-------------------------------------------------------------------------
126131
*/
127132

@@ -2068,59 +2073,15 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
20682073
else
20692074
tblinfo[i].viewdef=NULL;
20702075

2071-
/*
2076+
/*
2077+
* Get non-inherited CHECK constraints, if any.
2078+
*
20722079
* Exclude inherited CHECKs from CHECK constraints total. If a
20732080
* constraint matches by name and condition with a constraint
2074-
* belonging to a parent class, we assume it was inherited.
2081+
* belonging to a parent class (OR conditions match and both
2082+
* names start with '$', we assume it was inherited.
20752083
*/
20762084
if (tblinfo[i].ncheck>0)
2077-
{
2078-
PGresult*res2;
2079-
intntups2;
2080-
2081-
if (g_verbose)
2082-
fprintf(stderr,"%s excluding inherited CHECK constraints "
2083-
"for relation: '%s' %s\n",
2084-
g_comment_start,
2085-
tblinfo[i].relname,
2086-
g_comment_end);
2087-
2088-
/*
2089-
* XXXX: Use LOJ maybe - need to compare with subsequent query
2090-
* for non-inherited
2091-
*/
2092-
resetPQExpBuffer(query);
2093-
appendPQExpBuffer(query,"SELECT rcname from pg_relcheck, pg_inherits as i "
2094-
"where rcrelid = '%s'::oid "
2095-
" and rcrelid = i.inhrelid"
2096-
" and exists "
2097-
" (select * from pg_relcheck as c "
2098-
" where c.rcname = pg_relcheck.rcname "
2099-
" and c.rcsrc = pg_relcheck.rcsrc "
2100-
" and c.rcrelid = i.inhparent) ",
2101-
tblinfo[i].oid);
2102-
res2=PQexec(g_conn,query->data);
2103-
if (!res2||
2104-
PQresultStatus(res2)!=PGRES_TUPLES_OK)
2105-
{
2106-
fprintf(stderr,"getTables(): SELECT (for inherited CHECK) failed. "
2107-
"Explanation from backend: '%s'.\n",PQerrorMessage(g_conn));
2108-
exit_nicely(g_conn);
2109-
}
2110-
ntups2=PQntuples(res2);
2111-
tblinfo[i].ncheck-=ntups2;
2112-
if (tblinfo[i].ncheck<0)
2113-
{
2114-
fprintf(stderr,"getTables(): found more inherited CHECKs than total for "
2115-
"relation %s\n",
2116-
tblinfo[i].relname);
2117-
exit_nicely(g_conn);
2118-
}
2119-
PQclear(res2);
2120-
}
2121-
2122-
/* Get non-inherited CHECK constraints, if any */
2123-
if (tblinfo[i].ncheck>0)
21242085
{
21252086
PGresult*res2;
21262087
inti_rcname,
@@ -2136,13 +2097,16 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
21362097

21372098
resetPQExpBuffer(query);
21382099
appendPQExpBuffer(query,"SELECT rcname, rcsrc from pg_relcheck "
2139-
"where rcrelid = '%s'::oid "
2100+
"where rcrelid = '%s'::oid "
21402101
" and not exists "
2141-
" (select * from pg_relcheck as c, pg_inherits as i "
2142-
" where i.inhrelid = pg_relcheck.rcrelid "
2143-
" and c.rcname = pg_relcheck.rcname "
2144-
" and c.rcsrc = pg_relcheck.rcsrc "
2145-
" and c.rcrelid = i.inhparent) "
2102+
" (select * from pg_relcheck as c, pg_inherits as i "
2103+
" where i.inhrelid = pg_relcheck.rcrelid "
2104+
" and (c.rcname = pg_relcheck.rcname "
2105+
" or ( c.rcname[0] = '$' "
2106+
" and pg_relcheck.rcname[0] = '$')"
2107+
" )"
2108+
" and c.rcsrc = pg_relcheck.rcsrc "
2109+
" and c.rcrelid = i.inhparent) "
21462110
" Order By oid ",
21472111
tblinfo[i].oid);
21482112
res2=PQexec(g_conn,query->data);
@@ -2154,12 +2118,17 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
21542118
exit_nicely(g_conn);
21552119
}
21562120
ntups2=PQntuples(res2);
2157-
if (ntups2!=tblinfo[i].ncheck)
2121+
if (ntups2>tblinfo[i].ncheck)
21582122
{
2159-
fprintf(stderr,"getTables(): relation '%s': %d CHECKs were expected, but got %d\n",
2123+
fprintf(stderr,"getTables(): relation '%s': a maximum of %d CHECKs "
2124+
"were expected, but got %d\n",
21602125
tblinfo[i].relname,tblinfo[i].ncheck,ntups2);
21612126
exit_nicely(g_conn);
21622127
}
2128+
2129+
/* Set ncheck to the number of *non-inherited* CHECK constraints */
2130+
tblinfo[i].ncheck=ntups2;
2131+
21632132
i_rcname=PQfnumber(res2,"rcname");
21642133
i_rcsrc=PQfnumber(res2,"rcsrc");
21652134
tblinfo[i].check_expr= (char**)malloc(ntups2*sizeof(char*));
@@ -3897,7 +3866,7 @@ dumpTables(Archive *fout, TableInfo *tblinfo, int numTables,
38973866

38983867
if (numParents>0)
38993868
{
3900-
appendPQExpBuffer(q,"\ninherits (");
3869+
appendPQExpBuffer(q,"\nINHERITS (");
39013870
for (k=0;k<numParents;k++)
39023871
{
39033872
appendPQExpBuffer(q,"%s%s",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp