Index: contrib/tsearch2/expected/tsearch2.out =================================================================== RCS file: /cvsroot/pgsql/contrib/tsearch2/expected/tsearch2.out,v retrieving revision 1.11 diff -c -c -r1.11 tsearch2.out *** contrib/tsearch2/expected/tsearch2.out 14 Sep 2004 03:58:54 -0000 1.11 --- contrib/tsearch2/expected/tsearch2.out 16 Jun 2005 01:36:54 -0000 *************** *** 47,83 **** '1' '2' (1 row) ! SELECT '\'1 2\''::tsvector; tsvector ---------- '1 2' (1 row) ! SELECT '\'1 \\\'2\''::tsvector; tsvector ---------- '1 \'2' (1 row) ! SELECT '\'1 \\\'2\'3'::tsvector; tsvector ------------- '3' '1 \'2' (1 row) ! SELECT '\'1 \\\'2\' 3'::tsvector; tsvector ------------- '3' '1 \'2' (1 row) ! SELECT '\'1 \\\'2\' \' 3\' 4 '::tsvector; tsvector ------------------ '4' ' 3' '1 \'2' (1 row) ! select '\'w\':4A,3B,2C,1D,5 a:8'; ?column? ----------------------- 'w':4A,3B,2C,1D,5 a:8 --- 47,83 ---- '1' '2' (1 row) ! SELECT '''1 2'''::tsvector; tsvector ---------- '1 2' (1 row) ! SELECT E'''1 \\''2'''::tsvector; tsvector ---------- '1 \'2' (1 row) ! SELECT E'''1 \\''2''3'::tsvector; tsvector ------------- '3' '1 \'2' (1 row) ! SELECT E'''1 \\''2'' 3'::tsvector; tsvector ------------- '3' '1 \'2' (1 row) ! SELECT E'''1 \\''2'' '' 3'' 4 '::tsvector; tsvector ------------------ '4' ' 3' '1 \'2' (1 row) ! select '''w'':4A,3B,2C,1D,5 a:8'; ?column? ----------------------- 'w':4A,3B,2C,1D,5 a:8 *************** *** 126,138 **** '1' (1 row) ! SELECT '\'1 2\''::tsquery; tsquery --------- '1 2' (1 row) ! SELECT '\'1 \\\'2\''::tsquery; tsquery --------- '1 \'2' --- 126,138 ---- '1' (1 row) ! SELECT '''1 2'''::tsquery; tsquery --------- '1 2' (1 row) ! SELECT E'''1 \\''2'''::tsquery; tsquery --------- '1 \'2' *************** *** 330,342 **** '1' & '2' & '4' & ( '5' | !'6' ) (1 row) ! SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::tsquery; tsquery ------------------------------------------ '1' & '2' & ' 4' & ( '|5' | '6 \' !|&' ) (1 row) ! SELECT '\'the wether\':dc & \' sKies \':BC & a:d b:a'; ?column? ------------------------------------------ 'the wether':dc & ' sKies ':BC & a:d b:a --- 330,342 ---- '1' & '2' & '4' & ( '5' | !'6' ) (1 row) ! SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery; tsquery ------------------------------------------ '1' & '2' & ' 4' & ( '|5' | '6 \' !|&' ) (1 row) ! SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a'; ?column? ------------------------------------------ 'the wether':dc & ' sKies ':BC & a:d b:a *************** *** 382,388 **** 23 | entity | HTML Entity (23 rows) ! select * from parse('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); tokid | token --- 382,388 ---- 23 | entity | HTML Entity (23 rows) ! select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); tokid | token *************** *** 529,535 **** 1 | qwerty (138 rows) ! SELECT to_tsvector('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); to_tsvector --- 529,535 ---- 1 | qwerty (138 rows) ! SELECT to_tsvector('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); to_tsvector *************** *** 543,549 **** 2 (1 row) ! SELECT length(to_tsvector('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty')); length --- 543,549 ---- 2 (1 row) ! SELECT length(to_tsvector('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty')); length *************** *** 563,569 **** 'qwe' & 'skies' (1 row) ! select to_tsquery('default', '\'the wether\':dc & \' sKies \':BC '); to_tsquery ------------------------ 'wether':CD & 'sky':BC --- 563,569 ---- 'qwe' & 'skies' (1 row) ! select to_tsquery('default', '''the wether'':dc & '' sKies '':BC '); to_tsquery ------------------------ 'wether':CD & 'sky':BC *************** *** 729,735 **** (1 row) drop trigger tsvectorupdate on test_tsvector; ! create function wow(text) returns text as 'select $1 || \' copyright\'; ' language sql; create trigger tsvectorupdate before update or insert on test_tsvector for each row execute procedure tsearch2(a, wow, t); insert into test_tsvector (t) values ('345 qwerty'); --- 729,735 ---- (1 row) drop trigger tsvectorupdate on test_tsvector; ! create function wow(text) returns text as 'select $1 || '' copyright''; ' language sql; create trigger tsvectorupdate before update or insert on test_tsvector for each row execute procedure tsearch2(a, wow, t); insert into test_tsvector (t) values ('345 qwerty'); Index: contrib/tsearch2/sql/tsearch2.sql =================================================================== RCS file: /cvsroot/pgsql/contrib/tsearch2/sql/tsearch2.sql,v retrieving revision 1.7 diff -c -c -r1.7 tsearch2.sql *** contrib/tsearch2/sql/tsearch2.sql 28 Jun 2004 16:18:56 -0000 1.7 --- contrib/tsearch2/sql/tsearch2.sql 16 Jun 2005 01:36:54 -0000 *************** *** 12,23 **** SELECT ' 1'::tsvector; SELECT ' 1 '::tsvector; SELECT '1 2'::tsvector; ! SELECT '\'1 2\''::tsvector; ! SELECT '\'1 \\\'2\''::tsvector; ! SELECT '\'1 \\\'2\'3'::tsvector; ! SELECT '\'1 \\\'2\' 3'::tsvector; ! SELECT '\'1 \\\'2\' \' 3\' 4 '::tsvector; ! select '\'w\':4A,3B,2C,1D,5 a:8'; select 'a:3A b:2a'::tsvector || 'ba:1234 a:1B'; select setweight('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd zxc:81,567,222A'::tsvector, 'c'); select strip('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd'::tsvector); --- 12,23 ---- SELECT ' 1'::tsvector; SELECT ' 1 '::tsvector; SELECT '1 2'::tsvector; ! SELECT '''1 2'''::tsvector; ! SELECT E'''1 \\''2'''::tsvector; ! SELECT E'''1 \\''2''3'::tsvector; ! SELECT E'''1 \\''2'' 3'::tsvector; ! SELECT E'''1 \\''2'' '' 3'' 4 '::tsvector; ! select '''w'':4A,3B,2C,1D,5 a:8'; select 'a:3A b:2a'::tsvector || 'ba:1234 a:1B'; select setweight('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd zxc:81,567,222A'::tsvector, 'c'); select strip('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd'::tsvector); *************** *** 28,35 **** SELECT '1 '::tsquery; SELECT ' 1'::tsquery; SELECT ' 1 '::tsquery; ! SELECT '\'1 2\''::tsquery; ! SELECT '\'1 \\\'2\''::tsquery; SELECT '!1'::tsquery; SELECT '1|2'::tsquery; SELECT '1|!2'::tsquery; --- 28,35 ---- SELECT '1 '::tsquery; SELECT ' 1'::tsquery; SELECT ' 1 '::tsquery; ! SELECT '''1 2'''::tsquery; ! SELECT E'''1 \\''2'''::tsquery; SELECT '!1'::tsquery; SELECT '1|2'::tsquery; SELECT '1|!2'::tsquery; *************** *** 62,92 **** SELECT '1&2&4&5&6'::tsquery; SELECT '1&(2&(4&(5|6)))'::tsquery; SELECT '1&(2&(4&(5|!6)))'::tsquery; ! SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::tsquery; ! SELECT '\'the wether\':dc & \' sKies \':BC & a:d b:a'; select lexize('simple', 'ASD56 hsdkf'); select lexize('en_stem', 'SKIES Problems identity'); select * from token_type('default'); ! select * from parse('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); ! SELECT to_tsvector('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); SELECT length(to_tsvector('default', '345 qw')); ! SELECT length(to_tsvector('default', '345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty')); select to_tsquery('default', 'qwe & sKies '); select to_tsquery('simple', 'qwe & sKies '); ! select to_tsquery('default', '\'the wether\':dc & \' sKies \':BC '); select to_tsquery('default', 'asd&(and|fghj)'); select to_tsquery('default', '(asd&and)|fghj'); select to_tsquery('default', '(asd&!and)|fghj'); --- 62,92 ---- SELECT '1&2&4&5&6'::tsquery; SELECT '1&(2&(4&(5|6)))'::tsquery; SELECT '1&(2&(4&(5|!6)))'::tsquery; ! SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery; ! SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a'; select lexize('simple', 'ASD56 hsdkf'); select lexize('en_stem', 'SKIES Problems identity'); select * from token_type('default'); ! select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); ! SELECT to_tsvector('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); SELECT length(to_tsvector('default', '345 qw')); ! SELECT length(to_tsvector('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty')); select to_tsquery('default', 'qwe & sKies '); select to_tsquery('simple', 'qwe & sKies '); ! select to_tsquery('default', '''the wether'':dc & '' sKies '':BC '); select to_tsquery('default', 'asd&(and|fghj)'); select to_tsquery('default', '(asd&and)|fghj'); select to_tsquery('default', '(asd&!and)|fghj'); *************** *** 135,141 **** SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); drop trigger tsvectorupdate on test_tsvector; ! create function wow(text) returns text as 'select $1 || \' copyright\'; ' language sql; create trigger tsvectorupdate before update or insert on test_tsvector for each row execute procedure tsearch2(a, wow, t); insert into test_tsvector (t) values ('345 qwerty'); --- 135,141 ---- SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); drop trigger tsvectorupdate on test_tsvector; ! create function wow(text) returns text as 'select $1 || '' copyright''; ' language sql; create trigger tsvectorupdate before update or insert on test_tsvector for each row execute procedure tsearch2(a, wow, t); insert into test_tsvector (t) values ('345 qwerty'); Index: src/backend/parser/scan.l =================================================================== RCS file: /cvsroot/pgsql/src/backend/parser/scan.l,v retrieving revision 1.125 diff -c -c -r1.125 scan.l *** src/backend/parser/scan.l 15 Jun 2005 16:28:06 -0000 1.125 --- src/backend/parser/scan.l 16 Jun 2005 01:36:55 -0000 *************** *** 49,54 **** --- 49,55 ---- static int xcdepth = 0; /* depth of nesting in slash-star comments */ static char *dolqstart; /* current $foo$ quote start string */ + static bool warn_on_escape; /* * literalbuf is used to accumulate literal values when multiple rules *************** *** 64,69 **** --- 65,71 ---- static void addlit(char *ytext, int yleng); static void addlitchar(unsigned char ychar); static char *litbufdup(void); + static void check_escape_warning(void); /* * When we parse a token that requires multiple lexer rules to process, *************** *** 185,190 **** --- 187,196 ---- /* National character */ xnstart [nN]{quote} + /* Quote string does not warn about escapes */ + xestart [eE]{quote} + xeinside [^']* + /* Extended quote * xqdouble implements embedded quote, '''' */ *************** *** 410,415 **** --- 416,428 ---- } {xqstart} { + warn_on_escape = true; + token_start = yytext; + BEGIN(xq); + startlit(); + } + {xestart} { + warn_on_escape = false; token_start = yytext; BEGIN(xq); startlit(); *************** *** 428,441 **** --- 441,468 ---- addlit(yytext, yyleng); } {xqescape} { + if (yytext[1] == '\'') + { + if (warn_on_escape) + ereport(WARNING, + (errcode(ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER), + errmsg("Invalid use of \' in a normal string"), + errhint("Use '' to place quotes in strings, or use E-type strings."))); + } + else + check_escape_warning(); addlitchar(unescape_single_char(yytext[1])); } {xqoctesc} { unsigned char c = strtoul(yytext+1, NULL, 8); + + check_escape_warning(); addlitchar(c); } {xqhexesc} { unsigned char c = strtoul(yytext+2, NULL, 16); + + check_escape_warning(); addlitchar(c); } {quotecontinue} { *************** *** 810,812 **** --- 837,850 ---- return c; } } + + static void + check_escape_warning(void) + { + if (warn_on_escape) + ereport(WARNING, + (errcode(ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER), + errmsg("Invalid use of escapes in a normal string"), + errhint("Use E-type strings for escapes, e.g. E'\\r\\n'."))); + warn_on_escape = false; /* warn only once per string */ + } Index: src/bin/initdb/initdb.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/initdb/initdb.c,v retrieving revision 1.83 diff -c -c -r1.83 initdb.c *** src/bin/initdb/initdb.c 30 Apr 2005 08:08:51 -0000 1.83 --- src/bin/initdb/initdb.c 16 Jun 2005 01:36:57 -0000 *************** *** 1688,1694 **** char **priv_lines; static char *privileges_setup[] = { "UPDATE pg_class " ! " SET relacl = '{\"=r/\\\\\"$POSTGRES_SUPERUSERNAME\\\\\"\"}' " " WHERE relkind IN ('r', 'v', 'S') AND relacl IS NULL;\n", "GRANT USAGE ON SCHEMA pg_catalog TO PUBLIC;\n", "GRANT CREATE, USAGE ON SCHEMA public TO PUBLIC;\n", --- 1688,1694 ---- char **priv_lines; static char *privileges_setup[] = { "UPDATE pg_class " ! " SET relacl = E'{\"=r/\\\\\"$POSTGRES_SUPERUSERNAME\\\\\"\"}' " " WHERE relkind IN ('r', 'v', 'S') AND relacl IS NULL;\n", "GRANT USAGE ON SCHEMA pg_catalog TO PUBLIC;\n", "GRANT CREATE, USAGE ON SCHEMA public TO PUBLIC;\n", *************** *** 1952,1959 **** for (i = 0, j = 0; i < len; i++) { ! if (src[i] == '\'' || src[i] == '\\') result[j++] = '\\'; result[j++] = src[i]; } result[j] = '\0'; --- 1952,1961 ---- for (i = 0, j = 0; i < len; i++) { ! if (src[i] == '\\') result[j++] = '\\'; + if (src[i] == '\'') /* ANSI standard, '' */ + result[j++] = '\''; result[j++] = src[i]; } result[j] = '\0'; Index: src/bin/pg_dump/pg_dumpall.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v retrieving revision 1.59 diff -c -c -r1.59 pg_dumpall.c *** src/bin/pg_dump/pg_dumpall.c 18 Apr 2005 23:47:52 -0000 1.59 --- src/bin/pg_dump/pg_dumpall.c 16 Jun 2005 01:36:57 -0000 *************** *** 538,544 **** "pg_catalog.pg_get_userbyid(spcowner) AS spcowner, " "spclocation, spcacl " "FROM pg_catalog.pg_tablespace " ! "WHERE spcname NOT LIKE 'pg\\_%'"); if (PQntuples(res) > 0) printf("--\n-- Tablespaces\n--\n\n"); --- 538,544 ---- "pg_catalog.pg_get_userbyid(spcowner) AS spcowner, " "spclocation, spcacl " "FROM pg_catalog.pg_tablespace " ! "WHERE spcname NOT LIKE E'pg\\_%'"); if (PQntuples(res) > 0) printf("--\n-- Tablespaces\n--\n\n"); Index: src/bin/psql/describe.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/psql/describe.c,v retrieving revision 1.117 diff -c -c -r1.117 describe.c *** src/bin/psql/describe.c 14 Jun 2005 23:59:31 -0000 1.117 --- src/bin/psql/describe.c 16 Jun 2005 01:36:58 -0000 *************** *** 1766,1772 **** appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_namespace n LEFT JOIN pg_catalog.pg_user u\n" " ON n.nspowner=u.usesysid\n" ! "WHERE (n.nspname NOT LIKE 'pg\\\\_temp\\\\_%%' OR\n" " n.nspname = (pg_catalog.current_schemas(true))[1])\n"); /* temp schema is first */ processNamePattern(&buf, pattern, true, false, --- 1766,1772 ---- appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_namespace n LEFT JOIN pg_catalog.pg_user u\n" " ON n.nspowner=u.usesysid\n" ! "WHERE (n.nspname NOT LIKE E'pg\\\\_temp\\\\_%%' OR\n" " n.nspname = (pg_catalog.current_schemas(true))[1])\n"); /* temp schema is first */ processNamePattern(&buf, pattern, true, false, Index: src/include/catalog/pg_proc.h =================================================================== RCS file: /cvsroot/pgsql/src/include/catalog/pg_proc.h,v retrieving revision 1.367 diff -c -c -r1.367 pg_proc.h *** src/include/catalog/pg_proc.h 14 Jun 2005 21:04:41 -0000 1.367 --- src/include/catalog/pg_proc.h 16 Jun 2005 01:37:03 -0000 *************** *** 1461,1467 **** DESCR("greater-than-or-equal"); DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 f f t f i 2 16 "1184 1184" _null_ _null_ _null_ timestamp_gt - _null_ )); DESCR("greater-than"); ! DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 14 f f t f i 1 1184 "701" _null_ _null_ _null_ "select (\'epoch\'::timestamptz + $1 * \'1 second\'::interval)" - _null_ )); DESCR("convert UNIX epoch to timestamptz"); DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 f f t f i 2 1114 "25 1184" _null_ _null_ _null_ timestamptz_zone - _null_ )); DESCR("adjust timestamp to new time zone"); --- 1461,1467 ---- DESCR("greater-than-or-equal"); DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 f f t f i 2 16 "1184 1184" _null_ _null_ _null_ timestamp_gt - _null_ )); DESCR("greater-than"); ! DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 14 f f t f i 1 1184 "701" _null_ _null_ _null_ "select (''epoch''::timestamptz + $1 * ''1 second''::interval)" - _null_ )); DESCR("convert UNIX epoch to timestamptz"); DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 f f t f i 2 1114 "25 1184" _null_ _null_ _null_ timestamptz_zone - _null_ )); DESCR("adjust timestamp to new time zone"); *************** *** 1541,1547 **** DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 f f t f s 2 25 "26 19" _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" - _null_ )); DESCR("get description for object id and catalog name"); ! DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 f f t f s 2 25 "26 23" _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = \'pg_catalog.pg_class\'::regclass and objsubid = $2" - _null_ )); DESCR("get description for table column"); DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 f f t f s 2 1184 "25 1184" _null_ _null_ _null_ timestamptz_trunc - _null_ )); --- 1541,1547 ---- DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 f f t f s 2 25 "26 19" _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" - _null_ )); DESCR("get description for object id and catalog name"); ! DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 f f t f s 2 25 "26 23" _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = ''pg_catalog.pg_class''::regclass and objsubid = $2" - _null_ )); DESCR("get description for table column"); DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 f f t f s 2 1184 "25 1184" _null_ _null_ _null_ timestamptz_trunc - _null_ )); *************** *** 2185,2193 **** DESCR("return portion of string"); DATA(insert OID = 878 ( translate PGNSP PGUID 12 f f t f i 3 25 "25 25 25" _null_ _null_ _null_ translate - _null_ )); DESCR("map a set of character appearing in string"); ! DATA(insert OID = 879 ( lpad PGNSP PGUID 14 f f t f i 2 25 "25 23" _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, \' \')" - _null_ )); DESCR("left-pad string to length"); ! DATA(insert OID = 880 ( rpad PGNSP PGUID 14 f f t f i 2 25 "25 23" _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, \' \')" - _null_ )); DESCR("right-pad string to length"); DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 f f t f i 1 25 "25" _null_ _null_ _null_ ltrim1 - _null_ )); DESCR("trim spaces from left end of string"); --- 2185,2193 ---- DESCR("return portion of string"); DATA(insert OID = 878 ( translate PGNSP PGUID 12 f f t f i 3 25 "25 25 25" _null_ _null_ _null_ translate - _null_ )); DESCR("map a set of character appearing in string"); ! DATA(insert OID = 879 ( lpad PGNSP PGUID 14 f f t f i 2 25 "25 23" _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, '' '')" - _null_ )); DESCR("left-pad string to length"); ! DATA(insert OID = 880 ( rpad PGNSP PGUID 14 f f t f i 2 25 "25 23" _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, '' '')" - _null_ )); DESCR("right-pad string to length"); DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 f f t f i 1 25 "25" _null_ _null_ _null_ ltrim1 - _null_ )); DESCR("trim spaces from left end of string"); Index: src/test/regress/expected/arrays.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/arrays.out,v retrieving revision 1.25 diff -c -c -r1.25 arrays.out *** src/test/regress/expected/arrays.out 22 Apr 2005 21:58:32 -0000 1.25 --- src/test/regress/expected/arrays.out 16 Jun 2005 01:37:04 -0000 *************** *** 436,442 **** ERROR: malformed array literal: "{{1,{2}},{2,3}}" select '{{},{}}'::text[]; ERROR: malformed array literal: "{{},{}}" ! select '{{1,2},\\{2,3}}'::text[]; ERROR: malformed array literal: "{{1,2},\{2,3}}" select '{{"1 2" x},{3}}'::text[]; ERROR: malformed array literal: "{{"1 2" x},{3}}" --- 436,442 ---- ERROR: malformed array literal: "{{1,{2}},{2,3}}" select '{{},{}}'::text[]; ERROR: malformed array literal: "{{},{}}" ! select E'{{1,2},\\{2,3}}'::text[]; ERROR: malformed array literal: "{{1,2},\{2,3}}" select '{{"1 2" x},{3}}'::text[]; ERROR: malformed array literal: "{{"1 2" x},{3}}" Index: src/test/regress/expected/copy2.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/copy2.out,v retrieving revision 1.21 diff -c -c -r1.21 copy2.out *** src/test/regress/expected/copy2.out 13 May 2005 06:33:40 -0000 1.21 --- src/test/regress/expected/copy2.out 16 Jun 2005 01:37:04 -0000 *************** *** 49,55 **** -- various COPY options: delimiters, oids, NULL string COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x'; COPY x from stdin WITH DELIMITER AS ';' NULL AS ''; ! COPY x from stdin WITH DELIMITER AS ':' NULL AS '\\X'; -- check results of copy in SELECT * FROM x; a | b | c | d | e --- 49,55 ---- -- various COPY options: delimiters, oids, NULL string COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x'; COPY x from stdin WITH DELIMITER AS ';' NULL AS ''; ! COPY x from stdin WITH DELIMITER AS ':' NULL AS E'\\X'; -- check results of copy in SELECT * FROM x; a | b | c | d | e *************** *** 176,183 **** col1 text, col2 text ); ! INSERT INTO y VALUES ('Jackson, Sam', '\\h'); ! INSERT INTO y VALUES ('It is "perfect".','\t'); INSERT INTO y VALUES ('', NULL); COPY y TO stdout WITH CSV; "Jackson, Sam",\h --- 176,183 ---- col1 text, col2 text ); ! INSERT INTO y VALUES ('Jackson, Sam', E'\\h'); ! INSERT INTO y VALUES ('It is "perfect".',E'\t'); INSERT INTO y VALUES ('', NULL); COPY y TO stdout WITH CSV; "Jackson, Sam",\h *************** *** 187,193 **** Jackson, Sam|\h It is "perfect".| ''| ! COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE '\\'; "Jackson, Sam","\\h" "It is \"perfect\"."," " "", --- 187,193 ---- Jackson, Sam|\h It is "perfect".| ''| ! COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE E'\\'; "Jackson, Sam","\\h" "It is \"perfect\"."," " "", Index: src/test/regress/expected/int8.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/int8.out,v retrieving revision 1.9 diff -c -c -r1.9 int8.out *** src/test/regress/expected/int8.out 4 Oct 2004 14:42:47 -0000 1.9 --- src/test/regress/expected/int8.out 16 Jun 2005 01:37:04 -0000 *************** *** 280,286 **** | -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0 (5 rows) ! SELECT '' AS to_char_16, to_char(q2, '99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; to_char_16 | to_char ------------+----------------------------------------------------------- | text 9999 "text between quote marks" 456 --- 280,286 ---- | -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0 (5 rows) ! SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; to_char_16 | to_char ------------+----------------------------------------------------------- | text 9999 "text between quote marks" 456 Index: src/test/regress/expected/numeric.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/numeric.out,v retrieving revision 1.16 diff -c -c -r1.16 numeric.out *** src/test/regress/expected/numeric.out 28 Oct 2004 18:55:07 -0000 1.16 --- src/test/regress/expected/numeric.out 16 Jun 2005 01:37:05 -0000 *************** *** 1072,1078 **** | -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2 (10 rows) ! SELECT '' AS to_char_20, to_char(val, '99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; to_char_20 | to_char ------------+----------------------------------------------------------- | text 9999 "text between quote marks" 0 --- 1072,1078 ---- | -2 4 9 2 6 8 0 4 . 0 4 5 0 4 7 4 2 (10 rows) ! SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; to_char_20 | to_char ------------+----------------------------------------------------------- | text 9999 "text between quote marks" 0 Index: src/test/regress/expected/rowtypes.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/rowtypes.out,v retrieving revision 1.2 diff -c -c -r1.2 rowtypes.out *** src/test/regress/expected/rowtypes.out 9 Jun 2004 19:08:20 -0000 1.2 --- src/test/regress/expected/rowtypes.out 16 Jun 2005 01:37:05 -0000 *************** *** 25,31 **** (Joe,"von Blow") | (Joe,d'Blow) (1 row) ! select '(Joe,"von""Blow")'::fullname, '(Joe,d\\\\Blow)'::fullname; fullname | fullname -------------------+----------------- (Joe,"von""Blow") | (Joe,"d\\Blow") --- 25,31 ---- (Joe,"von Blow") | (Joe,d'Blow) (1 row) ! select '(Joe,"von""Blow")'::fullname, E'(Joe,d\\\\Blow)'::fullname; fullname | fullname -------------------+----------------- (Joe,"von""Blow") | (Joe,"d\\Blow") Index: src/test/regress/expected/timestamp.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/timestamp.out,v retrieving revision 1.27 diff -c -c -r1.27 timestamp.out *** src/test/regress/expected/timestamp.out 3 Jun 2004 02:08:06 -0000 1.27 --- src/test/regress/expected/timestamp.out 16 Jun 2005 01:37:06 -0000 *************** *** 1044,1050 **** | 05 05 17 32 01 63121 (64 rows) ! SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; to_char_6 | to_char -----------+------------------------------------------------- --- 1044,1050 ---- | 05 05 17 32 01 63121 (64 rows) ! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; to_char_6 | to_char -----------+------------------------------------------------- *************** *** 1358,1364 **** (1 row) SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! 'HH "\\text between quote marks\\"" YY MI SS'); to_timestamp_6 | to_timestamp ----------------+------------------------------ | Thu Jan 01 15:54:45 1998 PST --- 1358,1364 ---- (1 row) SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! E'HH "\\text between quote marks\\"" YY MI SS'); to_timestamp_6 | to_timestamp ----------------+------------------------------ | Thu Jan 01 15:54:45 1998 PST Index: src/test/regress/expected/timestamptz.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/timestamptz.out,v retrieving revision 1.17 diff -c -c -r1.17 timestamptz.out *** src/test/regress/expected/timestamptz.out 11 Jul 2004 04:57:20 -0000 1.17 --- src/test/regress/expected/timestamptz.out 16 Jun 2005 01:37:07 -0000 *************** *** 1041,1047 **** | 05 05 17 32 01 63121 (64 rows) ! SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; to_char_6 | to_char -----------+------------------------------------------------- --- 1041,1047 ---- | 05 05 17 32 01 63121 (64 rows) ! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; to_char_6 | to_char -----------+------------------------------------------------- *************** *** 1427,1433 **** (1 row) SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! 'HH "\\text between quote marks\\"" YY MI SS'); to_timestamp_6 | to_timestamp ----------------+------------------------------ | Thu Jan 01 15:54:45 1998 PST --- 1427,1433 ---- (1 row) SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! E'HH "\\text between quote marks\\"" YY MI SS'); to_timestamp_6 | to_timestamp ----------------+------------------------------ | Thu Jan 01 15:54:45 1998 PST Index: src/test/regress/expected/type_sanity.out =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/expected/type_sanity.out,v retrieving revision 1.25 diff -c -c -r1.25 type_sanity.out *** src/test/regress/expected/type_sanity.out 30 Apr 2005 20:31:39 -0000 1.25 --- src/test/regress/expected/type_sanity.out 16 Jun 2005 01:37:07 -0000 *************** *** 59,65 **** -- NOTE: as of 8.0, this check finds smgr and unknown. SELECT p1.oid, p1.typname FROM pg_type as p1 ! WHERE p1.typtype in ('b') AND p1.typname NOT LIKE '\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as p2 WHERE p2.typname = ('_' || p1.typname)::name AND p2.typelem = p1.oid); --- 59,65 ---- -- NOTE: as of 8.0, this check finds smgr and unknown. SELECT p1.oid, p1.typname FROM pg_type as p1 ! WHERE p1.typtype in ('b') AND p1.typname NOT LIKE E'\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as p2 WHERE p2.typname = ('_' || p1.typname)::name AND p2.typelem = p1.oid); Index: src/test/regress/input/copy.source =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/input/copy.source,v retrieving revision 1.12 diff -c -c -r1.12 copy.source *** src/test/regress/input/copy.source 10 May 2005 00:16:07 -0000 1.12 --- src/test/regress/input/copy.source 16 Jun 2005 01:37:07 -0000 *************** *** 62,71 **** test text, filler int); ! insert into copytest values('DOS','abc\r\ndef',1); ! insert into copytest values('Unix','abc\ndef',2); ! insert into copytest values('Mac','abc\rdef',3); ! insert into copytest values('esc\\ape','a\\r\\\r\\\n\\nb',4); copy copytest to '@abs_builddir@/results/copytest.csv' csv; --- 62,71 ---- test text, filler int); ! insert into copytest values('DOS',E'abc\r\ndef',1); ! insert into copytest values('Unix',E'abc\ndef',2); ! insert into copytest values('Mac',E'abc\rdef',3); ! insert into copytest values(E'esc\\ape',E'a\\r\\\r\\\n\\nb',4); copy copytest to '@abs_builddir@/results/copytest.csv' csv; *************** *** 79,87 **** --- same test but with an escape char different from quote char ! copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; ! copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; select * from copytest except select * from copytest2; --- 79,87 ---- --- same test but with an escape char different from quote char ! copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '''' escape E'\\'; ! copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '''' escape E'\\'; select * from copytest except select * from copytest2; Index: src/test/regress/output/copy.source =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/output/copy.source,v retrieving revision 1.10 diff -c -c -r1.10 copy.source *** src/test/regress/output/copy.source 10 May 2005 00:16:07 -0000 1.10 --- src/test/regress/output/copy.source 16 Jun 2005 01:37:08 -0000 *************** *** 37,46 **** style text, test text, filler int); ! insert into copytest values('DOS','abc\r\ndef',1); ! insert into copytest values('Unix','abc\ndef',2); ! insert into copytest values('Mac','abc\rdef',3); ! insert into copytest values('esc\\ape','a\\r\\\r\\\n\\nb',4); copy copytest to '@abs_builddir@/results/copytest.csv' csv; create temp table copytest2 (like copytest); copy copytest2 from '@abs_builddir@/results/copytest.csv' csv; --- 37,46 ---- style text, test text, filler int); ! insert into copytest values('DOS',E'abc\r\ndef',1); ! insert into copytest values('Unix',E'abc\ndef',2); ! insert into copytest values('Mac',E'abc\rdef',3); ! insert into copytest values(E'esc\\ape',E'a\\r\\\r\\\n\\nb',4); copy copytest to '@abs_builddir@/results/copytest.csv' csv; create temp table copytest2 (like copytest); copy copytest2 from '@abs_builddir@/results/copytest.csv' csv; *************** *** 51,58 **** truncate copytest2; --- same test but with an escape char different from quote char ! copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; ! copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '\'' escape '\\'; select * from copytest except select * from copytest2; style | test | filler -------+------+-------- --- 51,58 ---- truncate copytest2; --- same test but with an escape char different from quote char ! copy copytest to '@abs_builddir@/results/copytest.csv' csv quote '''' escape E'\\'; ! copy copytest2 from '@abs_builddir@/results/copytest.csv' csv quote '''' escape E'\\'; select * from copytest except select * from copytest2; style | test | filler -------+------+-------- Index: src/test/regress/sql/arrays.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/arrays.sql,v retrieving revision 1.20 diff -c -c -r1.20 arrays.sql *** src/test/regress/sql/arrays.sql 22 Apr 2005 21:58:32 -0000 1.20 --- src/test/regress/sql/arrays.sql 16 Jun 2005 01:37:08 -0000 *************** *** 204,210 **** -- none of the following should be accepted select '{{1,{2}},{2,3}}'::text[]; select '{{},{}}'::text[]; ! select '{{1,2},\\{2,3}}'::text[]; select '{{"1 2" x},{3}}'::text[]; select '{}}'::text[]; select '{ }}'::text[]; --- 204,210 ---- -- none of the following should be accepted select '{{1,{2}},{2,3}}'::text[]; select '{{},{}}'::text[]; ! select E'{{1,2},\\{2,3}}'::text[]; select '{{"1 2" x},{3}}'::text[]; select '{}}'::text[]; select '{ }}'::text[]; Index: src/test/regress/sql/copy2.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/copy2.sql,v retrieving revision 1.12 diff -c -c -r1.12 copy2.sql *** src/test/regress/sql/copy2.sql 13 May 2005 06:33:40 -0000 1.12 --- src/test/regress/sql/copy2.sql 16 Jun 2005 01:37:08 -0000 *************** *** 83,89 **** 3000;;c;; \. ! COPY x from stdin WITH DELIMITER AS ':' NULL AS '\\X'; 4000:\X:C:\X:\X 4001:1:empty:: 4002:2:null:\X:\X --- 83,89 ---- 3000;;c;; \. ! COPY x from stdin WITH DELIMITER AS ':' NULL AS E'\\X'; 4000:\X:C:\X:\X 4001:1:empty:: 4002:2:null:\X:\X *************** *** 121,133 **** col2 text ); ! INSERT INTO y VALUES ('Jackson, Sam', '\\h'); ! INSERT INTO y VALUES ('It is "perfect".','\t'); INSERT INTO y VALUES ('', NULL); COPY y TO stdout WITH CSV; COPY y TO stdout WITH CSV QUOTE '''' DELIMITER '|'; ! COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE '\\'; --test that we read consecutive LFs properly --- 121,133 ---- col2 text ); ! INSERT INTO y VALUES ('Jackson, Sam', E'\\h'); ! INSERT INTO y VALUES ('It is "perfect".',E'\t'); INSERT INTO y VALUES ('', NULL); COPY y TO stdout WITH CSV; COPY y TO stdout WITH CSV QUOTE '''' DELIMITER '|'; ! COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE E'\\'; --test that we read consecutive LFs properly Index: src/test/regress/sql/int8.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/int8.sql,v retrieving revision 1.7 diff -c -c -r1.7 int8.sql *** src/test/regress/sql/int8.sql 4 Oct 2004 14:42:48 -0000 1.7 --- src/test/regress/sql/int8.sql 16 Jun 2005 01:37:08 -0000 *************** *** 61,65 **** SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; ! SELECT '' AS to_char_16, to_char(q2, '99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL; --- 61,65 ---- SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; ! SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL; Index: src/test/regress/sql/numeric.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/numeric.sql,v retrieving revision 1.11 diff -c -c -r1.11 numeric.sql *** src/test/regress/sql/numeric.sql 28 Oct 2004 18:55:08 -0000 1.11 --- src/test/regress/sql/numeric.sql 16 Jun 2005 01:37:08 -0000 *************** *** 742,748 **** SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; ! SELECT '' AS to_char_20, to_char(val, '99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data; SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data; --- 742,748 ---- SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; ! SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data; SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data; Index: src/test/regress/sql/rowtypes.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/rowtypes.sql,v retrieving revision 1.2 diff -c -c -r1.2 rowtypes.sql *** src/test/regress/sql/rowtypes.sql 9 Jun 2004 19:08:20 -0000 1.2 --- src/test/regress/sql/rowtypes.sql 16 Jun 2005 01:37:08 -0000 *************** *** 20,26 **** select '(Joe,von Blow)'::fullname, '(Joe,d''Blow)'::fullname; ! select '(Joe,"von""Blow")'::fullname, '(Joe,d\\\\Blow)'::fullname; select '(Joe,"Blow,Jr")'::fullname; --- 20,26 ---- select '(Joe,von Blow)'::fullname, '(Joe,d''Blow)'::fullname; ! select '(Joe,"von""Blow")'::fullname, E'(Joe,d\\\\Blow)'::fullname; select '(Joe,"Blow,Jr")'::fullname; Index: src/test/regress/sql/timestamp.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/timestamp.sql,v retrieving revision 1.13 diff -c -c -r1.13 timestamp.sql *** src/test/regress/sql/timestamp.sql 5 Mar 2004 02:41:14 -0000 1.13 --- src/test/regress/sql/timestamp.sql 16 Jun 2005 01:37:09 -0000 *************** *** 186,192 **** SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMP_TBL; ! SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') --- 186,192 ---- SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMP_TBL; ! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') *************** *** 211,217 **** SELECT '' AS to_timestamp_5, to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD'); SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! 'HH "\\text between quote marks\\"" YY MI SS'); SELECT '' AS to_timestamp_7, to_timestamp('05121445482000', 'MMDDHHMISSYYYY'); --- 211,217 ---- SELECT '' AS to_timestamp_5, to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD'); SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! E'HH "\\text between quote marks\\"" YY MI SS'); SELECT '' AS to_timestamp_7, to_timestamp('05121445482000', 'MMDDHHMISSYYYY'); Index: src/test/regress/sql/timestamptz.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/timestamptz.sql,v retrieving revision 1.6 diff -c -c -r1.6 timestamptz.sql *** src/test/regress/sql/timestamptz.sql 5 Mar 2004 02:41:14 -0000 1.6 --- src/test/regress/sql/timestamptz.sql 16 Jun 2005 01:37:09 -0000 *************** *** 179,185 **** SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMPTZ_TBL; ! SELECT '' AS to_char_6, to_char(d1, '"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') --- 179,185 ---- SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMPTZ_TBL; ! SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') *************** *** 207,213 **** SELECT '' AS to_timestamp_5, to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD'); SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! 'HH "\\text between quote marks\\"" YY MI SS'); SELECT '' AS to_timestamp_7, to_timestamp('05121445482000', 'MMDDHHMISSYYYY'); --- 207,213 ---- SELECT '' AS to_timestamp_5, to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD'); SELECT '' AS to_timestamp_6, to_timestamp('15 "text between quote marks" 98 54 45', ! E'HH "\\text between quote marks\\"" YY MI SS'); SELECT '' AS to_timestamp_7, to_timestamp('05121445482000', 'MMDDHHMISSYYYY'); Index: src/test/regress/sql/type_sanity.sql =================================================================== RCS file: /cvsroot/pgsql/src/test/regress/sql/type_sanity.sql,v retrieving revision 1.25 diff -c -c -r1.25 type_sanity.sql *** src/test/regress/sql/type_sanity.sql 30 Apr 2005 20:31:39 -0000 1.25 --- src/test/regress/sql/type_sanity.sql 16 Jun 2005 01:37:09 -0000 *************** *** 54,60 **** SELECT p1.oid, p1.typname FROM pg_type as p1 ! WHERE p1.typtype in ('b') AND p1.typname NOT LIKE '\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as p2 WHERE p2.typname = ('_' || p1.typname)::name AND p2.typelem = p1.oid); --- 54,60 ---- SELECT p1.oid, p1.typname FROM pg_type as p1 ! WHERE p1.typtype in ('b') AND p1.typname NOT LIKE E'\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as p2 WHERE p2.typname = ('_' || p1.typname)::name AND p2.typelem = p1.oid);