mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
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
This commit is contained in:
@ -9680,6 +9680,17 @@ SELECT COUNT(*) FROM ftable;
|
||||
34
|
||||
(1 row)
|
||||
|
||||
TRUNCATE batch_table;
|
||||
DROP FOREIGN TABLE ftable;
|
||||
-- try if large batches exceed max number of bind parameters
|
||||
CREATE FOREIGN TABLE ftable ( x int ) SERVER loopback OPTIONS ( table_name 'batch_table', batch_size '100000' );
|
||||
INSERT INTO ftable SELECT * FROM generate_series(1, 70000) i;
|
||||
SELECT COUNT(*) FROM ftable;
|
||||
count
|
||||
-------
|
||||
70000
|
||||
(1 row)
|
||||
|
||||
TRUNCATE batch_table;
|
||||
DROP FOREIGN TABLE ftable;
|
||||
-- Disable batch insert
|
||||
|
Reference in New Issue
Block a user