postgresql/src/backend/commands
Andres Freund 763f2edd92 Rejigger materializing and fetching a HeapTuple from a slot.
Previously materializing a slot always returned a HeapTuple. As
current work aims to reduce the reliance on HeapTuples (so other
storage systems can work efficiently), that needs to change. Thus
split the tasks of materializing a slot (i.e. making it independent
from the underlying storage / other memory contexts) from fetching a
HeapTuple from the slot.  For brevity, allow to fetch a HeapTuple from
a slot and materializing the slot at the same time, controlled by a
parameter.

For now some callers of ExecFetchSlotHeapTuple, with materialize =
true, expect that changes to the heap tuple will be reflected in the
underlying slot.  Those places will be adapted in due course, so while
not pretty, that's OK for now.

Also rename ExecFetchSlotTuple to ExecFetchSlotHeapTupleDatum and
ExecFetchSlotTupleDatum to ExecFetchSlotHeapTupleDatum, as it's likely
that future storage methods will need similar methods. There already
is ExecFetchSlotMinimalTuple, so the new names make the naming scheme
more coherent.

Author: Ashutosh Bapat and Andres Freund, with changes by Amit Khandekar
Discussion: https://postgr.es/m/20181105210039.hh4vvi4vwoq5ba2q@alap3.anarazel.de
2018-11-15 14:31:12 -08:00
..
Makefile Implement multivariate n-distinct coefficients 2017-03-24 14:06:10 -03:00
aggregatecmds.c Improve spelling of new FINALFUNC_MODIFY aggregate attribute. 2018-05-21 11:41:42 -04:00
alter.c Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
amcmds.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
analyze.c Use slots more widely in tuple mapping code and make naming more consistent. 2018-10-02 11:14:26 -07:00
async.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
cluster.c Lower lock level for renaming indexes 2018-11-14 17:09:54 +01:00
collationcmds.c Merge catalog/pg_foo_fn.h headers back into pg_foo.h headers. 2018-04-08 14:35:29 -04:00
comment.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
constraint.c Split ExecStoreTuple into ExecStoreHeapTuple and ExecStoreBufferHeapTuple. 2018-09-25 16:27:48 -07:00
conversioncmds.c Merge catalog/pg_foo_fn.h headers back into pg_foo.h headers. 2018-04-08 14:35:29 -04:00
copy.c Rejigger materializing and fetching a HeapTuple from a slot. 2018-11-15 14:31:12 -08:00
createas.c Rejigger materializing and fetching a HeapTuple from a slot. 2018-11-15 14:31:12 -08:00
dbcommands.c Rename TransactionChain functions 2018-03-16 13:18:06 -04:00
define.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
discard.c Rename TransactionChain functions 2018-03-16 13:18:06 -04:00
dropcmds.c Fix more wrong paths in header comments 2018-07-11 17:57:04 +03:00
event_trigger.c Correct constness of a few variables. 2018-10-15 21:01:14 -07:00
explain.c Fix issues around EXPLAIN with JIT. 2018-10-03 12:48:37 -07:00
extension.c Simplify null-element handling in extension_config_remove(). 2018-11-12 11:50:28 -05:00
foreigncmds.c Don't record FDW user mappings as members of extensions. 2018-08-07 16:32:50 -04:00
functioncmds.c Fix ExecuteCallStmt to not scribble on the passed-in parse tree. 2018-11-04 14:50:55 -05:00
indexcmds.c Set pg_class.relhassubclass for partitioned indexes 2018-10-22 11:04:48 +09:00
lockcmds.c Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
matview.c Rejigger materializing and fetching a HeapTuple from a slot. 2018-11-15 14:31:12 -08:00
opclasscmds.c doc: Update uses of the word "procedure" 2018-08-22 14:44:49 +02:00
operatorcmds.c Change PROCEDURE to FUNCTION in CREATE OPERATOR syntax 2018-08-22 14:44:49 +02:00
policy.c Create an RTE field to record the query's lock mode for each relation. 2018-09-30 13:55:51 -04:00
portalcmds.c Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
prepare.c Revert MERGE patch 2018-04-12 11:22:56 +01:00
proclang.c Merge catalog/pg_foo_fn.h headers back into pg_foo.h headers. 2018-04-08 14:35:29 -04:00
publicationcmds.c Merge catalog/pg_foo_fn.h headers back into pg_foo.h headers. 2018-04-08 14:35:29 -04:00
schemacmds.c Replace AclObjectKind with ObjectType 2018-01-19 14:01:15 -05:00
seclabel.c Remove duplicated words split across lines in comments 2018-09-08 12:24:19 -07:00
sequence.c Revise attribute handling code on partition creation 2018-11-08 16:22:09 -03:00
statscmds.c Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
subscriptioncmds.c Split the SetSubscriptionRelState function into two 2018-04-06 10:00:26 -04:00
tablecmds.c Lower lock level for renaming indexes 2018-11-14 17:09:54 +01:00
tablespace.c Refactor dir/file permissions 2018-04-07 17:45:39 -04:00
trigger.c Rejigger materializing and fetching a HeapTuple from a slot. 2018-11-15 14:31:12 -08:00
tsearchcmds.c Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
typecmds.c Lower lock level for renaming indexes 2018-11-14 17:09:54 +01:00
user.c Replace AclObjectKind with ObjectType 2018-01-19 14:01:15 -05:00
vacuum.c Add option SKIP_LOCKED to VACUUM and ANALYZE 2018-10-04 09:00:33 +09:00
vacuumlazy.c Improve autovacuum logging for aggressive and anti-wraparound runs 2018-09-14 07:35:39 +09:00
variable.c Turn transaction_isolation into GUC enum 2018-10-09 21:26:00 +02:00
view.c Fix event triggers for partitioned tables 2018-10-06 19:17:46 -03:00