[pgpool-general-jp: 773] pgpool-II 2.3.2.2 parallel_mode - escape char
sho
sho @ big.or.jp
2010年 5月 6日 (木) 10:57:36 JST
こんにちは、sho です。
環境は pgpool-II 2.3.2.2 parallel_mode です。
以下のようなエスケープ文字を含み、かつ、dblink が利用されるような
SQL がエラーとなる。
testdb=> select * from user_tbl inner join class_tbl using(cid) where
user_tbl.n
ame like E'%\\%';
ERROR: pgpool2 sql restriction(notice from dblink)
DETAIL: SELECT "pool_c$0" AS uid,"pool_c$1" AS name,"pool_c$2"
AS cid,"pool
_c$3" AS pid,"pool_c$4" AS cid,"pool_c$5" AS cname FROM dblink(
'host=test00 db
name=testdb port=9999 user=test password=test','SELECT pool_parallel("
SELECT use
r_tbl.uid, user_tbl.n
・原因1
文字列定数の前につける、エスケープ文字定数 E (例: E'%\\' ) がフロ
ントエンドからバックエンドに伝達されない
testdb=> select * from user_tbl where name like E'%\\%';
WARNING: nonstandard use of \\ in a string literal
行 1: select * from user_tbl where name like E'%\\%';
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
uid | name | cid | pid
-----+------+-----+-----
(0 行)
2010-04-30 13:40:25 DEBUG: pid 27891: can pool_parallel_exec SELECT *
FROM "use
r_tbl" WHERE ("name"~~'%\\%' )
・原因2
原因1の理由により、バックエンドから WARNING メッセージがくるが、
その WARNING メッセージ処理の段階で、以下の判定がされてしまう。
ERROR: pgpool2 sql restriction(notice from dblink)
以上、よろしくおねがいします。
-- sho
pgpool-general-jp メーリングリストの案内