[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 メーリングリストの案内