Adjust batch size in postgres_fdw to not use too many parameters
authorTomas Vondra <tomas.vondra@postgresql.org>
Tue, 8 Jun 2021 18:22:18 +0000 (20:22 +0200)
committerTomas Vondra <tomas.vondra@postgresql.org>
Tue, 8 Jun 2021 18:28:31 +0000 (20:28 +0200)
commitcb92703384e2bb3fa0a690e5dbb95ad333c2b44c
tree644c14c6f86391b0ae60736b36330b0caa387864
parentd1f0aa7696917213485c03b076b573497a535076
Adjust batch size in postgres_fdw to not use too many parameters

The FE/BE protocol identifies parameters with an Int16 index, which
limits the maximum number of parameters per query to 65535. With
batching added to postges_fdw this limit is much easier to hit, as
the whole batch is essentially a single query, making this error much
easier to hit.

The failures are a bit unpredictable, because it also depends on the
number of columns in the query. So instead of just failing, this patch
tweaks the batch_size to not exceed the maximum number of parameters.

Reported-by: Hou Zhijie <houzj.fnst@cn.fujitsu.com>
Reviewed-by: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Discussion: https://postgr.es/m/OS0PR01MB571603973C0AC2874AD6BF2594299%40OS0PR01MB5716.jpnprd01.prod.outlook.com
contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/postgres_fdw.c
contrib/postgres_fdw/sql/postgres_fdw.sql
doc/src/sgml/postgres-fdw.sgml
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/libpq-fe.h