postgres icon indicating copy to clipboard operation
postgres copied to clipboard

Pass down projection information

Open Eulerizeit opened this issue 5 years ago • 3 comments
trafficstars

This is a subset of issue #13

We closed the scan cols patch in Postgres this is an issue that when finished will replace that patch with, most likely, several patches.

Included in the patch set will be:

  • extracting columns for scans -- this is before the table AM before or during the plan
  • extracting columns for returning -- this is before the table AM before or during the plan
  • TableAM modifications for passing columns for scan (index and sequential)
  • TableAM modifications for passing columns for operations where we fetch a row by TID (returning, insert on conflict, etc.)
  • TableAM modifications for passing columns for operations where we lock a tuple

Effectively this should be decoupling the ingrained assumptions that a 'row' is the atomic thing being grabbed.

Eulerizeit avatar Jul 02 '20 15:07 Eulerizeit

From a previous investigation on improvements for scan:

Column store layout can be leveraged to scan only subset of columns from table which are requied to perform the task. Following functions don't need to pull full tuple but can be optimized to only get required subset of columns.

Sequential Scan to leverage column projections

  • check_default_partition_contents()
  • CopyTo()
  • validateCheckConstraint()
  • validateForeignKeyConstraint()

Index Scans to leverage column projections

  • table_index_fetch_tuple_check()
  • unique_key_recheck()
  • check_exclusion_or_unique_constraint()
  • IndexNextWithReorder()
  • get_actual_variable_range()

&&

@ashwinstar modified following functions to leverage column projections.

  • check_default_partition_contents()
  • CopyTo()
  • validateCheckConstraint() Rest mentioned above are still remaining.

Eulerizeit avatar Jul 02 '20 15:07 Eulerizeit

ExecInitBitmapHeapScan() should also pass down the projection list if possible.

soumyadeep2007 avatar Jul 02 '20 18:07 soumyadeep2007

w/ @jchampio validateCheckConstraint() was removed in upstream commit: f1fcf2d3b2e0. So we don't need to worry about it anymore.

soumyadeep2007 avatar Nov 11 '20 22:11 soumyadeep2007