Re: relscan.h split

Alvaro Herrera <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
Tom Lane wrote:

> Perhaps a better idea would be to put the opaque-pointer typedefs into
> heapam.h and genam.h respectively, and then see where you could remove
> inclusions of relscan.h.

Hmm, this seems to be closely equivalent.  Patch attached.  I also moved
SysScanDescData from genam.h to relscan.h.

> Also, it seemed like some of those .c files had no business poking into
> the scan structs anyway; particularly contrib.  Did you check whether
> the inclusions could be avoided?

Not really, unless we were to provide something a routine that returns
the current block of a scan.  There are a few occurrences of this:

        /* must hold a buffer lock to call HeapTupleSatisfiesUpdate */
        LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE);

which of course need the definition.  Maybe providing it is not a bad
idea, because that kind of coding is used in the backend too.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
relscan-remove.patch (text/x-diff, 24.1 KB)
Index: contrib/pgrowlocks/pgrowlocks.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/contrib/pgrowlocks/pgrowlocks.c,v
retrieving revision 1.10
diff -c -p -r1.10 pgrowlocks.c
*** contrib/pgrowlocks/pgrowlocks.c	12 May 2008 00:00:43 -0000	1.10
--- contrib/pgrowlocks/pgrowlocks.c	14 Jun 2008 23:16:20 -0000
***************
*** 26,31 ****
--- 26,32 ----
  
  #include "access/heapam.h"
  #include "access/multixact.h"
+ #include "access/relscan.h"
  #include "access/xact.h"
  #include "catalog/namespace.h"
  #include "funcapi.h"
Index: contrib/pgstattuple/pgstattuple.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/contrib/pgstattuple/pgstattuple.c,v
retrieving revision 1.35
diff -c -p -r1.35 pgstattuple.c
*** contrib/pgstattuple/pgstattuple.c	16 May 2008 17:31:17 -0000	1.35
--- contrib/pgstattuple/pgstattuple.c	14 Jun 2008 23:20:41 -0000
***************
*** 29,34 ****
--- 29,35 ----
  #include "access/heapam.h"
  #include "access/htup.h"
  #include "access/nbtree.h"
+ #include "access/relscan.h"
  #include "catalog/namespace.h"
  #include "funcapi.h"
  #include "miscadmin.h"
*************** pgstat_heap(Relation rel, FunctionCallIn
*** 262,268 ****
  	/* Disable syncscan because we assume we scan from block zero upwards */
  	scan = heap_beginscan_strat(rel, SnapshotAny, 0, NULL, true, false);
  
! 	nblocks = scan->rs_nblocks; /* # blocks to be scanned */
  
  	/* scan the relation */
  	while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
--- 263,269 ----
  	/* Disable syncscan because we assume we scan from block zero upwards */
  	scan = heap_beginscan_strat(rel, SnapshotAny, 0, NULL, true, false);
  
! 	nblocks = RelationGetNumberOfBlocks(rel); /* # blocks to be scanned */
  
  	/* scan the relation */
  	while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
Index: src/backend/access/gin/ginget.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/gin/ginget.c,v
retrieving revision 1.16
diff -c -p -r1.16 ginget.c
*** src/backend/access/gin/ginget.c	16 May 2008 16:31:01 -0000	1.16
--- src/backend/access/gin/ginget.c	14 Jun 2008 23:05:11 -0000
***************
*** 15,20 ****
--- 15,21 ----
  #include "postgres.h"
  
  #include "access/gin.h"
+ #include "access/relscan.h"
  #include "catalog/index.h"
  #include "miscadmin.h"
  #include "storage/bufmgr.h"
Index: src/backend/access/gin/ginscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/gin/ginscan.c,v
retrieving revision 1.14
diff -c -p -r1.14 ginscan.c
*** src/backend/access/gin/ginscan.c	16 May 2008 16:31:01 -0000	1.14
--- src/backend/access/gin/ginscan.c	14 Jun 2008 23:05:01 -0000
***************
*** 14,21 ****
  
  #include "postgres.h"
  
- #include "access/genam.h"
  #include "access/gin.h"
  #include "pgstat.h"
  #include "storage/bufmgr.h"
  #include "utils/memutils.h"
--- 14,21 ----
  
  #include "postgres.h"
  
  #include "access/gin.h"
+ #include "access/relscan.h"
  #include "pgstat.h"
  #include "storage/bufmgr.h"
  #include "utils/memutils.h"
Index: src/backend/access/gist/gistget.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/gist/gistget.c,v
retrieving revision 1.73
diff -c -p -r1.73 gistget.c
*** src/backend/access/gist/gistget.c	12 May 2008 00:00:44 -0000	1.73
--- src/backend/access/gist/gistget.c	14 Jun 2008 22:53:35 -0000
***************
*** 15,20 ****
--- 15,21 ----
  #include "postgres.h"
  
  #include "access/gist_private.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "miscadmin.h"
  #include "pgstat.h"
Index: src/backend/access/gist/gistscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/gist/gistscan.c,v
retrieving revision 1.69
diff -c -p -r1.69 gistscan.c
*** src/backend/access/gist/gistscan.c	12 May 2008 00:00:44 -0000	1.69
--- src/backend/access/gist/gistscan.c	14 Jun 2008 22:54:23 -0000
***************
*** 17,22 ****
--- 17,23 ----
  #include "access/genam.h"
  #include "access/gist_private.h"
  #include "access/gistscan.h"
+ #include "access/relscan.h"
  #include "storage/bufmgr.h"
  #include "utils/memutils.h"
  
Index: src/backend/access/hash/hash.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/hash/hash.c,v
retrieving revision 1.103
diff -c -p -r1.103 hash.c
*** src/backend/access/hash/hash.c	12 May 2008 00:00:44 -0000	1.103
--- src/backend/access/hash/hash.c	14 Jun 2008 23:00:32 -0000
***************
*** 18,25 ****
  
  #include "postgres.h"
  
- #include "access/genam.h"
  #include "access/hash.h"
  #include "catalog/index.h"
  #include "commands/vacuum.h"
  #include "miscadmin.h"
--- 18,25 ----
  
  #include "postgres.h"
  
  #include "access/hash.h"
+ #include "access/relscan.h"
  #include "catalog/index.h"
  #include "commands/vacuum.h"
  #include "miscadmin.h"
Index: src/backend/access/hash/hashscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/hash/hashscan.c,v
retrieving revision 1.44
diff -c -p -r1.44 hashscan.c
*** src/backend/access/hash/hashscan.c	7 Mar 2008 15:59:03 -0000	1.44
--- src/backend/access/hash/hashscan.c	14 Jun 2008 23:04:22 -0000
***************
*** 16,21 ****
--- 16,22 ----
  #include "postgres.h"
  
  #include "access/hash.h"
+ #include "access/relscan.h"
  #include "utils/memutils.h"
  #include "utils/resowner.h"
  
Index: src/backend/access/hash/hashsearch.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/hash/hashsearch.c,v
retrieving revision 1.52
diff -c -p -r1.52 hashsearch.c
*** src/backend/access/hash/hashsearch.c	12 May 2008 00:00:44 -0000	1.52
--- src/backend/access/hash/hashsearch.c	14 Jun 2008 23:04:34 -0000
***************
*** 15,20 ****
--- 15,21 ----
  #include "postgres.h"
  
  #include "access/hash.h"
+ #include "access/relscan.h"
  #include "pgstat.h"
  #include "storage/bufmgr.h"
  
Index: src/backend/access/hash/hashutil.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/hash/hashutil.c,v
retrieving revision 1.54
diff -c -p -r1.54 hashutil.c
*** src/backend/access/hash/hashutil.c	12 May 2008 00:00:44 -0000	1.54
--- src/backend/access/hash/hashutil.c	14 Jun 2008 23:04:46 -0000
***************
*** 14,22 ****
   */
  #include "postgres.h"
  
- #include "access/genam.h"
  #include "access/hash.h"
  #include "access/reloptions.h"
  #include "executor/execdebug.h"
  #include "storage/bufmgr.h"
  #include "utils/lsyscache.h"
--- 14,22 ----
   */
  #include "postgres.h"
  
  #include "access/hash.h"
  #include "access/reloptions.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "storage/bufmgr.h"
  #include "utils/lsyscache.h"
Index: src/backend/access/heap/heapam.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/heap/heapam.c,v
retrieving revision 1.259
diff -c -p -r1.259 heapam.c
*** src/backend/access/heap/heapam.c	12 Jun 2008 09:12:30 -0000	1.259
--- src/backend/access/heap/heapam.c	14 Jun 2008 22:54:46 -0000
***************
*** 42,47 ****
--- 42,48 ----
  #include "access/heapam.h"
  #include "access/hio.h"
  #include "access/multixact.h"
+ #include "access/relscan.h"
  #include "access/sysattr.h"
  #include "access/transam.h"
  #include "access/tuptoaster.h"
Index: src/backend/access/index/genam.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/index/genam.c,v
retrieving revision 1.70
diff -c -p -r1.70 genam.c
*** src/backend/access/index/genam.c	8 Jun 2008 23:16:43 -0000	1.70
--- src/backend/access/index/genam.c	14 Jun 2008 22:55:05 -0000
***************
*** 21,26 ****
--- 21,27 ----
  
  #include "access/genam.h"
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "access/transam.h"
  #include "miscadmin.h"
  #include "pgstat.h"
Index: src/backend/access/index/indexam.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/index/indexam.c,v
retrieving revision 1.108
diff -c -p -r1.108 indexam.c
*** src/backend/access/index/indexam.c	12 May 2008 00:00:45 -0000	1.108
--- src/backend/access/index/indexam.c	14 Jun 2008 22:55:22 -0000
***************
*** 64,69 ****
--- 64,70 ----
  
  #include "access/genam.h"
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "access/transam.h"
  #include "pgstat.h"
  #include "storage/bufmgr.h"
Index: src/backend/access/nbtree/nbtree.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/nbtree/nbtree.c,v
retrieving revision 1.160
diff -c -p -r1.160 nbtree.c
*** src/backend/access/nbtree/nbtree.c	12 May 2008 00:00:45 -0000	1.160
--- src/backend/access/nbtree/nbtree.c	14 Jun 2008 22:55:52 -0000
***************
*** 20,25 ****
--- 20,26 ----
  
  #include "access/genam.h"
  #include "access/nbtree.h"
+ #include "access/relscan.h"
  #include "catalog/index.h"
  #include "commands/vacuum.h"
  #include "miscadmin.h"
Index: src/backend/access/nbtree/nbtsearch.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/nbtree/nbtsearch.c,v
retrieving revision 1.117
diff -c -p -r1.117 nbtsearch.c
*** src/backend/access/nbtree/nbtsearch.c	12 May 2008 00:00:45 -0000	1.117
--- src/backend/access/nbtree/nbtsearch.c	14 Jun 2008 22:56:03 -0000
***************
*** 17,22 ****
--- 17,23 ----
  
  #include "access/genam.h"
  #include "access/nbtree.h"
+ #include "access/relscan.h"
  #include "pgstat.h"
  #include "storage/bufmgr.h"
  #include "utils/lsyscache.h"
Index: src/backend/access/nbtree/nbtutils.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/access/nbtree/nbtutils.c,v
retrieving revision 1.90
diff -c -p -r1.90 nbtutils.c
*** src/backend/access/nbtree/nbtutils.c	12 May 2008 00:00:45 -0000	1.90
--- src/backend/access/nbtree/nbtutils.c	14 Jun 2008 22:56:15 -0000
***************
*** 20,25 ****
--- 20,26 ----
  #include "access/genam.h"
  #include "access/nbtree.h"
  #include "access/reloptions.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "miscadmin.h"
  #include "storage/bufmgr.h"
Index: src/backend/catalog/index.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/catalog/index.c,v
retrieving revision 1.299
diff -c -p -r1.299 index.c
*** src/backend/catalog/index.c	12 May 2008 20:01:59 -0000	1.299
--- src/backend/catalog/index.c	14 Jun 2008 22:56:46 -0000
***************
*** 25,30 ****
--- 25,31 ----
  
  #include "access/genam.h"
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "access/sysattr.h"
  #include "access/transam.h"
  #include "access/xact.h"
Index: src/backend/commands/cluster.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/commands/cluster.c,v
retrieving revision 1.176
diff -c -p -r1.176 cluster.c
*** src/backend/commands/cluster.c	12 May 2008 20:01:59 -0000	1.176
--- src/backend/commands/cluster.c	14 Jun 2008 22:57:27 -0000
***************
*** 19,24 ****
--- 19,25 ----
  
  #include "access/genam.h"
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "access/rewriteheap.h"
  #include "access/transam.h"
  #include "access/xact.h"
Index: src/backend/commands/tablecmds.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/commands/tablecmds.c,v
retrieving revision 1.256
diff -c -p -r1.256 tablecmds.c
*** src/backend/commands/tablecmds.c	14 Jun 2008 18:04:33 -0000	1.256
--- src/backend/commands/tablecmds.c	14 Jun 2008 22:57:55 -0000
***************
*** 17,22 ****
--- 17,23 ----
  #include "access/genam.h"
  #include "access/heapam.h"
  #include "access/reloptions.h"
+ #include "access/relscan.h"
  #include "access/sysattr.h"
  #include "access/xact.h"
  #include "catalog/catalog.h"
Index: src/backend/executor/nodeBitmapHeapscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/executor/nodeBitmapHeapscan.c,v
retrieving revision 1.28
diff -c -p -r1.28 nodeBitmapHeapscan.c
*** src/backend/executor/nodeBitmapHeapscan.c	13 May 2008 15:44:08 -0000	1.28
--- src/backend/executor/nodeBitmapHeapscan.c	14 Jun 2008 22:58:36 -0000
***************
*** 36,41 ****
--- 36,42 ----
  #include "postgres.h"
  
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "executor/nodeBitmapHeapscan.h"
  #include "pgstat.h"
Index: src/backend/executor/nodeIndexscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/executor/nodeIndexscan.c,v
retrieving revision 1.128
diff -c -p -r1.128 nodeIndexscan.c
*** src/backend/executor/nodeIndexscan.c	13 Apr 2008 20:51:20 -0000	1.128
--- src/backend/executor/nodeIndexscan.c	14 Jun 2008 22:58:50 -0000
***************
*** 26,31 ****
--- 26,32 ----
  
  #include "access/genam.h"
  #include "access/nbtree.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "executor/nodeIndexscan.h"
  #include "nodes/nodeFuncs.h"
Index: src/backend/executor/nodeSeqscan.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/executor/nodeSeqscan.c,v
retrieving revision 1.64
diff -c -p -r1.64 nodeSeqscan.c
*** src/backend/executor/nodeSeqscan.c	1 Jan 2008 19:45:49 -0000	1.64
--- src/backend/executor/nodeSeqscan.c	14 Jun 2008 22:59:06 -0000
***************
*** 25,30 ****
--- 25,31 ----
  #include "postgres.h"
  
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "executor/execdebug.h"
  #include "executor/nodeSeqscan.h"
  
Index: src/backend/utils/cache/catcache.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/utils/cache/catcache.c,v
retrieving revision 1.143
diff -c -p -r1.143 catcache.c
*** src/backend/utils/cache/catcache.c	12 May 2008 00:00:51 -0000	1.143
--- src/backend/utils/cache/catcache.c	14 Jun 2008 23:06:31 -0000
***************
*** 17,22 ****
--- 17,23 ----
  #include "access/genam.h"
  #include "access/hash.h"
  #include "access/heapam.h"
+ #include "access/relscan.h"
  #include "access/sysattr.h"
  #include "access/valid.h"
  #include "catalog/pg_operator.h"
Index: src/include/access/genam.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/genam.h,v
retrieving revision 1.73
diff -c -p -r1.73 genam.h
*** src/include/access/genam.h	8 Jun 2008 22:41:04 -0000	1.73
--- src/include/access/genam.h	14 Jun 2008 22:46:54 -0000
***************
*** 14,25 ****
  #ifndef GENAM_H
  #define GENAM_H
  
- #include "access/relscan.h"
  #include "access/sdir.h"
  #include "nodes/tidbitmap.h"
  #include "storage/buf.h"
  #include "storage/lock.h"
  #include "utils/rel.h"
  
  /*
   * Struct for statistics returned by ambuild
--- 14,26 ----
  #ifndef GENAM_H
  #define GENAM_H
  
  #include "access/sdir.h"
+ #include "access/skey.h"
  #include "nodes/tidbitmap.h"
  #include "storage/buf.h"
  #include "storage/lock.h"
  #include "utils/rel.h"
+ #include "utils/snapshot.h"
  
  /*
   * Struct for statistics returned by ambuild
*************** typedef struct IndexBulkDeleteResult
*** 73,93 ****
  /* Typedef for callback function to determine if a tuple is bulk-deletable */
  typedef bool (*IndexBulkDeleteCallback) (ItemPointer itemptr, void *state);
  
! /* Struct for heap-or-index scans of system tables */
! typedef struct SysScanDescData
! {
! 	Relation	heap_rel;		/* catalog being scanned */
! 	Relation	irel;			/* NULL if doing heap scan */
! 	HeapScanDesc scan;			/* only valid in heap-scan case */
! 	IndexScanDesc iscan;		/* only valid in index-scan case */
! } SysScanDescData;
! 
! typedef SysScanDescData *SysScanDesc;
  
  
  /*
   * generalized index_ interface routines (in indexam.c)
   */
  extern Relation index_open(Oid relationId, LOCKMODE lockmode);
  extern void index_close(Relation relation, LOCKMODE lockmode);
  
--- 74,94 ----
  /* Typedef for callback function to determine if a tuple is bulk-deletable */
  typedef bool (*IndexBulkDeleteCallback) (ItemPointer itemptr, void *state);
  
! /* struct definitions appear in relscan.h */
! typedef struct IndexScanDescData *IndexScanDesc;
! typedef struct SysScanDescData *SysScanDesc;
  
  
  /*
   * generalized index_ interface routines (in indexam.c)
   */
+ 
+ /*
+  * IndexScanIsValid
+  *		True iff the index scan is valid.
+  */
+ #define IndexScanIsValid(scan) PointerIsValid(scan)
+ 
  extern Relation index_open(Oid relationId, LOCKMODE lockmode);
  extern void index_close(Relation relation, LOCKMODE lockmode);
  
Index: src/include/access/gin.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/gin.h,v
retrieving revision 1.21
diff -c -p -r1.21 gin.h
*** src/include/access/gin.h	6 Jun 2008 22:35:22 -0000	1.21
--- src/include/access/gin.h	14 Jun 2008 23:00:09 -0000
***************
*** 12,19 ****
  #ifndef GIN_H
  #define GIN_H
  
  #include "access/itup.h"
- #include "access/relscan.h"
  #include "access/xlog.h"
  #include "fmgr.h"
  #include "nodes/tidbitmap.h"
--- 12,19 ----
  #ifndef GIN_H
  #define GIN_H
  
+ #include "access/genam.h"
  #include "access/itup.h"
  #include "access/xlog.h"
  #include "fmgr.h"
  #include "nodes/tidbitmap.h"
Index: src/include/access/hash.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/hash.h,v
retrieving revision 1.87
diff -c -p -r1.87 hash.h
*** src/include/access/hash.h	10 Apr 2008 22:25:25 -0000	1.87
--- src/include/access/hash.h	14 Jun 2008 23:01:57 -0000
***************
*** 17,28 ****
  #ifndef HASH_H
  #define HASH_H
  
  #include "access/itup.h"
- #include "access/relscan.h"
  #include "access/sdir.h"
  #include "access/xlog.h"
  #include "fmgr.h"
  #include "storage/lock.h"
  
  /*
   * Mapping from hash bucket number to physical block number of bucket's
--- 17,29 ----
  #ifndef HASH_H
  #define HASH_H
  
+ #include "access/genam.h"
  #include "access/itup.h"
  #include "access/sdir.h"
  #include "access/xlog.h"
  #include "fmgr.h"
  #include "storage/lock.h"
+ #include "utils/rel.h"
  
  /*
   * Mapping from hash bucket number to physical block number of bucket's
Index: src/include/access/heapam.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/heapam.h,v
retrieving revision 1.136
diff -c -p -r1.136 heapam.h
*** src/include/access/heapam.h	12 Jun 2008 09:12:31 -0000	1.136
--- src/include/access/heapam.h	14 Jun 2008 22:45:48 -0000
***************
*** 15,25 ****
  #define HEAPAM_H
  
  #include "access/htup.h"
- #include "access/relscan.h"
  #include "access/sdir.h"
  #include "access/xlog.h"
  #include "nodes/primnodes.h"
  #include "storage/lock.h"
  #include "utils/snapshot.h"
  
  
--- 15,27 ----
  #define HEAPAM_H
  
  #include "access/htup.h"
  #include "access/sdir.h"
+ #include "access/skey.h"
  #include "access/xlog.h"
  #include "nodes/primnodes.h"
+ #include "storage/bufpage.h"
  #include "storage/lock.h"
+ #include "utils/rel.h"
  #include "utils/snapshot.h"
  
  
*************** extern Relation heap_openrv(const RangeV
*** 50,55 ****
--- 52,66 ----
  
  #define heap_close(r,l)  relation_close(r,l)
  
+ /* struct definition appears in relscan.h */
+ typedef struct HeapScanDescData *HeapScanDesc;
+ 
+ /*
+  * HeapScanIsValid
+  *		True iff the heap scan is valid.
+  */
+ #define HeapScanIsValid(scan) PointerIsValid(scan)
+ 
  extern HeapScanDesc heap_beginscan(Relation relation, Snapshot snapshot,
  			   int nkeys, ScanKey key);
  extern HeapScanDesc heap_beginscan_strat(Relation relation, Snapshot snapshot,
Index: src/include/access/nbtree.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/nbtree.h,v
retrieving revision 1.119
diff -c -p -r1.119 nbtree.h
*** src/include/access/nbtree.h	6 Jun 2008 22:35:22 -0000	1.119
--- src/include/access/nbtree.h	14 Jun 2008 22:42:20 -0000
***************
*** 14,21 ****
  #ifndef NBTREE_H
  #define NBTREE_H
  
  #include "access/itup.h"
- #include "access/relscan.h"
  #include "access/sdir.h"
  #include "access/xlog.h"
  #include "access/xlogutils.h"
--- 14,21 ----
  #ifndef NBTREE_H
  #define NBTREE_H
  
+ #include "access/genam.h"
  #include "access/itup.h"
  #include "access/sdir.h"
  #include "access/xlog.h"
  #include "access/xlogutils.h"
Index: src/include/access/relscan.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/access/relscan.h,v
retrieving revision 1.65
diff -c -p -r1.65 relscan.h
*** src/include/access/relscan.h	12 May 2008 00:00:53 -0000	1.65
--- src/include/access/relscan.h	14 Jun 2008 22:47:59 -0000
***************
*** 14,19 ****
--- 14,21 ----
  #ifndef RELSCAN_H
  #define RELSCAN_H
  
+ #include "access/genam.h"
+ #include "access/heapam.h"
  #include "access/htup.h"
  #include "access/skey.h"
  #include "storage/bufpage.h"
*************** typedef struct HeapScanDescData
*** 54,61 ****
  	OffsetNumber rs_vistuples[MaxHeapTuplesPerPage];	/* their offsets */
  } HeapScanDescData;
  
- typedef HeapScanDescData *HeapScanDesc;
- 
  /*
   * We use the same IndexScanDescData structure for both amgettuple-based
   * and amgetbitmap-based index scans.  Some fields are only relevant in
--- 56,61 ----
*************** typedef struct IndexScanDescData
*** 89,107 ****
  	TransactionId xs_prev_xmax; /* previous HOT chain member's XMAX, if any */
  } IndexScanDescData;
  
! typedef IndexScanDescData *IndexScanDesc;
! 
! 
! /*
!  * HeapScanIsValid
!  *		True iff the heap scan is valid.
!  */
! #define HeapScanIsValid(scan) PointerIsValid(scan)
! 
! /*
!  * IndexScanIsValid
!  *		True iff the index scan is valid.
!  */
! #define IndexScanIsValid(scan) PointerIsValid(scan)
  
  #endif   /* RELSCAN_H */
--- 89,101 ----
  	TransactionId xs_prev_xmax; /* previous HOT chain member's XMAX, if any */
  } IndexScanDescData;
  
! /* Struct for heap-or-index scans of system tables */
! typedef struct SysScanDescData
! {
! 	Relation	heap_rel;		/* catalog being scanned */
! 	Relation	irel;			/* NULL if doing heap scan */
! 	HeapScanDesc scan;			/* only valid in heap-scan case */
! 	IndexScanDesc iscan;		/* only valid in index-scan case */
! } SysScanDescData;
  
  #endif   /* RELSCAN_H */
Index: src/include/nodes/execnodes.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/nodes/execnodes.h,v
retrieving revision 1.183
diff -c -p -r1.183 execnodes.h
*** src/include/nodes/execnodes.h	1 Jan 2008 19:45:58 -0000	1.183
--- src/include/nodes/execnodes.h	14 Jun 2008 22:41:34 -0000
***************
*** 14,20 ****
  #ifndef EXECNODES_H
  #define EXECNODES_H
  
! #include "access/relscan.h"
  #include "nodes/params.h"
  #include "nodes/plannodes.h"
  #include "nodes/tidbitmap.h"
--- 14,21 ----
  #ifndef EXECNODES_H
  #define EXECNODES_H
  
! #include "access/genam.h"
! #include "access/heapam.h"
  #include "nodes/params.h"
  #include "nodes/plannodes.h"
  #include "nodes/tidbitmap.h"
Index: src/include/nodes/print.h
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/include/nodes/print.h,v
retrieving revision 1.28
diff -c -p -r1.28 print.h
*** src/include/nodes/print.h	1 Jan 2008 19:45:58 -0000	1.28
--- src/include/nodes/print.h	14 Jun 2008 23:12:30 -0000
***************
*** 15,21 ****
  #define PRINT_H
  
  #include "nodes/parsenodes.h"
! #include "nodes/execnodes.h"
  
  
  #define nodeDisplay(x)		pprint(x)
--- 15,21 ----
  #define PRINT_H
  
  #include "nodes/parsenodes.h"
! #include "executor/tuptable.h"
  
  
  #define nodeDisplay(x)		pprint(x)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.