2014年11月24日

52. PostgreSQLで利用するプレースホルダ数について

PostgreSQLのJDBCドライバ にて制限がかけられているため、PostgreSQLで利用するプレースホルダ数は 32767 までとすること。
preparedStatement.setString() の 引数(parameterIndex) が int型 のため、利用できるプレースホルダ数は 2147483647 と想像していたが、実際には PostgreSQLのJDBCドライバ( org.postgresql.core.v3.QueryExecutorImpl の sendParse() ) で short型 の範囲に制限されていた。
( PostgreSQLのJDBCドライバ のソースは 9.0-802 JDBC Source 〜 9.3-1102 JDBC Source を確認済み。)
なお、制限を超えた場合は、preparedStatement.executeUpdate() で
Caused by: java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: xxxxx
が発生する。

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック