[pgpool-general-jp: 1300] Re: LATERALを使用すると pgpool-IIでParseエラーが発生する

Tatsuo Ishii ishii @ sraoss.co.jp
2014年 9月 9日 (火) 08:27:32 JST


石井です。

pgpool-II にはPostgreSQLのSQLパーサが移植されており、pgpool-II 3.3系に
はPostgreSQL 9.2のSQLパーサが移植されています。ですので、pgpool-II 3.3
系はLATERALが理解できません。

現在開発中の pgpool-II 3.4にはPostgreSQL 9.4のパーサが移植されているの
でLATERALを含むSQL文でも正しく負荷分散されるようになります。

ちなみに3.4では、アプリケーション名をやデータベース名によって負荷分散の
挙動をコントロールできるようになります。たとえば、

app_name_redirect_preference_list = 'psql:primary,myapp[0-4]:1,myapp[5-9]:standby'

と書いておくと、

psqlから送信されたクエリは必ずprimaryで実行

myapp[0-4]という正規表現に一致するアプリケーション名から送信されたクエ
リはDBノード1で実行

myapp[5-9]という正規表現に一致するアプリケーション名から送信されたクエ
リはstanbyのどれかで実行

となります。以下のような使い方を想定しています。

- レプリケーション遅延が許されないマスタ更新アプリはprimaryで実行

- 解析系の重いクエリを実行するアプリは特定のDBノードのみで実行し、他の
  スタンバイにはクエリを投げないようにする
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

> はじめまして、森脇と申します。
> 
> pgpool-IIのLATERAL句の扱いに関して、情報お待ちでしたら教えてください。
> 
> 以下の実行環境で LATERALを使用したSQLを実行すると、
> pgpoolのログに「Parse: Unable to parse the query:」が出力されます。
> 
> ------------------------------------
> ■実行環境
> 
> ・CentOS 6.5
> ・PostgreSQL 9.3.1
> ・pgpool-II 3.3.4
> ------------------------------------
> 
> pgpool-II は、現時点のバージョンでは、LATERAL を使用すると、
> Parseエラーとして扱ってしまうという状況なのでしょうか?
> それとも、PostgreSQL や OS等のバージョンとの兼ね合いがあるのでしょうか?
> 
> よろしくお願いします。
> 
> なお、PostgreSQL側では実行エラーとはならず正常に結果を受け取ることができますが、Parseエラーがとなると、ロードバランスがうまく行われないため、解決しておきたいと考えております。


pgpool-general-jp メーリングリストの案内