From: | Bruce Momjian <bruce(at)momjian(dot)us> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Stuart Bishop <stuart(at)stuartbishop(dot)net>, Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>, Teodor Sigaev <teodor(at)sigaev(dot)ru>, PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: [BUGS] Nasty tsvector can make dumps unrestorable |
Date: | 2007-11-10 03:19:44 |
Message-ID: | 200711100319.lAA3Ji219846@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
Tom Lane wrote:
> Stuart Bishop <stuart(at)stuartbishop(dot)net> writes:
> > The attached script creates a tsvector with a value that can be dumped using
> > pg_dump, but not loaded again using pg_restore. This causes restores of a
> > dump containing this value to fail.
>
> Hmm, sorta looks like tsvectorout should be doubling backslashes?
I think the larger question is why tsvectorin() requires
double-backslashes? It seems it is for marking of single-quotes in
phrases, from what I can tell from the code and regression test usage:
SELECT E'''1 \\''2'' 3'::tsvector;
tsvector
-------------
'3' '1 ''2'
(1 row)
My guess is that the '' is used to start/stop phrases, and \\'' puts a
literal '' in the phrase.
I have developed the attached patch which doubles backslashes on output:
test=> INSERT INTO Foo(bar) VALUES (E'\\\\x');
INSERT 0 1
test=> select * from foo;
bar
-------
'\\x'
(1 row)
However, I am still unclear if the dump code is correct because I don't
see the backslash preserved in \\'' cases, just \\\\ cases:
test=> CREATE TABLE Foo(bar tsvector);
CREATE
test=> INSERT INTO Foo(bar) VALUES (E'\\''x');
INSERT 0 1
test=> select * from foo;
bar
-------
'''x'
(1 row)
and pg_dump outputs:
COPY foo (bar) FROM stdin;
'''x'
\.
While the COPY will load into the table, this doesn't:
test=> INSERT INTO Foo(bar) VALUES (E'''''x');
ERROR: syntax error in tsvector: "''x"
I am confused.
--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://postgres.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Attachment | Content-Type | Size |
---|---|---|
/pgpatches/ts_backslash | text/x-diff | 567 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2007-11-10 03:53:18 | Re: [BUGS] Nasty tsvector can make dumps unrestorable |
Previous Message | Ben Leslie | 2007-11-10 02:43:23 | Re: BUG #3735: Can't create xml-stylesheet processing instruction |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2007-11-10 03:53:18 | Re: [BUGS] Nasty tsvector can make dumps unrestorable |
Previous Message | Tom Lane | 2007-11-10 01:53:03 | Re: Need for advice and direction (again) |