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