Обсуждение: fix pg_dump to dump sequences created by SERIAL datatype
As it stands in 6.4.2 pg_dump does not dump sequences created by the
SERIAL datatype when the -t tablename option is used. The following
patch fixes that (with a couple of cosmetic cleanups) so that whenever
the -t option is used, the appropriate *_id_seq sequence is also
dumped if it exists.
The second patch just fixes a bunch of cosmetic details concerning
alignment and changes nothing substantive in the code.
Cheers,
Brook
===========================================================================
--- bin/pg_dump/pg_dump.c.orig Wed Jan 13 09:37:40 1999
+++ bin/pg_dump/pg_dump.c Wed Jan 13 10:08:35 1999
@@ -2593,17 +2592,26 @@ int i, j, k;
- char q[MAXQUERYLEN];
- char **parentRels; /* list of names of parent relations */
+ char q[MAXQUERYLEN];
+ char *serialSeq = NULL; /* implicit sequence name created by SERIAL datatype */
+ const char *serialSeqSuffix = "_id_seq"; /* suffix for implicit SERIAL sequences */
+ char **parentRels; /* list of names of parent relations */ int numParents;
- int actual_atts; /* number of attrs in this CREATE statment */
+ int actual_atts; /* number of attrs in this CREATE statment */ /* First - dump SEQUENCEs
*/
+ if (tablename)
+ {
+ serialSeq = malloc (strlen (tablename) + strlen (serialSeqSuffix) + 1);
+ strcpy (serialSeq, tablename);
+ strcat (serialSeq, serialSeqSuffix);
+ } for (i = 0; i < numTables; i++) { if (!(tblinfo[i].sequence)) continue;
- if (!tablename || (!strcmp(tblinfo[i].relname, tablename)))
+ if (!tablename || (!strcmp(tblinfo[i].relname, tablename))
+ || (serialSeq && !strcmp(tblinfo[i].relname,serialSeq))) { becomeUser(fout,
tblinfo[i].usename); dumpSequence(fout, tblinfo[i]);
@@ -2611,6 +2619,8 @@ dumpACL(fout, tblinfo[i]); } }
+ if (tablename)
+ free (serialSeq); for (i = 0; i < numTables; i++) {
===========================================================================
--- bin/pg_dump/pg_dump.c.orig Wed Jan 13 09:37:40 1999
+++ bin/pg_dump/pg_dump.c Wed Jan 13 10:08:35 1999
@@ -56,7 +56,7 @@#include <stdio.h>#include <string.h>#include <ctype.h>
-#include <sys/param.h> /* for MAXHOSTNAMELEN on most */
+#include <sys/param.h> /* for MAXHOSTNAMELEN on most */#ifdef solaris_sparc#include <netdb.h>
/* for MAXHOSTNAMELEN on some */#endif
@@ -96,25 +96,25 @@static char *GetPrivileges(const char *s);static void becomeUser(FILE *fout, const char *username);
-extern char *optarg;
+extern char *optarg;extern int optind,
- opterr;
+ opterr;/* global decls */bool g_verbose; /* User wants verbose narration of our
- * activities. */
-int g_last_builtin_oid; /* value of the last builtin oid */
-FILE *g_fout; /* the script file */
-PGconn *g_conn; /* the database connection */
-
-bool force_quotes; /* User wants to suppress double-quotes */
-int dumpData; /* dump data using proper insert strings */
-int attrNames; /* put attr names into insert strings */
-int schemaOnly;
-int dataOnly;
-int aclsOption;
+ * activities. */
+int g_last_builtin_oid; /* value of the last builtin oid */
+FILE *g_fout; /* the script file */
+PGconn *g_conn; /* the database connection */
+
+bool force_quotes; /* User wants to suppress double-quotes */
+int dumpData; /* dump data using proper insert strings */
+int attrNames; /* put attr names into insert strings */
+int schemaOnly;
+int dataOnly;
+int aclsOption;
-char g_opaque_type[10]; /* name for the opaque type */
+char g_opaque_type[10]; /* name for the opaque type *//* placeholders for the delimiters for comments
*/char g_comment_start[10];
@@ -179,8 +179,8 @@static boolisViewRule(char *relname){
- PGresult *res;
- int ntups;
+ PGresult *res;
+ int ntups; char query[MAXQUERYLEN]; res = PQexec(g_conn, "begin");
@@ -315,13 +315,13 @@ const TableInfo tblinfo, bool oids){
- PGresult *res;
+ PGresult *res; char query[255];
- int actual_atts; /* number of attrs in this a table */
+ int actual_atts; /* number of attrs in this a table */ char expandbuf[COPYBUFSIZ]; char
q[MAXQUERYLEN];
- int tuple;
- int field;
+ int tuple;
+ int field; sprintf(query, "SELECT * FROM %s", fmtId(classname, force_quotes)); res = PQexec(g_conn,
query);
@@ -421,7 +421,7 @@{ int i;
- char *all_only;
+ char *all_only; if (onlytable == NULL) all_only = "all";
@@ -482,12 +482,11 @@prompt_for_password(char *username, char *password){ char buf[512];
- int length;
+ int length;#ifdef HAVE_TERMIOS_H
- struct termios t_orig,
- t;
-
+ struct termios t_orig,
+ t;#endif printf("Username: ");
@@ -535,21 +534,21 @@intmain(int argc, char **argv){
- int c;
- const char *progname;
- const char *filename = NULL;
- const char *dbname = NULL;
- const char *pghost = NULL;
- const char *pgport = NULL;
- char *tablename = NULL;
- int oids = 0;
- TableInfo *tblinfo;
- int numTables;
+ int c;
+ const char *progname;
+ const char *filename = NULL;
+ const char *dbname = NULL;
+ const char *pghost = NULL;
+ const char *pgport = NULL;
+ char *tablename = NULL;
+ int oids = 0;
+ TableInfo *tblinfo;
+ int numTables; char connect_string[512] = ""; char tmp_string[128]; char
username[100]; char password[100];
- int use_password = 0;
+ int use_password = 0; g_verbose = false; force_quotes = true;
@@ -727,11 +726,11 @@TypeInfo *getTypes(int *numTypes){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
- TypeInfo *tinfo;
+ char query[MAXQUERYLEN];
+ TypeInfo *tinfo; int i_oid; int i_typowner;
@@ -856,12 +855,12 @@OprInfo *getOperators(int *numOprs){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
+ char query[MAXQUERYLEN];
- OprInfo *oprinfo;
+ OprInfo *oprinfo; int i_oid; int i_oprname;
@@ -1199,11 +1198,11 @@AggInfo *getAggregates(int *numAggs){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
- AggInfo *agginfo;
+ char query[MAXQUERYLEN];
+ AggInfo *agginfo; int i_oid; int i_aggname;
@@ -1293,11 +1292,11 @@FuncInfo *getFuncs(int *numFuncs){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
- FuncInfo *finfo;
+ char query[MAXQUERYLEN];
+ FuncInfo *finfo; int i_oid; int i_proname;
@@ -1393,11 +1392,11 @@TableInfo *getTables(int *numTables, FuncInfo *finfo, int numFuncs){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
- TableInfo *tblinfo;
+ char query[MAXQUERYLEN];
+ TableInfo *tblinfo; int i_oid; int i_relname;
@@ -1726,11 +1725,11 @@InhInfo *getInherits(int *numInherits){
- PGresult *res;
+ PGresult *res; int ntups; int i;
- char query[MAXQUERYLEN];
- InhInfo *inhinfo;
+ char query[MAXQUERYLEN];
+ InhInfo *inhinfo; int i_inhrel; int i_inhparent;
@@ -1791,13 +1790,13 @@{ int i, j;
- char q[MAXQUERYLEN];
+ char q[MAXQUERYLEN]; int i_attname; int i_typname; int
i_atttypmod; int i_attnotnull; int i_atthasdef;
- PGresult *res;
+ PGresult *res; int ntups; for (i = 0; i < numTables; i++)
@@ -1902,10 +1901,10 @@getIndices(int *numIndices){ int i;
- char query[MAXQUERYLEN];
- PGresult *res;
+ char query[MAXQUERYLEN];
+ PGresult *res; int ntups;
- IndInfo *indinfo;
+ IndInfo *indinfo; int i_indexrelname; int i_indrelname;
@@ -1994,7 +1993,7 @@ TypeInfo *tinfo, int numTypes){ int i;
- char q[MAXQUERYLEN];
+ char q[MAXQUERYLEN]; int funcInd; for (i = 0; i < numTypes; i++)
@@ -2167,7 +2166,7 @@ TypeInfo *tinfo, int numTypes){ char q[MAXQUERYLEN];
- int j;
+ int j; char *func_def; char func_lang[NAMEDATALEN + 1];
@@ -2268,7 +2267,7 @@dumpOprs(FILE *fout, OprInfo *oprinfo, int numOperators, TypeInfo *tinfo, int numTypes){
- int i;
+ int i; char q[MAXQUERYLEN]; char leftarg[MAXQUERYLEN]; char
rightarg[MAXQUERYLEN];
@@ -2375,14 +2374,14 @@dumpAggs(FILE *fout, AggInfo *agginfo, int numAggs, TypeInfo *tinfo, int numTypes){
- int i;
+ int i; char q[MAXQUERYLEN]; char sfunc1[MAXQUERYLEN]; char
sfunc2[MAXQUERYLEN]; char basetype[MAXQUERYLEN]; char finalfunc[MAXQUERYLEN]; char
comma1[2],
- comma2[2];
+ comma2[2]; for (i = 0; i < numAggs; i++) {
@@ -2514,9 +2513,9 @@{ const char *acls = tbinfo.relacl; char *aclbuf,
- *tok,
- *eqpos,
- *priv;
+ *tok,
+ *eqpos,
+ *priv; if (strlen(acls) == 0) return; /* table has default permissions */
@@ -2726,15 +2736,15 @@ int i, k; int tableInd;
- char attlist[1000];
- char *classname[INDEX_MAX_KEYS];
- char *funcname; /* the name of the function to comput the
- * index key from */
+ char attlist[1000];
+ char *classname[INDEX_MAX_KEYS];
+ char *funcname; /* the name of the function to comput the
+ * index key from */ int indkey, indclass; int
nclass;
- char q[MAXQUERYLEN],
+ char q[MAXQUERYLEN], id1[MAXQUERYLEN], id2[MAXQUERYLEN]; PGresult
*res;
@@ -2887,7 +2897,7 @@ k; int m, n;
- char **outVals = NULL; /* values to copy out */
+ char **outVals = NULL; /* values to copy out */ n = PQntuples(res); m = PQnfields(res);
@@ -2940,7 +2950,7 @@static voidsetMaxOid(FILE *fout){
- PGresult *res;
+ PGresult *res; Oid max_oid; res = PQexec(g_conn, "CREATE TABLE pgdump_oid (dummy int4)");
@@ -2993,7 +3003,7 @@static intfindLastBuiltinOid(void){
- PGresult *res;
+ PGresult *res; int ntups; int last_oid;
@@ -3025,9 +3035,9 @@static char *checkForQuote(const char *s){
- char *r;
+ char *r; char c;
- char *result;
+ char *result; int j = 0;
@@ -3056,16 +3066,16 @@static voiddumpSequence(FILE *fout, TableInfo tbinfo){
- PGresult *res;
- int4 last,
+ PGresult *res;
+ int4 last, incby, maxv, minv, cache;
- char cycled,
+ char cycled, called,
- *t;
- char query[MAXQUERYLEN];
+ *t;
+ char query[MAXQUERYLEN]; sprintf(query, "SELECT sequence_name, last_value, increment_by,
max_value,"
Applied.
> As it stands in 6.4.2 pg_dump does not dump sequences created by the
> SERIAL datatype when the -t tablename option is used. The following
> patch fixes that (with a couple of cosmetic cleanups) so that whenever
> the -t option is used, the appropriate *_id_seq sequence is also
> dumped if it exists.
>
> The second patch just fixes a bunch of cosmetic details concerning
> alignment and changes nothing substantive in the code.
>
> Cheers,
> Brook
>
> ===========================================================================
>
> --- bin/pg_dump/pg_dump.c.orig Wed Jan 13 09:37:40 1999
> +++ bin/pg_dump/pg_dump.c Wed Jan 13 10:08:35 1999
> @@ -2593,17 +2592,26 @@
> int i,
> j,
> k;
> - char q[MAXQUERYLEN];
> - char **parentRels; /* list of names of parent relations */
> + char q[MAXQUERYLEN];
> + char *serialSeq = NULL; /* implicit sequence name created by SERIAL datatype */
> + const char *serialSeqSuffix = "_id_seq"; /* suffix for implicit SERIAL sequences */
> + char **parentRels; /* list of names of parent relations */
> int numParents;
> - int actual_atts; /* number of attrs in this CREATE statment */
> + int actual_atts; /* number of attrs in this CREATE statment */
>
> /* First - dump SEQUENCEs */
> + if (tablename)
> + {
> + serialSeq = malloc (strlen (tablename) + strlen (serialSeqSuffix) + 1);
> + strcpy (serialSeq, tablename);
> + strcat (serialSeq, serialSeqSuffix);
> + }
> for (i = 0; i < numTables; i++)
> {
> if (!(tblinfo[i].sequence))
> continue;
> - if (!tablename || (!strcmp(tblinfo[i].relname, tablename)))
> + if (!tablename || (!strcmp(tblinfo[i].relname, tablename))
> + || (serialSeq && !strcmp(tblinfo[i].relname,serialSeq)))
> {
> becomeUser(fout, tblinfo[i].usename);
> dumpSequence(fout, tblinfo[i]);
> @@ -2611,6 +2619,8 @@
> dumpACL(fout, tblinfo[i]);
> }
> }
> + if (tablename)
> + free (serialSeq);
>
> for (i = 0; i < numTables; i++)
> {
>
> ===========================================================================
>
> --- bin/pg_dump/pg_dump.c.orig Wed Jan 13 09:37:40 1999
> +++ bin/pg_dump/pg_dump.c Wed Jan 13 10:08:35 1999
> @@ -56,7 +56,7 @@
> #include <stdio.h>
> #include <string.h>
> #include <ctype.h>
> -#include <sys/param.h> /* for MAXHOSTNAMELEN on most */
> +#include <sys/param.h> /* for MAXHOSTNAMELEN on most */
> #ifdef solaris_sparc
> #include <netdb.h> /* for MAXHOSTNAMELEN on some */
> #endif
> @@ -96,25 +96,25 @@
> static char *GetPrivileges(const char *s);
> static void becomeUser(FILE *fout, const char *username);
>
> -extern char *optarg;
> +extern char *optarg;
> extern int optind,
> - opterr;
> + opterr;
>
> /* global decls */
> bool g_verbose; /* User wants verbose narration of our
> - * activities. */
> -int g_last_builtin_oid; /* value of the last builtin oid */
> -FILE *g_fout; /* the script file */
> -PGconn *g_conn; /* the database connection */
> -
> -bool force_quotes; /* User wants to suppress double-quotes */
> -int dumpData; /* dump data using proper insert strings */
> -int attrNames; /* put attr names into insert strings */
> -int schemaOnly;
> -int dataOnly;
> -int aclsOption;
> + * activities. */
> +int g_last_builtin_oid; /* value of the last builtin oid */
> +FILE *g_fout; /* the script file */
> +PGconn *g_conn; /* the database connection */
> +
> +bool force_quotes; /* User wants to suppress double-quotes */
> +int dumpData; /* dump data using proper insert strings */
> +int attrNames; /* put attr names into insert strings */
> +int schemaOnly;
> +int dataOnly;
> +int aclsOption;
>
> -char g_opaque_type[10]; /* name for the opaque type */
> +char g_opaque_type[10]; /* name for the opaque type */
>
> /* placeholders for the delimiters for comments */
> char g_comment_start[10];
> @@ -179,8 +179,8 @@
> static bool
> isViewRule(char *relname)
> {
> - PGresult *res;
> - int ntups;
> + PGresult *res;
> + int ntups;
> char query[MAXQUERYLEN];
>
> res = PQexec(g_conn, "begin");
> @@ -315,13 +315,13 @@
> const TableInfo tblinfo, bool oids)
> {
>
> - PGresult *res;
> + PGresult *res;
> char query[255];
> - int actual_atts; /* number of attrs in this a table */
> + int actual_atts; /* number of attrs in this a table */
> char expandbuf[COPYBUFSIZ];
> char q[MAXQUERYLEN];
> - int tuple;
> - int field;
> + int tuple;
> + int field;
>
> sprintf(query, "SELECT * FROM %s", fmtId(classname, force_quotes));
> res = PQexec(g_conn, query);
> @@ -421,7 +421,7 @@
> {
>
> int i;
> - char *all_only;
> + char *all_only;
>
> if (onlytable == NULL)
> all_only = "all";
> @@ -482,12 +482,11 @@
> prompt_for_password(char *username, char *password)
> {
> char buf[512];
> - int length;
> + int length;
>
> #ifdef HAVE_TERMIOS_H
> - struct termios t_orig,
> - t;
> -
> + struct termios t_orig,
> + t;
> #endif
>
> printf("Username: ");
> @@ -535,21 +534,21 @@
> int
> main(int argc, char **argv)
> {
> - int c;
> - const char *progname;
> - const char *filename = NULL;
> - const char *dbname = NULL;
> - const char *pghost = NULL;
> - const char *pgport = NULL;
> - char *tablename = NULL;
> - int oids = 0;
> - TableInfo *tblinfo;
> - int numTables;
> + int c;
> + const char *progname;
> + const char *filename = NULL;
> + const char *dbname = NULL;
> + const char *pghost = NULL;
> + const char *pgport = NULL;
> + char *tablename = NULL;
> + int oids = 0;
> + TableInfo *tblinfo;
> + int numTables;
> char connect_string[512] = "";
> char tmp_string[128];
> char username[100];
> char password[100];
> - int use_password = 0;
> + int use_password = 0;
>
> g_verbose = false;
> force_quotes = true;
> @@ -727,11 +726,11 @@
> TypeInfo *
> getTypes(int *numTypes)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> - TypeInfo *tinfo;
> + char query[MAXQUERYLEN];
> + TypeInfo *tinfo;
>
> int i_oid;
> int i_typowner;
> @@ -856,12 +855,12 @@
> OprInfo *
> getOperators(int *numOprs)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> + char query[MAXQUERYLEN];
>
> - OprInfo *oprinfo;
> + OprInfo *oprinfo;
>
> int i_oid;
> int i_oprname;
> @@ -1199,11 +1198,11 @@
> AggInfo *
> getAggregates(int *numAggs)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> - AggInfo *agginfo;
> + char query[MAXQUERYLEN];
> + AggInfo *agginfo;
>
> int i_oid;
> int i_aggname;
> @@ -1293,11 +1292,11 @@
> FuncInfo *
> getFuncs(int *numFuncs)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> - FuncInfo *finfo;
> + char query[MAXQUERYLEN];
> + FuncInfo *finfo;
>
> int i_oid;
> int i_proname;
> @@ -1393,11 +1392,11 @@
> TableInfo *
> getTables(int *numTables, FuncInfo *finfo, int numFuncs)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> - TableInfo *tblinfo;
> + char query[MAXQUERYLEN];
> + TableInfo *tblinfo;
>
> int i_oid;
> int i_relname;
> @@ -1726,11 +1725,11 @@
> InhInfo *
> getInherits(int *numInherits)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int i;
> - char query[MAXQUERYLEN];
> - InhInfo *inhinfo;
> + char query[MAXQUERYLEN];
> + InhInfo *inhinfo;
>
> int i_inhrel;
> int i_inhparent;
> @@ -1791,13 +1790,13 @@
> {
> int i,
> j;
> - char q[MAXQUERYLEN];
> + char q[MAXQUERYLEN];
> int i_attname;
> int i_typname;
> int i_atttypmod;
> int i_attnotnull;
> int i_atthasdef;
> - PGresult *res;
> + PGresult *res;
> int ntups;
>
> for (i = 0; i < numTables; i++)
> @@ -1902,10 +1901,10 @@
> getIndices(int *numIndices)
> {
> int i;
> - char query[MAXQUERYLEN];
> - PGresult *res;
> + char query[MAXQUERYLEN];
> + PGresult *res;
> int ntups;
> - IndInfo *indinfo;
> + IndInfo *indinfo;
>
> int i_indexrelname;
> int i_indrelname;
> @@ -1994,7 +1993,7 @@
> TypeInfo *tinfo, int numTypes)
> {
> int i;
> - char q[MAXQUERYLEN];
> + char q[MAXQUERYLEN];
> int funcInd;
>
> for (i = 0; i < numTypes; i++)
> @@ -2167,7 +2166,7 @@
> TypeInfo *tinfo, int numTypes)
> {
> char q[MAXQUERYLEN];
> - int j;
> + int j;
> char *func_def;
> char func_lang[NAMEDATALEN + 1];
>
> @@ -2268,7 +2267,7 @@
> dumpOprs(FILE *fout, OprInfo *oprinfo, int numOperators,
> TypeInfo *tinfo, int numTypes)
> {
> - int i;
> + int i;
> char q[MAXQUERYLEN];
> char leftarg[MAXQUERYLEN];
> char rightarg[MAXQUERYLEN];
> @@ -2375,14 +2374,14 @@
> dumpAggs(FILE *fout, AggInfo *agginfo, int numAggs,
> TypeInfo *tinfo, int numTypes)
> {
> - int i;
> + int i;
> char q[MAXQUERYLEN];
> char sfunc1[MAXQUERYLEN];
> char sfunc2[MAXQUERYLEN];
> char basetype[MAXQUERYLEN];
> char finalfunc[MAXQUERYLEN];
> char comma1[2],
> - comma2[2];
> + comma2[2];
>
> for (i = 0; i < numAggs; i++)
> {
> @@ -2514,9 +2513,9 @@
> {
> const char *acls = tbinfo.relacl;
> char *aclbuf,
> - *tok,
> - *eqpos,
> - *priv;
> + *tok,
> + *eqpos,
> + *priv;
>
> if (strlen(acls) == 0)
> return; /* table has default permissions */
> @@ -2726,15 +2736,15 @@
> int i,
> k;
> int tableInd;
> - char attlist[1000];
> - char *classname[INDEX_MAX_KEYS];
> - char *funcname; /* the name of the function to comput the
> - * index key from */
> + char attlist[1000];
> + char *classname[INDEX_MAX_KEYS];
> + char *funcname; /* the name of the function to comput the
> + * index key from */
> int indkey,
> indclass;
> int nclass;
>
> - char q[MAXQUERYLEN],
> + char q[MAXQUERYLEN],
> id1[MAXQUERYLEN],
> id2[MAXQUERYLEN];
> PGresult *res;
> @@ -2887,7 +2897,7 @@
> k;
> int m,
> n;
> - char **outVals = NULL; /* values to copy out */
> + char **outVals = NULL; /* values to copy out */
>
> n = PQntuples(res);
> m = PQnfields(res);
> @@ -2940,7 +2950,7 @@
> static void
> setMaxOid(FILE *fout)
> {
> - PGresult *res;
> + PGresult *res;
> Oid max_oid;
>
> res = PQexec(g_conn, "CREATE TABLE pgdump_oid (dummy int4)");
> @@ -2993,7 +3003,7 @@
> static int
> findLastBuiltinOid(void)
> {
> - PGresult *res;
> + PGresult *res;
> int ntups;
> int last_oid;
>
> @@ -3025,9 +3035,9 @@
> static char *
> checkForQuote(const char *s)
> {
> - char *r;
> + char *r;
> char c;
> - char *result;
> + char *result;
>
> int j = 0;
>
> @@ -3056,16 +3066,16 @@
> static void
> dumpSequence(FILE *fout, TableInfo tbinfo)
> {
> - PGresult *res;
> - int4 last,
> + PGresult *res;
> + int4 last,
> incby,
> maxv,
> minv,
> cache;
> - char cycled,
> + char cycled,
> called,
> - *t;
> - char query[MAXQUERYLEN];
> + *t;
> + char query[MAXQUERYLEN];
>
> sprintf(query,
> "SELECT sequence_name, last_value, increment_by, max_value, "
>
>
-- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026