tuptable.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * tuptable.h
  4.  *   tuple table support stuff
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: tuptable.h,v 1.12 1999/05/25 16:13:58 momjian Exp $
  10.  *
  11.  * NOTES
  12.  *   The tuple table interface is getting pretty ugly.
  13.  *   It should be redesigned soon.
  14.  *
  15.  *-------------------------------------------------------------------------
  16.  */
  17. #ifndef TUPTABLE_H
  18. #define TUPTABLE_H
  19. #include <storage/buf.h>
  20. #include <access/tupdesc.h>
  21. #include <access/htup.h>
  22. /* ----------------
  23.  * The executor tuple table is managed and manipulated by special
  24.  * code in executor/execTuples.c and tupTable.h
  25.  *
  26.  * TupleTableSlot information
  27.  *
  28.  * shouldFree boolean - should we call pfree() on tuple
  29.  * descIsNew boolean - true when tupleDescriptor changes
  30.  * tupleDescriptor type information kept regarding the tuple data
  31.  * buffer the buffer for tuples pointing to disk pages
  32.  *
  33.  * The executor stores pointers to tuples in a ``tuple table''
  34.  * which is composed of TupleTableSlot's.  Some of the tuples
  35.  * are pointers to buffer pages and others are pointers to
  36.  * palloc'ed memory and the shouldFree variable tells us when
  37.  * we may call pfree() on a tuple.  -cim 9/23/90
  38.  *
  39.  * In the implementation of nested-dot queries such as
  40.  * "retrieve (EMP.hobbies.all)", a single scan may return tuples
  41.  * of many types, so now we return pointers to tuple descriptors
  42.  * along with tuples returned via the tuple table.  -cim 1/18/90
  43.  *
  44.  * Tuple table macros are all excised from the system now.
  45.  * See executor.h for decls of functions defined in execTuples.c
  46.  * -jolly
  47.  *
  48.  * ----------------
  49.  */
  50. typedef struct TupleTableSlot
  51. {
  52. NodeTag type;
  53. HeapTuple val;
  54. bool ttc_shouldFree;
  55. bool ttc_descIsNew;
  56. TupleDesc ttc_tupleDescriptor;
  57. Buffer ttc_buffer;
  58. int ttc_whichplan;
  59. } TupleTableSlot;
  60. /* ----------------
  61.  * tuple table data structure
  62.  * ----------------
  63.  */
  64. typedef struct TupleTableData
  65. {
  66. int size; /* size of the table */
  67. int next; /* next available slot number */
  68. TupleTableSlot *array; /* array of TupleTableSlot's */
  69. } TupleTableData;
  70. typedef TupleTableData *TupleTable;
  71. #endif  /* TUPTABLE_H */