Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again) - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again)
Date
Msg-id 199905041655.MAA28855@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again)  (Thomas Lockhart <lockhart@alumni.caltech.edu>)
List pgsql-hackers
Apply, please.  It is a bug fix.

> > ... pg_dump seems to have problems with mixed case tablenames. There
> > doesn't seem to be a way to send a quoted tablename into pg_dump as the
> > value for a -t option, in 6.4.2 (example below). Can someone try this on
> > 6.5beta? I know some issues with quoting output of pg_dump (i.e. COPY)
> > was addressed, I'm wondering if input parsing got touched.
> 
> pg_dump explicitly converts all table names to lowercase. I've got a
> patch which looks for a table name which starts with a double quote,
> and suppresses the case conversion if so:
> 
> [postgres@golem pg_dump]$ pg_dump -t '"MixedCase"' postgres
> CREATE TABLE "MixedCase" (
>         "i" int4);
> COPY "MixedCase" FROM stdin;
> 1
> 2
> \.
> 
> Patch enclosed for you to try. Bruce, any reason not to apply this to
> the tree?
> 
>                       - Tom
> 
> -- 
> Thomas Lockhart                lockhart@alumni.caltech.edu
> South Pasadena, California

> *** pg_dump.c.orig    Thu Apr 15 05:08:53 1999
> --- pg_dump.c    Tue May  4 13:47:01 1999
> ***************
> *** 606,615 ****
>                       int            i;
>   
>                       tablename = strdup(optarg);
> !                     for (i = 0; tablename[i]; i++)
> !                         if (isascii((unsigned char) tablename[i]) &&
> !                             isupper(tablename[i]))
> !                             tablename[i] = tolower(tablename[i]);
>                   }
>                   break;
>               case 'v':            /* verbose */
> --- 606,626 ----
>                       int            i;
>   
>                       tablename = strdup(optarg);
> !                     /* quoted string? Then strip quotes and preserve case... */
> !                     if (tablename[0] == '"')
> !                     {
> !                         strcpy(tablename, &tablename[1]);
> !                         if (*(tablename+strlen(tablename)-1) == '"')
> !                             *(tablename+strlen(tablename)-1) = '\0';
> !                     }
> !                     /* otherwise, convert table name to lowercase... */
> !                     else
> !                     {
> !                         for (i = 0; tablename[i]; i++)
> !                             if (isascii((unsigned char) tablename[i]) &&
> !                                 isupper(tablename[i]))
> !                                 tablename[i] = tolower(tablename[i]);
> !                     }
>                   }
>                   break;
>               case 'v':            /* verbose */


--  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
 


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] varchar-array.patch applied
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] an older problem? hash table out of memory