Hi,

I know 7.0.x is pretty old, but I'm wondering if we should fix this to make it better for people upgrading.

If you create a table like this in 7.0.x:

CREATE TABLE address (
    first_name character varying(50) DEFAULT 'asdf' NOT NULL,
    last_name character varying(50) NOT NULL,
    address character varying(50),
    tesing character varying[]
);

The 7.5 pg_dump program will dump it like this:

CREATE TABLE address (
    first_name character varying(50) DEFAULT 'asdf' NOT NULL,
    last_name character varying(50) NOT NULL,
    address character varying(50),
    tesing _varchar
);

I have attached a patch that should fix it. I haven't been able to actually test it since my dev machine and the 7.0 machine I have access to aren't connected - although it does compile. The fix is based on the 7.0 psql code.

Chris
? src/bin/pg_dump/.deps
? src/bin/pg_dump/common.c.working
? src/bin/pg_dump/pg_dump
? src/bin/pg_dump/pg_dump.c.working
? src/bin/pg_dump/pg_dump.h.working
? src/bin/pg_dump/pg_dumpall
? src/bin/pg_dump/pg_restore
Index: src/bin/pg_dump/pg_dump.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_dump/pg_dump.c,v
retrieving revision 1.370
diff -c -r1.370 pg_dump.c
*** src/bin/pg_dump/pg_dump.c   24 Mar 2004 03:06:08 -0000      1.370
--- src/bin/pg_dump/pg_dump.c   16 May 2004 14:42:55 -0000
***************
*** 7726,7733 ****
--- 7726,7741 ----
  myFormatType(const char *typname, int32 typmod)
  {
        char       *result;
+       bool    isarray = false;
        PQExpBuffer buf = createPQExpBuffer();
  
+       /* Handle array types */
+       if (typname[0] == '_')
+       {
+               isarray = true;
+               typname++;
+       }
+ 
        /* Show lengths on bpchar and varchar */
        if (!strcmp(typname, "bpchar"))
        {
***************
*** 7770,7775 ****
--- 7778,7787 ----
                appendPQExpBuffer(buf, "\"char\"");
        else
                appendPQExpBuffer(buf, "%s", fmtId(typname));
+ 
+       /* Append array qualifier for array types */
+       if (isarray)
+               appendPQExpBuffer(buf, "[]");
  
        result = strdup(buf->data);
        destroyPQExpBuffer(buf);
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to