COPY allows parameters which corrupt output
COPY allows DELIMITER and NULL to be specified which don't allow the data
to be copied back in properly. Using any delimiter that could be part of
a backslash escape sequence (\n \0 \t) will break if any of the data has a
character matching the delimiter because it will be escaped and then be
read as a special character.
It also allows DELIMITER and NULL to overlap. No character in the NULL
specification should be the DELIMITER.
Kris Jurka
Attachments:
copytest.sqltext/plain; charset=US-ASCII; name=copytest.sqlDownload
Kris Jurka wrote:
COPY allows DELIMITER and NULL to be specified which don't allow the data
to be copied back in properly. Using any delimiter that could be part of
a backslash escape sequence (\n \0 \t) will break if any of the data has a
character matching the delimiter because it will be escaped and then be
read as a special character.It also allows DELIMITER and NULL to overlap. No character in the NULL
specification should be the DELIMITER.
The attached applied patch throws an error if the delimiter appears in
the COPY NULL string:
test=> copy pg_language to '/tmp/x' with delimiter '|';
COPY
test=> copy pg_language to '/tmp/x' with delimiter '|' null '|x';
ERROR: COPY delimiter must not appear in the NULL specification
test=> copy pg_language from '/tmp/x' with delimiter '|' null '|x';
ERROR: COPY delimiter must not appear in the NULL specification
It also throws an error if it conflicts with the default NULL string:
test=> copy pg_language to '/tmp/x' with delimiter '\\';
ERROR: COPY delimiter must not appear in the NULL specification
test=> copy pg_language to '/tmp/x' with delimiter '\\' NULL 'x';
COPY
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073