Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a7d417c

Browse files
committed
Fix problems with pg_dump for iheritance, sequences, archive tables.
1 parent b6d9835 commit a7d417c

File tree

3 files changed

+109
-101
lines changed

3 files changed

+109
-101
lines changed

src/backend/catalog/pg_operator.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.8 1996/12/26 17:46:07 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.9 1997/07/23 17:14:34 momjian Exp $
1111
*
1212
* NOTES
1313
* these routines moved here from commands/define.c and somewhat cleaned up.
@@ -237,7 +237,7 @@ OperatorShellMakeWithOpenRelation(Relation pg_operator_desc,
237237
*/
238238
i = 0;
239239
values[i++] = PointerGetDatum(operatorName);
240-
values[i++] = ObjectIdGetDatum(InvalidOid);
240+
values[i++] = Int32GetDatum(GetUserId());
241241
values[i++] = (Datum) (uint16) 0;
242242

243243
values[i++] = (Datum)'b'; /* fill oprkind with a bogus value */

src/bin/pg_dump/pg_dump.c

+106-97
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*
2222
*
2323
* IDENTIFICATION
24-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.33 1997/06/20 02:20:17 momjian Exp $
24+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.34 1997/07/23 17:14:59 momjian Exp $
2525
*
2626
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2727
*
@@ -738,137 +738,146 @@ getOperators(int *numOprs)
738738
void
739739
clearTypeInfo(TypeInfo *tp, int numTypes)
740740
{
741-
int i;
742-
for(i=0;i<numTypes;++i) {
743-
if(tp[i].oid) free(tp[i].oid);
744-
if(tp[i].typowner) free(tp[i].typowner);
745-
if(tp[i].typname) free(tp[i].typname);
746-
if(tp[i].typlen) free(tp[i].typlen);
747-
if(tp[i].typprtlen) free(tp[i].typprtlen);
748-
if(tp[i].typinput) free(tp[i].typinput);
749-
if(tp[i].typoutput) free(tp[i].typoutput);
750-
if(tp[i].typreceive) free(tp[i].typreceive);
751-
if(tp[i].typsend) free(tp[i].typsend);
752-
if(tp[i].typelem) free(tp[i].typelem);
753-
if(tp[i].typdelim) free(tp[i].typdelim);
754-
if(tp[i].typdefault) free(tp[i].typdefault);
755-
if(tp[i].typrelid) free(tp[i].typrelid);
756-
if(tp[i].usename) free(tp[i].usename);
757-
}
758-
free(tp);
741+
int i;
742+
for(i=0;i<numTypes;++i) {
743+
if(tp[i].oid) free(tp[i].oid);
744+
if(tp[i].typowner) free(tp[i].typowner);
745+
if(tp[i].typname) free(tp[i].typname);
746+
if(tp[i].typlen) free(tp[i].typlen);
747+
if(tp[i].typprtlen) free(tp[i].typprtlen);
748+
if(tp[i].typinput) free(tp[i].typinput);
749+
if(tp[i].typoutput) free(tp[i].typoutput);
750+
if(tp[i].typreceive) free(tp[i].typreceive);
751+
if(tp[i].typsend) free(tp[i].typsend);
752+
if(tp[i].typelem) free(tp[i].typelem);
753+
if(tp[i].typdelim) free(tp[i].typdelim);
754+
if(tp[i].typdefault) free(tp[i].typdefault);
755+
if(tp[i].typrelid) free(tp[i].typrelid);
756+
if(tp[i].usename) free(tp[i].usename);
757+
}
758+
free(tp);
759759
}
760760

761761
void
762762
clearFuncInfo (FuncInfo *fun, int numFuncs)
763763
{
764-
int i,a;
765-
if(!fun) return;
766-
for(i=0;i<numFuncs;++i) {
767-
if(fun[i].oid) free(fun[i].oid);
768-
if(fun[i].proname) free(fun[i].proname);
769-
if(fun[i].usename) free(fun[i].usename);
770-
for(a=0;a<8;++a)
771-
if(fun[i].argtypes[a]) free(fun[i].argtypes[a]);
772-
if(fun[i].prorettype) free(fun[i].prorettype);
773-
if(fun[i].prosrc) free(fun[i].prosrc);
774-
if(fun[i].probin) free(fun[i].probin);
775-
}
776-
free(fun);
764+
int i,a;
765+
if(!fun) return;
766+
for(i=0;i<numFuncs;++i) {
767+
if(fun[i].oid) free(fun[i].oid);
768+
if(fun[i].proname) free(fun[i].proname);
769+
if(fun[i].usename) free(fun[i].usename);
770+
for(a=0;a<8;++a)
771+
if(fun[i].argtypes[a]) free(fun[i].argtypes[a]);
772+
if(fun[i].prorettype) free(fun[i].prorettype);
773+
if(fun[i].prosrc) free(fun[i].prosrc);
774+
if(fun[i].probin) free(fun[i].probin);
775+
}
776+
free(fun);
777777
}
778778

779779
void
780780
clearTableInfo(TableInfo *tblinfo, int numTables)
781781
{
782-
int i,j;
783-
for(i=0;i<numTables;++i) {
782+
int i,j;
783+
for(i=0;i<numTables;++i) {
784+
785+
/* skip archive tables */
786+
if (isArchiveName(tblinfo[i].relname))
787+
continue;
788+
789+
if ( tblinfo[i].sequence )
790+
continue;
791+
784792
if(tblinfo[i].oid) free (tblinfo[i].oid);
785793
if(tblinfo[i].relname) free (tblinfo[i].relname);
786794
if(tblinfo[i].relarch) free (tblinfo[i].relarch);
787795
if(tblinfo[i].relacl) free (tblinfo[i].relacl);
788-
for (j=0;j<tblinfo[i].numatts;j++) {
796+
for(j=0;j<tblinfo[i].numatts;j++) {
789797
if(tblinfo[i].attnames[j]) free (tblinfo[i].attnames[j]);
790798
if(tblinfo[i].typnames[j]) free (tblinfo[i].typnames[j]);
791-
}
792-
if(tblinfo[i].attlen) free((int *)tblinfo[i].attlen);
793-
if(tblinfo[i].inhAttrs) free((int *)tblinfo[i].inhAttrs);
794-
if(tblinfo[i].attnames) free (tblinfo[i].attnames);
795-
if(tblinfo[i].typnames) free (tblinfo[i].typnames);
796-
if(tblinfo[i].usename) free (tblinfo[i].usename);
797-
}
798-
free(tblinfo);
799+
}
800+
if(tblinfo[i].attlen) free((int *)tblinfo[i].attlen);
801+
if(tblinfo[i].inhAttrs) free((int *)tblinfo[i].inhAttrs);
802+
if(tblinfo[i].attnames) free (tblinfo[i].attnames);
803+
if(tblinfo[i].typnames) free (tblinfo[i].typnames);
804+
if(tblinfo[i].usename) free (tblinfo[i].usename);
805+
}
806+
free(tblinfo);
799807
}
800808

801809
void
802810
clearInhInfo (InhInfo *inh, int numInherits) {
803-
int i;
804-
if(!inh) return;
805-
for(i=0;i<numInherits;++i) {
806-
if(inh[i].oid) free(inh[i].oid);
807-
if(inh[i].inhrel) free(inh[i].inhrel);
808-
if(inh[i].inhparent) free(inh[i].inhparent);}
809-
free(inh);
811+
int i;
812+
if(!inh) return;
813+
for(i=0;i<numInherits;++i) {
814+
if(inh[i].inhrel) free(inh[i].inhrel);
815+
if(inh[i].inhparent) free(inh[i].inhparent);
816+
}
817+
free(inh);
810818
}
811819

812820
void
813821
clearOprInfo(OprInfo *opr, int numOprs){
814-
int i;
815-
if(!opr) return;
816-
for(i=0;i<numOprs;++i) {
817-
if(opr[i].oid) free(opr[i].oid);
818-
if(opr[i].oprname) free(opr[i].oprname);
819-
if(opr[i].oprkind) free(opr[i].oprkind);
820-
if(opr[i].oprcode) free(opr[i].oprcode);
821-
if(opr[i].oprleft) free(opr[i].oprleft);
822-
if(opr[i].oprright) free(opr[i].oprright);
823-
if(opr[i].oprcom) free(opr[i].oprcom);
824-
if(opr[i].oprnegate) free(opr[i].oprnegate);
825-
if(opr[i].oprrest) free(opr[i].oprrest);
826-
if(opr[i].oprjoin) free(opr[i].oprjoin);
827-
if(opr[i].oprcanhash) free(opr[i].oprcanhash);
828-
if(opr[i].oprlsortop) free(opr[i].oprlsortop);
829-
if(opr[i].oprrsortop) free(opr[i].oprrsortop);
830-
if(opr[i].usename) free(opr[i].usename);
831-
}
832-
free(opr);
822+
int i;
823+
if(!opr) return;
824+
for(i=0;i<numOprs;++i) {
825+
if(opr[i].oid) free(opr[i].oid);
826+
if(opr[i].oprname) free(opr[i].oprname);
827+
if(opr[i].oprkind) free(opr[i].oprkind);
828+
if(opr[i].oprcode) free(opr[i].oprcode);
829+
if(opr[i].oprleft) free(opr[i].oprleft);
830+
if(opr[i].oprright) free(opr[i].oprright);
831+
if(opr[i].oprcom) free(opr[i].oprcom);
832+
if(opr[i].oprnegate) free(opr[i].oprnegate);
833+
if(opr[i].oprrest) free(opr[i].oprrest);
834+
if(opr[i].oprjoin) free(opr[i].oprjoin);
835+
if(opr[i].oprcanhash) free(opr[i].oprcanhash);
836+
if(opr[i].oprlsortop) free(opr[i].oprlsortop);
837+
if(opr[i].oprrsortop) free(opr[i].oprrsortop);
838+
if(opr[i].usename) free(opr[i].usename);
839+
}
840+
free(opr);
833841
}
834842

835843
void
836844
clearIndInfo(IndInfo *ind, int numIndices)
837845
{
838-
int i,a;
839-
if(!ind) return;
840-
for(i=0;i<numIndices;++i) {
841-
if(ind[i].indexrelname) free(ind[i].indexrelname);
842-
if(ind[i].indrelname) free(ind[i].indrelname);
843-
if(ind[i].indamname) free(ind[i].indamname);
844-
if(ind[i].indproc) free(ind[i].indproc);
845-
if(ind[i].indisunique) free(ind[i].indisunique);
846-
for(a=0;a<INDEX_MAX_KEYS;++a) {
847-
if(ind[i].indkey[a]) free(ind[i].indkey[a]);
848-
if(ind[i].indclass[a]) free(ind[i].indclass[a]);}
846+
int i,a;
847+
if(!ind) return;
848+
for(i=0;i<numIndices;++i) {
849+
if(ind[i].indexrelname) free(ind[i].indexrelname);
850+
if(ind[i].indrelname) free(ind[i].indrelname);
851+
if(ind[i].indamname) free(ind[i].indamname);
852+
if(ind[i].indproc) free(ind[i].indproc);
853+
if(ind[i].indisunique) free(ind[i].indisunique);
854+
for(a=0;a<INDEX_MAX_KEYS;++a) {
855+
if(ind[i].indkey[a]) free(ind[i].indkey[a]);
856+
if(ind[i].indclass[a]) free(ind[i].indclass[a]);
857+
}
849858
}
850-
free(ind);
859+
free(ind);
851860
}
852861

853862
void
854863
clearAggInfo(AggInfo *agginfo, int numArgs)
855864
{
856-
int i;
857-
if(!agginfo) return;
858-
for(i=0;i<numArgs;++i) {
859-
if(agginfo[i].oid) free (agginfo[i].oid);
860-
if(agginfo[i].aggname) free (agginfo[i].aggname);
861-
if(agginfo[i].aggtransfn1) free (agginfo[i].aggtransfn1);
862-
if(agginfo[i].aggtransfn2) free (agginfo[i].aggtransfn2);
863-
if(agginfo[i].aggfinalfn) free (agginfo[i].aggfinalfn);
864-
if(agginfo[i].aggtranstype1) free (agginfo[i].aggtranstype1);
865-
if(agginfo[i].aggbasetype) free (agginfo[i].aggbasetype);
866-
if(agginfo[i].aggtranstype2) free (agginfo[i].aggtranstype2);
867-
if(agginfo[i].agginitval1) free (agginfo[i].agginitval1);
868-
if(agginfo[i].agginitval2) free (agginfo[i].agginitval2);
869-
if(agginfo[i].usename) free (agginfo[i].usename);
870-
}
871-
free (agginfo);
865+
int i;
866+
if(!agginfo) return;
867+
for(i=0;i<numArgs;++i) {
868+
if(agginfo[i].oid) free (agginfo[i].oid);
869+
if(agginfo[i].aggname) free (agginfo[i].aggname);
870+
if(agginfo[i].aggtransfn1) free (agginfo[i].aggtransfn1);
871+
if(agginfo[i].aggtransfn2) free (agginfo[i].aggtransfn2);
872+
if(agginfo[i].aggfinalfn) free (agginfo[i].aggfinalfn);
873+
if(agginfo[i].aggtranstype1) free (agginfo[i].aggtranstype1);
874+
if(agginfo[i].aggbasetype) free (agginfo[i].aggbasetype);
875+
if(agginfo[i].aggtranstype2) free (agginfo[i].aggtranstype2);
876+
if(agginfo[i].agginitval1) free (agginfo[i].agginitval1);
877+
if(agginfo[i].agginitval2) free (agginfo[i].agginitval2);
878+
if(agginfo[i].usename) free (agginfo[i].usename);
879+
}
880+
free (agginfo);
872881
}
873882

874883
/*

src/bin/pg_dump/pg_dump.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*
66
* Copyright (c) 1994, Regents of the University of California
77
*
8-
* $Id: pg_dump.h,v 1.16 1997/06/21 16:08:15 momjian Exp $
8+
* $Id: pg_dump.h,v 1.17 1997/07/23 17:15:13 momjian Exp $
99
*
1010
* Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
1111
*
@@ -85,7 +85,6 @@ typedef struct _tableInfo {
8585
} TableInfo;
8686

8787
typedef struct _inhInfo {
88-
char *oid;
8988
char *inhrel;
9089
char *inhparent;
9190
} InhInfo;

0 commit comments

Comments
 (0)