> ... 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 */