Re: POC: postgres_fdw insert batching
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: Amit Langote <amitlangote09@gmail.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>,
"Tsunakawa, Takayuki" <tsunakawa.takay@fujitsu.com>
Date: 2021-02-17T23:38:08Z
Lists: pgsql-hackers
On 2/17/21 8:36 PM, Tomas Vondra wrote: > > ... > > Thanks. The patch seems reasonable, but it's a bit too large for a fix, > so I'll go ahead and push one of the previous fixes restricting batching > to plain INSERT commands. But this seems useful, so I suggest adding it > to the next commitfest. I've pushed the v4 fix, adding the CMD_INSERT to execPartition. I think we may need to revise the relationship between FDW and places that (may) call GetForeignModifyBatchSize. Currently, these places need to be quite well synchronized - in a way, the issue was (partially) due to postgres_fdw and core not agreeing on the details. In particular, create_foreign_modify sets batch_size for CMD_INSERT and leaves it 0 otherwise. So GetForeignModifyBatchSize() returned 0 later, triggering an assert. It's probably better to require GetForeignModifyBatchSize() to always return a valid batch size (>= 1). If batching is not supported, just return 1. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Fix tuple routing to initialize batching only for inserts
- 927f453a9410 14.0 landed
-
Fix pointer type in ExecForeignBatchInsert SGML docs
- c15283ff429b 14.0 landed
-
Fix initialization of FDW batching in ExecInitModifyTable
- 920f853dc948 14.0 landed
-
Implement support for bulk inserts in postgres_fdw
- b663a4136331 14.0 landed