tupbasics-2.patch

application/octet-stream

Filename: tupbasics-2.patch
Type: application/octet-stream
Part: 0
Message: Re: splitting htup.h

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
contrib/file_fdw/file_fdw.c 1 0
contrib/hstore/hstore_io.c 1 0
contrib/ltree/ltree_op.c 1 0
contrib/pageinspect/heapfuncs.c 2 1
src/backend/access/common/reloptions.c 1 0
src/backend/access/common/tupdesc.c 1 0
src/backend/access/heap/hio.c 1 0
src/backend/access/heap/pruneheap.c 1 0
src/backend/access/nbtree/nbtxlog.c 1 0
src/backend/bootstrap/bootstrap.c 1 0
src/backend/catalog/aclchk.c 1 0
src/backend/catalog/dependency.c 1 0
src/backend/catalog/heap.c 1 0
src/backend/catalog/indexing.c 1 0
src/backend/catalog/namespace.c 1 0
src/backend/catalog/objectaddress.c 1 0
src/backend/catalog/pg_aggregate.c 1 0
src/backend/catalog/pg_collation.c 1 0
src/backend/catalog/pg_constraint.c 1 0
src/backend/catalog/pg_conversion.c 1 0
src/backend/catalog/pg_db_role_setting.c 1 0
src/backend/catalog/pg_depend.c 1 0
src/backend/catalog/pg_enum.c 1 0
src/backend/catalog/pg_inherits.c 1 0
src/backend/catalog/pg_largeobject.c 1 0
src/backend/catalog/pg_operator.c 1 0
src/backend/catalog/pg_proc.c 1 0
src/backend/catalog/pg_range.c 1 0
src/backend/catalog/pg_shdepend.c 1 0
src/backend/catalog/pg_type.c 1 0
src/backend/commands/aggregatecmds.c 1 0
src/backend/commands/alter.c 1 0
src/backend/commands/collationcmds.c 1 0
src/backend/commands/comment.c 1 0
src/backend/commands/conversioncmds.c 1 0
src/backend/commands/copy.c 1 0
src/backend/commands/createas.c 1 0
src/backend/commands/dbcommands.c 1 0
src/backend/commands/dropcmds.c 1 0
src/backend/commands/extension.c 1 0
src/backend/commands/foreigncmds.c 1 0
src/backend/commands/functioncmds.c 1 0
src/backend/commands/indexcmds.c 1 0
src/backend/commands/opclasscmds.c 1 0
src/backend/commands/operatorcmds.c 1 0
src/backend/commands/proclang.c 1 0
src/backend/commands/schemacmds.c 1 0
src/backend/commands/seclabel.c 1 0
src/backend/commands/sequence.c 1 0
src/backend/commands/tablespace.c 1 0
src/backend/commands/trigger.c 1 0
src/backend/commands/tsearchcmds.c 2 1
src/backend/commands/typecmds.c 1 0
src/backend/commands/user.c 1 0
src/backend/commands/vacuum.c 1 0
src/backend/commands/vacuumlazy.c 1 0
src/backend/commands/variable.c 1 0
src/backend/executor/execAmi.c 1 0
src/backend/executor/execMain.c 2 0
src/backend/executor/execQual.c 1 0
src/backend/executor/execTuples.c 1 0
src/backend/executor/functions.c 1 0
src/backend/executor/nodeAgg.c 1 0
src/backend/executor/nodeHash.c 1 0
src/backend/executor/nodeHashjoin.c 1 0
src/backend/executor/nodeModifyTable.c 1 0
src/backend/executor/nodeSubplan.c 1 0
src/backend/executor/nodeWindowAgg.c 1 0
src/backend/executor/spi.c 1 0
src/backend/foreign/foreign.c 1 0
src/backend/optimizer/path/costsize.c 1 0
src/backend/optimizer/plan/planagg.c 1 0
src/backend/optimizer/plan/planner.c 1 0
src/backend/optimizer/plan/subselect.c 1 0
src/backend/optimizer/prep/prepunion.c 1 1
src/backend/optimizer/util/clauses.c 1 0
src/backend/optimizer/util/plancat.c 1 0
src/backend/parser/parse_coerce.c 1 0
src/backend/parser/parse_func.c 1 0
src/backend/parser/parse_node.c 1 0
src/backend/parser/parse_oper.c 1 0
src/backend/parser/parse_relation.c 1 0
src/backend/parser/parse_type.c 1 0
src/backend/parser/parse_utilcmd.c 1 0
src/backend/postmaster/autovacuum.c 1 0
src/backend/postmaster/pgstat.c 1 0
src/backend/rewrite/rewriteDefine.c 1 0
src/backend/rewrite/rewriteRemove.c 1 0
src/backend/rewrite/rewriteSupport.c 1 0
src/backend/storage/lmgr/predicate.c 1 0
src/backend/tcop/fastpath.c 1 0
src/backend/tcop/utility.c 1 0
src/backend/tsearch/ts_selfuncs.c 1 0
src/backend/utils/adt/acl.c 1 0
src/backend/utils/adt/arrayfuncs.c 1 0
src/backend/utils/adt/array_selfuncs.c 1 0
src/backend/utils/adt/dbsize.c 1 0
src/backend/utils/adt/enum.c 1 0
src/backend/utils/adt/format_type.c 1 0
src/backend/utils/adt/json.c 1 0
src/backend/utils/adt/pg_locale.c 1 0
src/backend/utils/adt/regproc.c 1 0
src/backend/utils/adt/ri_triggers.c 1 0
src/backend/utils/adt/rowtypes.c 1 0
src/backend/utils/adt/ruleutils.c 1 0
src/backend/utils/adt/selfuncs.c 1 0
src/backend/utils/adt/trigfuncs.c 1 0
src/backend/utils/adt/xml.c 1 0
src/backend/utils/cache/inval.c 1 0
src/backend/utils/cache/lsyscache.c 1 0
src/backend/utils/cache/relcache.c 1 0
src/backend/utils/cache/syscache.c 1 0
src/backend/utils/cache/ts_cache.c 1 0
src/backend/utils/cache/typcache.c 1 0
src/backend/utils/fmgr/funcapi.c 1 0
src/backend/utils/init/miscinit.c 1 0
src/backend/utils/init/postinit.c 1 0
src/backend/utils/misc/superuser.c 1 0
src/backend/utils/sort/tuplesort.c 1 0
src/backend/utils/sort/tuplestore.c 1 0
src/backend/utils/time/tqual.c 1 0
src/include/access/heapam.h 6 0
src/include/access/hio.h 1 1
src/include/access/htup.h 7 87
src/include/access/reloptions.h 1 1
src/include/access/relscan.h 1 0
src/include/access/rewriteheap.h 1 1
src/include/access/tupbasics.h 111 0
src/include/access/tupconvert.h 1 1
src/include/catalog/indexing.h 1 1
src/include/commands/tablecmds.h 1 1
src/include/commands/typecmds.h 1 1
src/include/commands/vacuum.h 1 1
src/include/executor/tuptable.h 1 1
src/include/parser/parse_oper.h 1 1
src/include/parser/parse_type.h 1 1
src/include/storage/predicate.h 1 0
src/include/utils/catcache.h 1 1
src/include/utils/inval.h 2 1
src/include/utils/lsyscache.h 1 1
src/include/utils/selfuncs.h 1 1
src/include/utils/snapshot.h 1 1
src/include/utils/syscache.h 1 0
src/pl/plpython/plpy_typeio.h 1 1
diff --git a/contrib/file_fdw/file_fdw.c b/contrib/file_fdw/file_fdw.c
index e3b9223..dff34ee 100644
--- a/contrib/file_fdw/file_fdw.c
+++ b/contrib/file_fdw/file_fdw.c
@@ -15,6 +15,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "catalog/pg_foreign_table.h"
 #include "commands/copy.h"
diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c
index dde6c4b..988142e 100644
--- a/contrib/hstore/hstore_io.c
+++ b/contrib/hstore/hstore_io.c
@@ -5,6 +5,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "catalog/pg_type.h"
 #include "funcapi.h"
 #include "libpq/pqformat.h"
diff --git a/contrib/ltree/ltree_op.c b/contrib/ltree/ltree_op.c
index 4290ad4..5cd30ef 100644
--- a/contrib/ltree/ltree_op.c
+++ b/contrib/ltree/ltree_op.c
@@ -7,6 +7,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "catalog/pg_statistic.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c
index 260ccff..553294d 100644
--- a/contrib/pageinspect/heapfuncs.c
+++ b/contrib/pageinspect/heapfuncs.c
@@ -25,9 +25,10 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "funcapi.h"
-#include "utils/builtins.h"
 #include "miscadmin.h"
+#include "utils/builtins.h"
 
 Datum		heap_page_items(PG_FUNCTION_ARGS);
 
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index 1eeaade..a3a3d61 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -17,6 +17,7 @@
 
 #include "access/gist_private.h"
 #include "access/hash.h"
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "access/reloptions.h"
 #include "access/spgist.h"
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index aa1ce80..018dd3c 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -19,6 +19,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_type.h"
 #include "miscadmin.h"
 #include "parser/parse_type.h"
diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c
index 19a3492..25d90c7 100644
--- a/src/backend/access/heap/hio.c
+++ b/src/backend/access/heap/hio.c
@@ -17,6 +17,7 @@
 
 #include "access/heapam.h"
 #include "access/hio.h"
+#include "access/htup.h"
 #include "access/visibilitymap.h"
 #include "storage/bufmgr.h"
 #include "storage/freespace.h"
diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c
index b61b603..d7ac0d8 100644
--- a/src/backend/access/heap/pruneheap.c
+++ b/src/backend/access/heap/pruneheap.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/transam.h"
 #include "miscadmin.h"
 #include "pgstat.h"
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c
index deca38c..af5cb7a 100644
--- a/src/backend/access/nbtree/nbtxlog.c
+++ b/src/backend/access/nbtree/nbtxlog.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/heapam.h"
 #include "access/nbtree.h"
 #include "access/transam.h"
 #include "storage/procarray.h"
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index e3ae92d..c14df40 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -21,6 +21,7 @@
 #include <getopt.h>
 #endif
 
+#include "access/htup.h"
 #include "bootstrap/bootstrap.h"
 #include "catalog/index.h"
 #include "catalog/pg_collation.h"
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 56c40b1..7a8d5ee 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -19,6 +19,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 98ce598..3eb7b6c 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index c91df90..c489f74 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -29,6 +29,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/transam.h"
 #include "access/xact.h"
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index ee04985..1ebc55b 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -15,6 +15,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/index.h"
 #include "catalog/indexing.h"
 #include "executor/executor.h"
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 1b6bb3b..bcef434 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -19,6 +19,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/pg_authid.h"
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 19bde9f..bfcd182 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -15,6 +15,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/catalog.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
index 403c6f0..d1fc100 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c
index 18c7acf..05a0dee 100644
--- a/src/backend/catalog/pg_collation.c
+++ b/src/backend/catalog/pg_collation.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c
index 224859d..e24c29b 100644
--- a/src/backend/catalog/pg_constraint.c
+++ b/src/backend/catalog/pg_constraint.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/objectaccess.h"
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index f86c84f..3dcdfa4 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_db_role_setting.c b/src/backend/catalog/pg_db_role_setting.c
index d865b68..2686f21 100644
--- a/src/backend/catalog/pg_db_role_setting.c
+++ b/src/backend/catalog/pg_db_role_setting.c
@@ -10,6 +10,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/genam.h"
 #include "access/heapam.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c
index 8e58435..af2f0c4 100644
--- a/src/backend/catalog/pg_depend.c
+++ b/src/backend/catalog/pg_depend.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_constraint.h"
diff --git a/src/backend/catalog/pg_enum.c b/src/backend/catalog/pg_enum.c
index 41665c1..1434c1f 100644
--- a/src/backend/catalog/pg_enum.c
+++ b/src/backend/catalog/pg_enum.c
@@ -15,6 +15,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c
index 146c845..c62b77c 100644
--- a/src/backend/catalog/pg_inherits.c
+++ b/src/backend/catalog/pg_inherits.c
@@ -21,6 +21,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_inherits.h"
 #include "catalog/pg_inherits_fn.h"
diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c
index 1e5de6a..d719687 100644
--- a/src/backend/catalog/pg_largeobject.c
+++ b/src/backend/catalog/pg_largeobject.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c
index 4fd55ae..03345ed 100644
--- a/src/backend/catalog/pg_operator.c
+++ b/src/backend/catalog/pg_operator.c
@@ -18,6 +18,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 599f042..8ccdfec 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/catalog/pg_range.c b/src/backend/catalog/pg_range.c
index 7e52d0d..3515a9c 100644
--- a/src/backend/catalog/pg_range.c
+++ b/src/backend/catalog/pg_range.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_collation.h"
diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c
index 1edf950..3d95bd8 100644
--- a/src/backend/catalog/pg_shdepend.c
+++ b/src/backend/catalog/pg_shdepend.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index 5b2ad6b..eb16213 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c
index c0dcdf7..1401dd1 100644
--- a/src/backend/commands/aggregatecmds.c
+++ b/src/backend/commands/aggregatecmds.c
@@ -22,6 +22,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/heapam.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 4dd9927..16420fa 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/namespace.h"
diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c
index e574288..223da13 100644
--- a/src/backend/commands/collationcmds.c
+++ b/src/backend/commands/collationcmds.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/heapam.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 7ea3675..cf0bc0a 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/indexing.h"
 #include "catalog/objectaddress.h"
 #include "catalog/pg_description.h"
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index aad7e46..f7a2d2a 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_conversion.h"
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 98bcb2f..1868d87 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -21,6 +21,7 @@
 #include <arpa/inet.h>
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/namespace.h"
diff --git a/src/backend/commands/createas.c b/src/backend/commands/createas.c
index dc0665e..98db30a 100644
--- a/src/backend/commands/createas.c
+++ b/src/backend/commands/createas.c
@@ -21,6 +21,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index c9b80ad..0b00c88 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -26,6 +26,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "access/xlogutils.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/commands/dropcmds.c b/src/backend/commands/dropcmds.c
index 1b8529e..3c64679 100644
--- a/src/backend/commands/dropcmds.c
+++ b/src/backend/commands/dropcmds.c
@@ -16,6 +16,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/namespace.h"
 #include "catalog/objectaddress.h"
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index cde3d60..7b646f2 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -27,6 +27,7 @@
 #include <limits.h>
 #include <unistd.h>
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 342ecc2..13be256 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -14,6 +14,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "access/reloptions.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 9ba6dd8..8af03a3 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -33,6 +33,7 @@
 #include "postgres.h"
 
 #include "access/genam.h"
+#include "access/htup.h"
 #include "access/heapam.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 1f9bf61..238e639 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -15,6 +15,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index f564244..c9e1f0b 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -19,6 +19,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
index 410c708..77d5e76 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -35,6 +35,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_operator.h"
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 354389c..5dc65a8 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -15,6 +15,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
 #include "catalog/objectaccess.h"
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c
index 6745af5..e179234 100644
--- a/src/backend/commands/schemacmds.c
+++ b/src/backend/commands/schemacmds.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c
index c09a96e..94b998e 100644
--- a/src/backend/commands/seclabel.c
+++ b/src/backend/commands/seclabel.c
@@ -12,6 +12,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/catalog.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_seclabel.h"
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 34b74f6..180f5d7 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/transam.h"
 #include "access/xlogutils.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index da9cb2f..a04d11b 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -52,6 +52,7 @@
 #include <sys/stat.h>
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 4399a27..175a296 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -15,6 +15,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index 86cb870..aacfe3d 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -17,8 +17,9 @@
 
 #include <ctype.h>
 
-#include "access/heapam.h"
 #include "access/genam.h"
+#include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 30850b2..c68d220 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -33,6 +33,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/dependency.h"
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index a22092c..a99481c 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -14,6 +14,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 710c2af..7cea124 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -25,6 +25,7 @@
 #include "access/clog.h"
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/transam.h"
 #include "access/xact.h"
 #include "catalog/namespace.h"
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index 5e90221..4b6f955 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -39,6 +39,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/transam.h"
 #include "access/visibilitymap.h"
 #include "catalog/storage.h"
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 0e9eb3a..d93d5d8 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -18,6 +18,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/pg_authid.h"
 #include "commands/variable.h"
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index e54d51e..7864db2 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -12,6 +12,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "executor/execdebug.h"
 #include "executor/nodeAgg.h"
 #include "executor/nodeAppend.h"
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 440438b..6fc8232 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -37,6 +37,8 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
+#include "access/reloptions.h"
 #include "access/sysattr.h"
 #include "access/transam.h"
 #include "access/xact.h"
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index 0ea21ca..970b7d3 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -36,6 +36,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "access/tupconvert.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
index e755e7c..230cc9f 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -88,6 +88,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "funcapi.h"
 #include "catalog/pg_type.h"
 #include "nodes/nodeFuncs.h"
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c
index bf2f5c6..735c025 100644
--- a/src/backend/executor/functions.c
+++ b/src/backend/executor/functions.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index c9aa921..dbb610c 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -78,6 +78,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index cabe663..79765c9 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -24,6 +24,7 @@
 #include <math.h>
 #include <limits.h>
 
+#include "access/htup.h"
 #include "catalog/pg_statistic.h"
 #include "commands/tablespace.h"
 #include "executor/execdebug.h"
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 0ea490b..744297a 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -15,6 +15,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "executor/executor.h"
 #include "executor/hashjoin.h"
 #include "executor/nodeHash.h"
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index a7bce75..1e2bbf0 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -37,6 +37,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "commands/trigger.h"
 #include "executor/executor.h"
diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c
index da31820..cbcc749 100644
--- a/src/backend/executor/nodeSubplan.c
+++ b/src/backend/executor/nodeSubplan.c
@@ -20,6 +20,7 @@
 
 #include <math.h>
 
+#include "access/htup.h"
 #include "executor/executor.h"
 #include "executor/nodeSubplan.h"
 #include "nodes/makefuncs.h"
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
index ce89ff2..4e0927c 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -33,6 +33,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index e222365..e1ac21e 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/printtup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c
index f27b55a..87b5fa4 100644
--- a/src/backend/foreign/foreign.c
+++ b/src/backend/foreign/foreign.c
@@ -12,6 +12,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "catalog/pg_foreign_data_wrapper.h"
 #include "catalog/pg_foreign_server.h"
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 480c1b7..9bbd51d 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -70,6 +70,7 @@
 
 #include <math.h>
 
+#include "access/htup.h"
 #include "executor/executor.h"
 #include "executor/nodeHash.h"
 #include "miscadmin.h"
diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c
index be52d16..b6dbe61 100644
--- a/src/backend/optimizer/plan/planagg.c
+++ b/src/backend/optimizer/plan/planagg.c
@@ -28,6 +28,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_type.h"
 #include "nodes/makefuncs.h"
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index df76341..b51f7af 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -17,6 +17,7 @@
 
 #include <limits.h>
 
+#include "access/htup.h"
 #include "executor/executor.h"
 #include "executor/nodeAgg.h"
 #include "miscadmin.h"
diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c
index 8ce6bee..a71147b 100644
--- a/src/backend/optimizer/plan/subselect.c
+++ b/src/backend/optimizer/plan/subselect.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_operator.h"
 #include "catalog/pg_type.h"
 #include "executor/executor.h"
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index 6475633..94be174 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -28,8 +28,8 @@
  */
 #include "postgres.h"
 
-
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/pg_inherits_fn.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 73f5e11..8ecc76f 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -19,6 +19,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_language.h"
 #include "catalog/pg_operator.h"
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index 38b81a0..bf94d50 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -19,6 +19,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/transam.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c
index a1caf74..43301ab 100644
--- a/src/backend/parser/parse_coerce.c
+++ b/src/backend/parser/parse_coerce.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_cast.h"
 #include "catalog/pg_class.h"
 #include "catalog/pg_inherits_fn.h"
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index b051707..14c1662 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 #include "funcapi.h"
diff --git a/src/backend/parser/parse_node.c b/src/backend/parser/parse_node.c
index 80dbdd1..966fe44 100644
--- a/src/backend/parser/parse_node.c
+++ b/src/backend/parser/parse_node.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/pg_type.h"
 #include "mb/pg_wchar.h"
 #include "nodes/makefuncs.h"
diff --git a/src/backend/parser/parse_oper.c b/src/backend/parser/parse_oper.c
index bb5f040..4511c1a 100644
--- a/src/backend/parser/parse_oper.c
+++ b/src/backend/parser/parse_oper.c
@@ -15,6 +15,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_operator.h"
 #include "catalog/pg_type.h"
 #include "lib/stringinfo.h"
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 30b307b..c7513b5 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -16,6 +16,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/heap.h"
 #include "catalog/namespace.h"
diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index 871a7d1..080646d 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_type.h"
 #include "lib/stringinfo.h"
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 8810d0d..f11cc89 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -26,6 +26,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "catalog/dependency.h"
 #include "catalog/heap.h"
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 1cfac9e..b860a3e 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -68,6 +68,7 @@
 #include <unistd.h>
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/transam.h"
 #include "access/xact.h"
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 73d5b2e..b616a9c 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -32,6 +32,7 @@
 #include "pgstat.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/transam.h"
 #include "access/twophase_rmgr.h"
 #include "access/xact.h"
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 971d277..2e1db7a 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -15,6 +15,7 @@
 #include "postgres.h"
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/catalog.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index 2c2e8fa..7dea1bf 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c
index 3f9b5e6..4f5019d 100644
--- a/src/backend/rewrite/rewriteSupport.c
+++ b/src/backend/rewrite/rewriteSupport.c
@@ -14,6 +14,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/heapam.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_rewrite.h"
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index 0c3c7f0..5c08c21 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -183,6 +183,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/slru.h"
 #include "access/subtrans.h"
 #include "access/transam.h"
diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c
index 5c06206..f954a89 100644
--- a/src/backend/tcop/fastpath.c
+++ b/src/backend/tcop/fastpath.c
@@ -20,6 +20,7 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/pg_proc.h"
 #include "libpq/libpq.h"
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 8b73858..a286958 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -16,6 +16,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/twophase.h"
 #include "access/xact.h"
diff --git a/src/backend/tsearch/ts_selfuncs.c b/src/backend/tsearch/ts_selfuncs.c
index a07d410..d576598 100644
--- a/src/backend/tsearch/ts_selfuncs.c
+++ b/src/backend/tsearch/ts_selfuncs.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_statistic.h"
 #include "catalog/pg_type.h"
 #include "miscadmin.h"
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 77322a1..6c95313 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -16,6 +16,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_authid.h"
 #include "catalog/pg_auth_members.h"
diff --git a/src/backend/utils/adt/array_selfuncs.c b/src/backend/utils/adt/array_selfuncs.c
index 1b7d46f..271c62f 100644
--- a/src/backend/utils/adt/array_selfuncs.c
+++ b/src/backend/utils/adt/array_selfuncs.c
@@ -16,6 +16,7 @@
 
 #include <math.h>
 
+#include "access/htup.h"
 #include "catalog/pg_collation.h"
 #include "catalog/pg_operator.h"
 #include "catalog/pg_statistic.h"
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index 5582a06..abd95a7 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -16,6 +16,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "funcapi.h"
 #include "libpq/pqformat.h"
 #include "utils/array.h"
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 2ccdc0c..9bcb6ca 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -15,6 +15,7 @@
 #include <sys/stat.h>
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/catalog.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_tablespace.h"
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c
index de46f4c..3775600 100644
--- a/src/backend/utils/adt/enum.c
+++ b/src/backend/utils/adt/enum.c
@@ -15,6 +15,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_enum.h"
 #include "libpq/pqformat.h"
diff --git a/src/backend/utils/adt/format_type.c b/src/backend/utils/adt/format_type.c
index 952f0a0..db8e95d 100644
--- a/src/backend/utils/adt/format_type.c
+++ b/src/backend/utils/adt/format_type.c
@@ -17,6 +17,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_type.h"
 #include "utils/builtins.h"
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index a7a7c2b..27fead4 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_type.h"
 #include "executor/spi.h"
 #include "lib/stringinfo.h"
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index de881bf..61d6d3a 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -54,6 +54,7 @@
 #include <locale.h>
 #include <time.h>
 
+#include "access/htup.h"
 #include "catalog/pg_collation.h"
 #include "catalog/pg_control.h"
 #include "mb/pg_wchar.h"
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index 58dc985..ae35914 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -23,6 +23,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "catalog/indexing.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_class.h"
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index dd58f4e..748552a 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -30,6 +30,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "access/sysattr.h"
 #include "catalog/pg_collation.h"
diff --git a/src/backend/utils/adt/rowtypes.c b/src/backend/utils/adt/rowtypes.c
index ba7fde4..cbdde84 100644
--- a/src/backend/utils/adt/rowtypes.c
+++ b/src/backend/utils/adt/rowtypes.c
@@ -16,6 +16,7 @@
 
 #include <ctype.h>
 
+#include "access/htup.h"
 #include "catalog/pg_type.h"
 #include "libpq/pqformat.h"
 #include "utils/builtins.h"
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 9ca3b9d..4636119 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -18,6 +18,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 95e4627..427df63 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -92,6 +92,7 @@
 #include <math.h>
 
 #include "access/gin.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/index.h"
 #include "catalog/pg_collation.h"
diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c
index a7e3ae9..6e8070e 100644
--- a/src/backend/utils/adt/trigfuncs.c
+++ b/src/backend/utils/adt/trigfuncs.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "commands/trigger.h"
 #include "utils/builtins.h"
 #include "utils/rel.h"
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 44d327d..4a3562c 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -56,6 +56,7 @@
 #include <libxml/xpathInternals.h>
 #endif   /* USE_LIBXML */
 
+#include "access/htup.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_type.h"
 #include "commands/dbcommands.h"
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 9ccfc4f..81b8951 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -95,6 +95,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
 #include "miscadmin.h"
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 64b413b..6f85d78 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -16,6 +16,7 @@
 #include "postgres.h"
 
 #include "access/hash.h"
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "bootstrap/bootstrap.h"
 #include "catalog/pg_amop.h"
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 2e6776e..c9caabd 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -30,6 +30,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 
+#include "access/htup.h"
 #include "access/reloptions.h"
 #include "access/sysattr.h"
 #include "access/transam.h"
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index c365ec7..b3648a4 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -20,6 +20,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c
index b408de0..4703bd2 100644
--- a/src/backend/utils/cache/ts_cache.c
+++ b/src/backend/utils/cache/ts_cache.c
@@ -28,6 +28,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/xact.h"
 #include "catalog/indexing.h"
 #include "catalog/namespace.h"
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index 72798ef..8bcae6c 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -47,6 +47,7 @@
 
 #include "access/hash.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "catalog/indexing.h"
 #include "catalog/pg_enum.h"
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index addf95b..0105924 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/namespace.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index fb376a0..44fd760 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -29,6 +29,7 @@
 #include <utime.h>
 #endif
 
+#include "access/htup.h"
 #include "catalog/pg_authid.h"
 #include "mb/pg_wchar.h"
 #include "miscadmin.h"
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 1baa67d..24a959e 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -20,6 +20,7 @@
 #include <unistd.h>
 
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/sysattr.h"
 #include "access/xact.h"
 #include "catalog/catalog.h"
diff --git a/src/backend/utils/misc/superuser.c b/src/backend/utils/misc/superuser.c
index 9accb9d..e781522 100644
--- a/src/backend/utils/misc/superuser.c
+++ b/src/backend/utils/misc/superuser.c
@@ -20,6 +20,7 @@
  */
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "catalog/pg_authid.h"
 #include "utils/inval.h"
 #include "utils/syscache.h"
diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index d5a2003..c30090a 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -100,6 +100,7 @@
 
 #include <limits.h>
 
+#include "access/htup.h"
 #include "access/nbtree.h"
 #include "catalog/index.h"
 #include "commands/tablespace.h"
diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c
index 8a7931b..e1483eb 100644
--- a/src/backend/utils/sort/tuplestore.c
+++ b/src/backend/utils/sort/tuplestore.c
@@ -54,6 +54,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "commands/tablespace.h"
 #include "executor/executor.h"
 #include "storage/buffile.h"
diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c
index 4caef9c..1e01dd4 100644
--- a/src/backend/utils/time/tqual.c
+++ b/src/backend/utils/time/tqual.c
@@ -57,6 +57,7 @@
 
 #include "postgres.h"
 
+#include "access/htup.h"
 #include "access/multixact.h"
 #include "access/subtrans.h"
 #include "access/transam.h"
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h
index 660a854..b19e7b9 100644
--- a/src/include/access/heapam.h
+++ b/src/include/access/heapam.h
@@ -18,7 +18,10 @@
 #include "access/skey.h"
 #include "access/xlog.h"
 #include "nodes/primnodes.h"
+#include "storage/bufpage.h"
+#include "storage/itemptr.h"
 #include "storage/lock.h"
+#include "storage/relfilenode.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
 
@@ -125,6 +128,9 @@ extern void heap_restrpos(HeapScanDesc scan);
 
 extern void heap_sync(Relation relation);
 
+extern void HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple,
+									   TransactionId *latestRemovedXid);
+
 extern void heap_redo(XLogRecPtr lsn, XLogRecord *rptr);
 extern void heap_desc(StringInfo buf, uint8 xl_info, char *rec);
 extern void heap2_redo(XLogRecPtr lsn, XLogRecord *rptr);
diff --git a/src/include/access/hio.h b/src/include/access/hio.h
index a3f8a45..399157e 100644
--- a/src/include/access/hio.h
+++ b/src/include/access/hio.h
@@ -15,7 +15,7 @@
 #define HIO_H
 
 #include "access/heapam.h"
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "utils/relcache.h"
 #include "storage/buf.h"
 
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index b289e14..48aa17b 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -14,10 +14,9 @@
 #ifndef HTUP_H
 #define HTUP_H
 
-#include "access/tupdesc.h"
+#include "access/tupbasics.h"
 #include "access/tupmacs.h"
 #include "storage/bufpage.h"
-#include "storage/itemptr.h"
 #include "storage/relfilenode.h"
 
 /*
@@ -130,7 +129,7 @@ typedef struct DatumTupleFields
 	 */
 } DatumTupleFields;
 
-typedef struct HeapTupleHeaderData
+struct HeapTupleHeaderData
 {
 	union
 	{
@@ -153,9 +152,8 @@ typedef struct HeapTupleHeaderData
 	bits8		t_bits[1];		/* bitmap of NULLs -- VARIABLE LENGTH */
 
 	/* MORE DATA FOLLOWS AT END OF STRUCT */
-} HeapTupleHeaderData;
-
-typedef HeapTupleHeaderData *HeapTupleHeader;
+};
+/* typedef appears in tupbasics.h */
 
 /*
  * information stored in t_infomask:
@@ -458,7 +456,7 @@ do { \
 #define MINIMAL_TUPLE_DATA_OFFSET \
 	offsetof(MinimalTupleData, t_infomask2)
 
-typedef struct MinimalTupleData
+struct MinimalTupleData
 {
 	uint32		t_len;			/* actual length of minimal tuple */
 
@@ -477,54 +475,9 @@ typedef struct MinimalTupleData
 	bits8		t_bits[1];		/* bitmap of NULLs -- VARIABLE LENGTH */
 
 	/* MORE DATA FOLLOWS AT END OF STRUCT */
-} MinimalTupleData;
-
-typedef MinimalTupleData *MinimalTuple;
-
-
-/*
- * HeapTupleData is an in-memory data structure that points to a tuple.
- *
- * There are several ways in which this data structure is used:
- *
- * * Pointer to a tuple in a disk buffer: t_data points directly into the
- *	 buffer (which the code had better be holding a pin on, but this is not
- *	 reflected in HeapTupleData itself).
- *
- * * Pointer to nothing: t_data is NULL.  This is used as a failure indication
- *	 in some functions.
- *
- * * Part of a palloc'd tuple: the HeapTupleData itself and the tuple
- *	 form a single palloc'd chunk.  t_data points to the memory location
- *	 immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE).
- *	 This is the output format of heap_form_tuple and related routines.
- *
- * * Separately allocated tuple: t_data points to a palloc'd chunk that
- *	 is not adjacent to the HeapTupleData.	(This case is deprecated since
- *	 it's difficult to tell apart from case #1.  It should be used only in
- *	 limited contexts where the code knows that case #1 will never apply.)
- *
- * * Separately allocated minimal tuple: t_data points MINIMAL_TUPLE_OFFSET
- *	 bytes before the start of a MinimalTuple.	As with the previous case,
- *	 this can't be told apart from case #1 by inspection; code setting up
- *	 or destroying this representation has to know what it's doing.
- *
- * t_len should always be valid, except in the pointer-to-nothing case.
- * t_self and t_tableOid should be valid if the HeapTupleData points to
- * a disk buffer, or if it represents a copy of a tuple on disk.  They
- * should be explicitly set invalid in manufactured tuples.
- */
-typedef struct HeapTupleData
-{
-	uint32		t_len;			/* length of *t_data */
-	ItemPointerData t_self;		/* SelfItemPointer */
-	Oid			t_tableOid;		/* table the tuple came from */
-	HeapTupleHeader t_data;		/* -> tuple header and data */
-} HeapTupleData;
-
-typedef HeapTupleData *HeapTuple;
+};
+/* typedef appears in tupbasics.h */
 
-#define HEAPTUPLESIZE	MAXALIGN(sizeof(HeapTupleData))
 
 /*
  * GETSTRUCT - given a HeapTuple pointer, return address of the user data
@@ -534,7 +487,6 @@ typedef HeapTupleData *HeapTuple;
 /*
  * Accessor macros to be used with HeapTuple pointers.
  */
-#define HeapTupleIsValid(tuple) PointerIsValid(tuple)
 
 #define HeapTupleHasNulls(tuple) \
 		(((tuple)->t_data->t_infomask & HEAP_HASNULL) != 0)
@@ -793,8 +745,6 @@ typedef struct xl_heap_visible
 
 #define SizeOfHeapVisible (offsetof(xl_heap_visible, cutoff_xid) + sizeof(TransactionId))
 
-extern void HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple,
-									   TransactionId *latestRemovedXid);
 
 /* HeapTupleHeader functions implemented in utils/time/combocid.c */
 extern CommandId HeapTupleHeaderGetCmin(HeapTupleHeader tup);
@@ -893,39 +843,9 @@ extern void heap_fill_tuple(TupleDesc tupleDesc,
 				Datum *values, bool *isnull,
 				char *data, Size data_size,
 				uint16 *infomask, bits8 *bit);
-extern bool heap_attisnull(HeapTuple tup, int attnum);
 extern Datum nocachegetattr(HeapTuple tup, int attnum,
 			   TupleDesc att);
 extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
 				bool *isnull);
-extern HeapTuple heap_copytuple(HeapTuple tuple);
-extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest);
-extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor,
-				Datum *values, bool *isnull);
-extern HeapTuple heap_modify_tuple(HeapTuple tuple,
-				  TupleDesc tupleDesc,
-				  Datum *replValues,
-				  bool *replIsnull,
-				  bool *doReplace);
-extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc,
-				  Datum *values, bool *isnull);
-
-/* these three are deprecated versions of the three above: */
-extern HeapTuple heap_formtuple(TupleDesc tupleDescriptor,
-			   Datum *values, char *nulls);
-extern HeapTuple heap_modifytuple(HeapTuple tuple,
-				 TupleDesc tupleDesc,
-				 Datum *replValues,
-				 char *replNulls,
-				 char *replActions);
-extern void heap_deformtuple(HeapTuple tuple, TupleDesc tupleDesc,
-				 Datum *values, char *nulls);
-extern void heap_freetuple(HeapTuple htup);
-extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor,
-						Datum *values, bool *isnull);
-extern void heap_free_minimal_tuple(MinimalTuple mtup);
-extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup);
-extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup);
-extern MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup);
 
 #endif   /* HTUP_H */
diff --git a/src/include/access/reloptions.h b/src/include/access/reloptions.h
index 42af4a9..c37b4ec 100644
--- a/src/include/access/reloptions.h
+++ b/src/include/access/reloptions.h
@@ -19,7 +19,7 @@
 #ifndef RELOPTIONS_H
 #define RELOPTIONS_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "nodes/pg_list.h"
 
 /* types supported by reloptions */
diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h
index 2e967e1..9d9a9c8 100644
--- a/src/include/access/relscan.h
+++ b/src/include/access/relscan.h
@@ -16,6 +16,7 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup.h"
 #include "access/itup.h"
 #include "access/tupdesc.h"
 
diff --git a/src/include/access/rewriteheap.h b/src/include/access/rewriteheap.h
index 1f6da61..270f147 100644
--- a/src/include/access/rewriteheap.h
+++ b/src/include/access/rewriteheap.h
@@ -13,7 +13,7 @@
 #ifndef REWRITE_HEAP_H
 #define REWRITE_HEAP_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "utils/relcache.h"
 
 /* struct definition is private to rewriteheap.c */
diff --git a/src/include/access/tupbasics.h b/src/include/access/tupbasics.h
new file mode 100644
index 0000000..c274f9e
--- /dev/null
+++ b/src/include/access/tupbasics.h
@@ -0,0 +1,111 @@
+/*-------------------------------------------------------------------------
+ * tupbasics.h
+ * 		Barebones tuple definitions
+ *
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ *
+ * src/include/access/tupbasics.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef TUPBASICS_H
+#define TUPBASICS_H
+
+#include "access/tupdesc.h"
+#include "storage/itemptr.h"
+
+/* typedefs for structs defined in htup.h */
+
+typedef struct HeapTupleHeaderData HeapTupleHeaderData;
+
+typedef HeapTupleHeaderData *HeapTupleHeader;
+
+typedef struct MinimalTupleData MinimalTupleData;
+
+typedef MinimalTupleData *MinimalTuple;
+
+/*
+ * HeapTupleData is an in-memory data structure that points to a tuple.
+ *
+ * There are several ways in which this data structure is used:
+ *
+ * * Pointer to a tuple in a disk buffer: t_data points directly into the
+ *	 buffer (which the code had better be holding a pin on, but this is not
+ *	 reflected in HeapTupleData itself).
+ *
+ * * Pointer to nothing: t_data is NULL.  This is used as a failure indication
+ *	 in some functions.
+ *
+ * * Part of a palloc'd tuple: the HeapTupleData itself and the tuple
+ *	 form a single palloc'd chunk.  t_data points to the memory location
+ *	 immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE).
+ *	 This is the output format of heap_form_tuple and related routines.
+ *
+ * * Separately allocated tuple: t_data points to a palloc'd chunk that
+ *	 is not adjacent to the HeapTupleData.	(This case is deprecated since
+ *	 it's difficult to tell apart from case #1.  It should be used only in
+ *	 limited contexts where the code knows that case #1 will never apply.)
+ *
+ * * Separately allocated minimal tuple: t_data points MINIMAL_TUPLE_OFFSET
+ *	 bytes before the start of a MinimalTuple.	As with the previous case,
+ *	 this can't be told apart from case #1 by inspection; code setting up
+ *	 or destroying this representation has to know what it's doing.
+ *
+ * t_len should always be valid, except in the pointer-to-nothing case.
+ * t_self and t_tableOid should be valid if the HeapTupleData points to
+ * a disk buffer, or if it represents a copy of a tuple on disk.  They
+ * should be explicitly set invalid in manufactured tuples.
+ */
+typedef struct HeapTupleData
+{
+	uint32		t_len;			/* length of *t_data */
+	ItemPointerData t_self;		/* SelfItemPointer */
+	Oid			t_tableOid;		/* table the tuple came from */
+	HeapTupleHeader t_data;		/* -> tuple header and data */
+} HeapTupleData;
+
+typedef HeapTupleData *HeapTuple;
+
+#define HEAPTUPLESIZE	MAXALIGN(sizeof(HeapTupleData))
+
+/*
+ * Accessor macros to be used with HeapTuple pointers.
+ */
+#define HeapTupleIsValid(tuple) PointerIsValid(tuple)
+
+/* prototypes for functions in common/heaptuple.c */
+extern bool heap_attisnull(HeapTuple tup, int attnum);
+extern HeapTuple heap_copytuple(HeapTuple tuple);
+extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest);
+extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor,
+				Datum *values, bool *isnull);
+extern HeapTuple heap_modify_tuple(HeapTuple tuple,
+				  TupleDesc tupleDesc,
+				  Datum *replValues,
+				  bool *replIsnull,
+				  bool *doReplace);
+extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc,
+				  Datum *values, bool *isnull);
+
+/* these three are deprecated versions of the three above: */
+extern HeapTuple heap_formtuple(TupleDesc tupleDescriptor,
+			   Datum *values, char *nulls);
+extern HeapTuple heap_modifytuple(HeapTuple tuple,
+				 TupleDesc tupleDesc,
+				 Datum *replValues,
+				 char *replNulls,
+				 char *replActions);
+extern void heap_deformtuple(HeapTuple tuple, TupleDesc tupleDesc,
+				 Datum *values, char *nulls);
+
+extern void heap_freetuple(HeapTuple htup);
+extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor,
+						Datum *values, bool *isnull);
+extern void heap_free_minimal_tuple(MinimalTuple mtup);
+extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup);
+extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup);
+extern MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup);
+
+#endif /* TUPBASICS_H */
diff --git a/src/include/access/tupconvert.h b/src/include/access/tupconvert.h
index 7511aa6..17f5a72 100644
--- a/src/include/access/tupconvert.h
+++ b/src/include/access/tupconvert.h
@@ -14,7 +14,7 @@
 #ifndef TUPCONVERT_H
 #define TUPCONVERT_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 
 
 typedef struct TupleConversionMap
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 450ec25..6592813 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -15,7 +15,7 @@
 #ifndef INDEXING_H
 #define INDEXING_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "utils/relcache.h"
 
 /*
diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h
index 9ceb086..2edcd78 100644
--- a/src/include/commands/tablecmds.h
+++ b/src/include/commands/tablecmds.h
@@ -14,7 +14,7 @@
 #ifndef TABLECMDS_H
 #define TABLECMDS_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "nodes/parsenodes.h"
 #include "storage/lock.h"
 #include "utils/relcache.h"
diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h
index b72cfc4..c3447c1 100644
--- a/src/include/commands/typecmds.h
+++ b/src/include/commands/typecmds.h
@@ -14,7 +14,7 @@
 #ifndef TYPECMDS_H
 #define TYPECMDS_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "nodes/parsenodes.h"
 
 
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index 7a50d2f..7eac60a 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -14,7 +14,7 @@
 #ifndef VACUUM_H
 #define VACUUM_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "catalog/pg_statistic.h"
 #include "catalog/pg_type.h"
 #include "nodes/parsenodes.h"
diff --git a/src/include/executor/tuptable.h b/src/include/executor/tuptable.h
index 4db8c87..331a500 100644
--- a/src/include/executor/tuptable.h
+++ b/src/include/executor/tuptable.h
@@ -14,7 +14,7 @@
 #ifndef TUPTABLE_H
 #define TUPTABLE_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "storage/buf.h"
 
 /*----------
diff --git a/src/include/parser/parse_oper.h b/src/include/parser/parse_oper.h
index 3d05300..964b35a 100644
--- a/src/include/parser/parse_oper.h
+++ b/src/include/parser/parse_oper.h
@@ -14,7 +14,7 @@
 #ifndef PARSE_OPER_H
 #define PARSE_OPER_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "parser/parse_node.h"
 
 
diff --git a/src/include/parser/parse_type.h b/src/include/parser/parse_type.h
index c283a9f..e7d90f7 100644
--- a/src/include/parser/parse_type.h
+++ b/src/include/parser/parse_type.h
@@ -13,7 +13,7 @@
 #ifndef PARSE_TYPE_H
 #define PARSE_TYPE_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "parser/parse_node.h"
 
 
diff --git a/src/include/storage/predicate.h b/src/include/storage/predicate.h
index 7ec79e0..76ea4eb 100644
--- a/src/include/storage/predicate.h
+++ b/src/include/storage/predicate.h
@@ -14,6 +14,7 @@
 #ifndef PREDICATE_H
 #define PREDICATE_H
 
+#include "storage/block.h"
 #include "utils/relcache.h"
 #include "utils/snapshot.h"
 
diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h
index d91700a..5a88c59 100644
--- a/src/include/utils/catcache.h
+++ b/src/include/utils/catcache.h
@@ -20,7 +20,7 @@
 #ifndef CATCACHE_H
 #define CATCACHE_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "access/skey.h"
 #include "lib/dllist.h"
 #include "utils/relcache.h"
diff --git a/src/include/utils/inval.h b/src/include/utils/inval.h
index c8815e5..374be45 100644
--- a/src/include/utils/inval.h
+++ b/src/include/utils/inval.h
@@ -14,7 +14,8 @@
 #ifndef INVAL_H
 #define INVAL_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
+#include "storage/relfilenode.h"
 #include "utils/relcache.h"
 
 
diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h
index 4bf1029..ec4b245 100644
--- a/src/include/utils/lsyscache.h
+++ b/src/include/utils/lsyscache.h
@@ -13,7 +13,7 @@
 #ifndef LSYSCACHE_H
 #define LSYSCACHE_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 
 /* Result list element for get_op_btree_interpretation */
 typedef struct OpBtreeInterpretation
diff --git a/src/include/utils/selfuncs.h b/src/include/utils/selfuncs.h
index 87c6554..1c27a37 100644
--- a/src/include/utils/selfuncs.h
+++ b/src/include/utils/selfuncs.h
@@ -16,7 +16,7 @@
 #define SELFUNCS_H
 
 #include "fmgr.h"
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "nodes/relation.h"
 
 
diff --git a/src/include/utils/snapshot.h b/src/include/utils/snapshot.h
index 900272e..3619c2c 100644
--- a/src/include/utils/snapshot.h
+++ b/src/include/utils/snapshot.h
@@ -13,7 +13,7 @@
 #ifndef SNAPSHOT_H
 #define SNAPSHOT_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "storage/buf.h"
 
 
diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h
index d59dd4e..80f9f71 100644
--- a/src/include/utils/syscache.h
+++ b/src/include/utils/syscache.h
@@ -16,6 +16,7 @@
 #ifndef SYSCACHE_H
 #define SYSCACHE_H
 
+#include "access/tupbasics.h"
 #include "utils/catcache.h"
 
 /*
diff --git a/src/pl/plpython/plpy_typeio.h b/src/pl/plpython/plpy_typeio.h
index d2dfa66..e70e812 100644
--- a/src/pl/plpython/plpy_typeio.h
+++ b/src/pl/plpython/plpy_typeio.h
@@ -5,7 +5,7 @@
 #ifndef PLPY_TYPEIO_H
 #define PLPY_TYPEIO_H
 
-#include "access/htup.h"
+#include "access/tupbasics.h"
 #include "fmgr.h"
 #include "storage/itemptr.h"