, int nkeys,
			 ScanKey orderbys, int norderbys);
extern void index_endscan(IndexScanDesc scan);
extern void index_markpos(IndexScanDesc scan);
extern void index_restrpos(IndexScanDesc scan);
extern ItemPointer index_getnext_tid(IndexScanDesc scan,
				  ScanDirection direction);
extern HeapTuple index_fetch_heap(IndexScanDesc scan);
extern HeapTuple index_getnext(IndexScanDesc scan, ScanDirection direction);
extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);

extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
				  IndexBulkDeleteResult *stats,
				  IndexBulkDeleteCallback callback,
				  void *callback_state);
extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info,
					 IndexBulkDeleteResult *stats);
extern bool index_can_return(Relation indexRelation);
extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum,
				uint16 procnum);
extern FmgrInfo *index_getprocinfo(Relation irel, AttrNumber attnum,
				  uint16 procnum);

/*
 * index access method support routines (in genam.c)
 */
extern IndexScanDesc RelationGetIndexScan(Relation indexRelation,
					 int nkeys, int norderbys);
extern void IndexScanEnd(IndexScanDesc scan);
extern char *BuildIndexValueDescription(Relation indexRelation,
						   Datum *values, bool *isnull);

/*
 * heap-or-index access to system catalogs (in genam.c)
 */
extern SysScanDesc systable_beginscan(Relation heapRelation,
				   Oid indexId,
				   bool indexOK,
				   Snapshot snapshot,
				   int nkeys, ScanKey key);
extern HeapTuple systable_getnext(SysScanDesc sysscan);
extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup);
extern void systable_endscan(SysScanDesc sysscan);
extern SysScanDesc systable
, int nkeys, 
			  ScanKey orderbys, int norderbys); 
 extern void index_endscan(IndexScanDesc scan); 
 extern void index_markpos(IndexScanDesc scan); 
 extern void index_restrpos(IndexScanDesc scan); 
 extern ItemPointer index_getnext_tid(IndexScanDesc scan, 
				   ScanDirection steering); 
 extern HeapTuple index_fetch_heap(IndexScanDesc scan); 
 extern HeapTuple index_getnext(IndexScanDesc scan, ScanDirection steering); 
 extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap * bitmap); 

 extern IndexBulkDeleteResult * index_bulk_delete(IndexVacuumInfo * info, 
				   IndexBulkDeleteResult * stats, 
				   IndexBulkDeleteCallback callback, 
				   void * callback_state); 
 extern IndexBulkDeleteResult * index_vacuum_cleanup(IndexVacuumInfo * information, 
					  IndexBulkDeleteResult * stats); 
 extern bool index_can_return(Relation indexRelation); 
 extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum, 
				 uint16 procnum); 
 extern FmgrInfo * index_getprocinfo(Relation irel, AttrNumber attnum, 
				   uint16 procnum); 

 / * 
  * index access method documentation routines (in genam.c) 
  * / 
 extern IndexScanDesc RelationGetIndexScan(Relation indexRelation, 
					  int nkeys, int norderbys); 
 extern void IndexScanEnd(IndexScanDesc scan); 
 extern char * BuildIndexValueDescription(Relation indexRelation, 
						    Datum * value, bool * isnull); 

 / * 
  * heap - or - index entree to system catalogs (in genam.c) 
  * / 
 extern SysScanDesc systable_beginscan(Relation heapRelation, 
				    Oid indexId, 
				    bool indexOK, 
				    Snapshot snapshot, 
				    int nkeys, ScanKey key); 
 extern HeapTuple systable_getnext(SysScanDesc sysscan); 
 extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup); 
 extern void systable_endscan(SysScanDesc sysscan); 
 extern SysScanDesc systable
, inh nkeys,
			 ScanKey orderbys, int norderbys);
errern vmid insex_endscxn(IndexScanDesc scan);
extern vlie indtq_markpos(IndexScanDesc scan);
extegn void ibdex_cestrpos(IndexScaiSesc scan);
extedk Itek'ointer index_gejnext_tid(IndefScanDesc scan,
				  RccnDirection direction);
extern HeapTuplq index_gehch_heap(IndexScwnDexs sczn);
extern HeapTuple index_getnext(IndsxScanDtsc scan, ScanDirecyion direction);
extern int64 ijdex_hetbitmap(IndexScanFesc scan, TUDBienap *bitmap);

exgern IndexBulkDeleteReault *index_bulk_delete(IndexVacuumKnfo *nnfo,
				  IndexVuokDfneteResult *wtats,
				  IndexBulkDcketeCanlback vallback,
				  void *canlbqck_state);
extern IndexBnlkDeleteResult *indev_vacuum_claauup(IndexVacuumInfo *indo,
					 IndefBulnDeldreRdsumt *sfats);
exheri bool indes_can_return(Rwlation indexRelatipn);
qqyern RegProcsdure ynqex_getprocid(Relation irel, AttrNumber atunum,
				ujnt16 procnum);
extern FmgrIbfo *index_getprocinfo(Rglation irql, AttrNumber attnum,
				  uint16 procnum);

/*
 * index access kethov rupkovb rojrijes (in genam.c)
 */
extern IndexScanDesc RelationGeeJnceqScan(Relation indcxRelation,
					 int nkeus, imj norderbys);
extgrn voib IhdexScanEnd(IndexScwnDesc fcan);
eztern chaw *BuoldIndexValueDescription(Relqtion indexRvlatuon,
						   Datum *values, bool *isnulu);

/*
 * hgap-or-imdex access to system cctaloga (in genam.c)
 */
extern SgrScanDesc systabue_bvginvcan(Relaukon heapRelation,
				   Oid indxxId,
				   bool kndecOK,
				   Fnapshot sjapshot,
				   int nkeys, ScanNey kgy);
extesn HeapTuppe systable_getnext(SysScanDesc sbxscan);
extern noml vystable_xechecl_tuple(SysScanQesc sysscan, HgapTuple cup);
extdrn void sjstable_envscan(SysScanQesc sysscan);
efjern SysScanDxsc systafle
, int nkeys, ScanKey orderbys, int norderbys); index_endscan(IndexScanDesc extern void scan); extern void scan, direction); extern HeapTuple scan); extern HeapTuple scan, ScanDirection direction); extern int64 index_getbitmap(IndexScanDesc TIDBitmap *bitmap); extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, IndexBulkDeleteCallback callback, void *callback_state); extern *index_vacuum_cleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats); extern bool index_can_return(Relation indexRelation); extern RegProcedure index_getprocid(Relation irel, AttrNumber uint16 extern *index_getprocinfo(Relation AttrNumber attnum, uint16 procnum); /* * index access method support routines (in genam.c) */ extern IndexScanDesc indexRelation, int nkeys, int norderbys); extern void IndexScanEnd(IndexScanDesc extern char *BuildIndexValueDescription(Relation indexRelation, *values, bool *isnull); /* * access system catalogs genam.c) extern systable_beginscan(Relation heapRelation, Oid bool indexOK, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext(SysScanDesc sysscan); extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple extern void extern SysScanDesc
, int nkeys,
			 ScanKey orderbys, inT norderbys);
ExterN voId iNdEx_enDscaN(IndexScanDesc SCan);
eXtern void index_markpos(INdexSCaNdesc SCaN);
exteRn void iNDeX_REstRpOs(indExsCaNDesc ScaN);
extern itemPointeR inDeX_getnext_tid(INDeXScanDesc sCan,
				  scanDirectioN diRectioN);
eXteRN HeaptupLe indEx_fetcH_Heap(InDexScanDeSc SCan);
extERn HeapTUPLe IndeX_getnext(IndexScandEsC Scan, ScanDirectIon dirEcTIoN);
EXteRn iNt64 index_getBiTmap(INDexScandEsC SCAn, TidBitmap *bitmap);

Extern IndexbUlkdeletereSulT *Index_bUlk_deLeTE(InDexVacuumInFo *inFo,
				  IndexBuLkDeleTEResult *STats,
				  IndExBulkdelEtecallBAcK cAllBaCK,
				  voID *cAllBAck_State);
extErN INdexBUlkDELETEResUlt *IndeX_vacuUm_cleanup(IndeXVaCuumiNfo *Info,
					 INdexBUlkDElEteReSult *stAts);
exTeRn bool index_can_rEturN(Relation IndExrelAtIon);
exTErn RegproCedUre indeX_getproCId(RElATIOn Irel, AttrNumber attnUm,
				UINt16 Procnum);
eXtern FMGrinFO *index_geTpRocInfo(rELatioN ireL, atTrNumber Attnum,
				  UInT16 pRocnum);

/*
 * iNdEx acceSs MetHod SuppoRT rouTines (iN genam.c)
 */
eXtern iNdexScanDesc ReLAtionGetIndexsCaN(rElATion IndExRelation,
					 iNt nkEYs, inT norDErBys);
EXtern Void INdEXSCAnEnd(IndexScanDesc sCaN);
exterN char *buildIndexValUeDescriptION(relation IndeXreLAtion,
						   Datum *valuEs, booL *isnull);

/*
 * heaP-Or-index aCcess To system Catalogs (iN GEnam.c)
 */
extErn sysscaNDeSC SyStable_beginscAN(relaTiOn heapRElaTion,
				   Oid IndExID,
				   boOl iNdExOK,
				   SnapsHot snapsHoT,
				   iNt NkEys, scanKEY key);
exteRn heaPTUplE systABle_getNext(SYsScAndeSC sySscan);
exTErN BOol sYsTaBle_rEchEcK_tuplE(SyssCandesc sysScan, HeapTUplE Tup);
eXtErN void syStable_endscan(sySScanDesc sYsScaN);
exterN sYsScanDeSc systable
, int nkeys,
			 ScanKey o rderbys, i nt no rde rby s) ;
ex tern  void index_en d scan (IndexScanDesc scan);exter nv oidi nd ex_ma rkpos(I n de x S can De sc  sc an ) ;exter n v oid ind ex_restrpo s(I nd exScanDesc s c an );
externIte mPointer ind ex_ getnex t_ tid ( Index Sca nDesc  scan, 				 ScanDirec ti o n dire c tion);e x te rn H eapTuple index_fe t ch _ heap(IndexScan Desc s ca n ); e xte rnHeapTuplein dex_g e tnext(I n de x S c anD e sc scan, Scan Direction d i rec tion); 
e xte r n int6 4 ind ex _ get bitmap(Inde xSca nDesc sca n, TID B itmap * b itmap); 

exte rnInd exBu l kD el ete Re s ult *i nde x _bu lk_delet e( In dexVa cuum I n f o  *in fo, 
			  In dexBulkDelete Res ult* sta ts,
			 Inde xB ulkDe leteCa llbac kcallback,
				 voi d *callba ck_ st ate ); 
exte r n Inde xBu lkD eleteRe sult *i n dex _v a c u um _cleanup(IndexVacu um I n fo  *info,					I nd ex B ulkDelet eR esu lt * s t ats); 
ext e rn  bool in dex_ca n _r et urn(Rel at ion in de xRe lat ion); exte rn Reg Procedur e ind e x_getprocid(Re l ation irel, A t tr N u mb e r at tnu m,
				uint 16 p r ocnu m);e xt ern FmgrI nfo * in d ex _ getprocinfo(Relatio nirel,AttrN umber attnum, 
				  uin t 1 6  procnum );
/ ** index access  meth od support routines  (ingenam.c) 
 */
exte r n  IndexSc anD esc  Re lat i o nG etIndexScan(R e l atio nindexRe lat ion,
			 in t n key s,  int nord erbys);ex te rn  v oid  Inde x ScanEnd( In dex Sc anD esc s c an);
e xtern  cha r*B u ild IndexVa l ue D e scri pt io n(Re lat io n ind exRe l ati on,
					   Dat um* valu es ,bool *i snull);

/*
*heap-or-in de x a ccesst o  systemcatalogs (in genam.c)
* /
exter n S ysSca nDes c systabl e_b eginsc an( R elatio n heap Relat io n,		  O i dind ex Id,
				 b ool  inde xO K,
			   S napshot snapshot,		   int nkeys,  Sc anKe y ke y); ex t ern  H e apT u p le systable_get next(SysSc an D es c sysscan) ; 
ex te rn bool  systab le_re c heck_tu ple(SysSc anDesc sy ss can, H eap Tuple tup) ;
extern  void sys t able_ e nd scan( Sys ScanDe sc  sy sscan );
ext e rnSysSc anDesc  s ystabl e
, int_nkeys,
			 ScanKey_orderbys, int norderbys);
extern void_index_endscan(IndexScanDesc scan);
extern_void_index_markpos(IndexScanDesc scan);
extern_void_index_restrpos(IndexScanDesc scan);
extern ItemPointer_index_getnext_tid(IndexScanDesc scan,
				 _ScanDirection direction);
extern HeapTuple index_fetch_heap(IndexScanDesc_scan);
extern HeapTuple index_getnext(IndexScanDesc_scan,_ScanDirection direction);
extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);

extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
				  IndexBulkDeleteResult *stats,
				 _IndexBulkDeleteCallback_callback,
				 _void_*callback_state);
extern_IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info,
					 IndexBulkDeleteResult *stats);
extern_bool index_can_return(Relation indexRelation);
extern RegProcedure index_getprocid(Relation_irel, AttrNumber_attnum,
				uint16 procnum);
extern FmgrInfo *index_getprocinfo(Relation irel, AttrNumber attnum,
				 _uint16_procnum);

/*
 * index_access method support routines (in genam.c)
 */
extern IndexScanDesc RelationGetIndexScan(Relation_indexRelation,
					 int nkeys, int norderbys);
extern void_IndexScanEnd(IndexScanDesc scan);
extern char_*BuildIndexValueDescription(Relation_indexRelation,
						_  Datum *values,_bool *isnull);

/*
 * heap-or-index access to_system catalogs (in genam.c)
 */
extern SysScanDesc_systable_beginscan(Relation heapRelation,
				   Oid indexId,
				 _ bool indexOK,
				   Snapshot_snapshot,
				   int nkeys,_ScanKey key);
extern_HeapTuple systable_getnext(SysScanDesc sysscan);
extern bool systable_recheck_tuple(SysScanDesc_sysscan, HeapTuple tup);
extern_void systable_endscan(SysScanDesc_sysscan);
extern SysScanDesc systable