• Tomas Vondra's avatar
    Implement support for bulk inserts in postgres_fdw · b663a413
    Tomas Vondra authored
    Extends the FDW API to allow batching inserts into foreign tables. That
    is usually much more efficient than inserting individual rows, due to
    high latency for each round-trip to the foreign server.
    
    It was possible to implement something similar in the regular FDW API,
    but it was inconvenient and there were issues with reporting the number
    of actually inserted rows etc. This extends the FDW API with two new
    functions:
    
    * GetForeignModifyBatchSize - allows the FDW picking optimal batch size
    
    * ExecForeignBatchInsert - inserts a batch of rows at once
    
    Currently, only INSERT queries support batching. Support for DELETE and
    UPDATE may be added in the future.
    
    This also implements batching for postgres_fdw. The batch size may be
    specified using "batch_size" option both at the server and table level.
    
    The initial patch version was written by me, but it was rewritten and
    improved in many ways by Takayuki Tsunakawa.
    
    Author: Takayuki Tsunakawa
    Reviewed-by: Tomas Vondra, Amit Langote
    Discussion: https://postgr.es/m/20200628151002.7x5laxwpgvkyiu3q@development
    b663a413
execnodes.h 90.4 KB