Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again)
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again) |
Дата | |
Msg-id | 199905041655.MAA28855@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [HACKERS] pg_dump bug (was Re: [SQL] Slow Inserts Again) (Thomas Lockhart <lockhart@alumni.caltech.edu>) |
Список | 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 по дате отправления: