Optimize update of tables with generated columns
authorPeter Eisentraut <peter@eisentraut.org>
Mon, 17 Feb 2020 14:19:58 +0000 (15:19 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Mon, 17 Feb 2020 14:20:58 +0000 (15:20 +0100)
commitc6679e4fca21d253ced84c51ac1a31c1b2aec72f
treeaf48ab74e7d45752731f72081c303ca98aa969cc
parentad3ae64770e5b4391ad07fb2a689d72aa45b4689
Optimize update of tables with generated columns

When updating a table row with generated columns, only recompute those
generated columns whose base columns have changed in this update and
keep the rest unchanged.  This can result in a significant performance
benefit.  The required information was already kept in
RangeTblEntry.extraUpdatedCols; we just have to make use of it.

Reviewed-by: Pavel Stehule <pavel.stehule@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/b05e781a-fa16-6b52-6738-761181204567@2ndquadrant.com
src/backend/commands/copy.c
src/backend/executor/execReplication.c
src/backend/executor/nodeModifyTable.c
src/include/executor/nodeModifyTable.h
src/include/nodes/execnodes.h