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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pg_aggregate.h
  4.  *   definition of the system "aggregate" relation (pg_aggregate)
  5.  *   along with the relation's initial contents.
  6.  *
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  * $Id: pg_aggregate.h,v 1.21 1999/03/26 07:32:40 tgl Exp $
  11.  *
  12.  * NOTES
  13.  *   the genbki.sh script reads this file and generates .bki
  14.  *   information from the DATA() statements.
  15.  *
  16.  *-------------------------------------------------------------------------
  17.  */
  18. #ifndef PG_AGGREGATE_H
  19. #define PG_AGGREGATE_H
  20. /* ----------------
  21.  * postgres.h contains the system type definitions and the
  22.  * CATALOG(), BOOTSTRAP and DATA() sugar words so this file
  23.  * can be read by both genbki.sh and the C compiler.
  24.  * ----------------
  25.  */
  26. /* ----------------------------------------------------------------
  27.  * pg_aggregate definition.
  28.  *
  29.  * cpp turns this into typedef struct FormData_pg_aggregate
  30.  *
  31.  * aggname name of the aggregate
  32.  * aggtransfn1 transition function 1
  33.  * aggtransfn2 transition function 2
  34.  * aggfinalfn final function
  35.  * aggbasetype type of data on which aggregate operates
  36.  * aggtranstype1 output types for transition func 1
  37.  * aggtranstype2 output types for transition func 2
  38.  * aggfinaltype output type for final function
  39.  * agginitval1 initial aggregate value
  40.  * agginitval2 initial value for transition state 2
  41.  * ----------------------------------------------------------------
  42.  */
  43. CATALOG(pg_aggregate)
  44. {
  45. NameData aggname;
  46. int4 aggowner;
  47. regproc aggtransfn1;
  48. regproc aggtransfn2;
  49. regproc aggfinalfn;
  50. Oid aggbasetype;
  51. Oid aggtranstype1;
  52. Oid aggtranstype2;
  53. Oid aggfinaltype;
  54. text agginitval1; /* VARIABLE LENGTH FIELD */
  55. text agginitval2; /* VARIABLE LENGTH FIELD */
  56. } FormData_pg_aggregate;
  57. /* ----------------
  58.  * Form_pg_aggregate corresponds to a pointer to a tuple with
  59.  * the format of pg_aggregate relation.
  60.  * ----------------
  61.  */
  62. typedef FormData_pg_aggregate *Form_pg_aggregate;
  63. /* ----------------
  64.  * compiler constants for pg_aggregate
  65.  * ----------------
  66.  */
  67. #define Natts_pg_aggregate 11
  68. #define Anum_pg_aggregate_aggname 1
  69. #define Anum_pg_aggregate_aggowner 2
  70. #define Anum_pg_aggregate_aggtransfn1 3
  71. #define Anum_pg_aggregate_aggtransfn2 4
  72. #define Anum_pg_aggregate_aggfinalfn 5
  73. #define Anum_pg_aggregate_aggbasetype 6
  74. #define Anum_pg_aggregate_aggtranstype1 7
  75. #define Anum_pg_aggregate_aggtranstype2 8
  76. #define Anum_pg_aggregate_aggfinaltype 9
  77. #define Anum_pg_aggregate_agginitval1 10
  78. #define Anum_pg_aggregate_agginitval2 11
  79. /* ----------------
  80.  * initial contents of pg_aggregate
  81.  * ---------------
  82.  */
  83. DATA(insert OID = 0 ( avg PGUID int8pl   int4inc int84div 20  20   23   20 _null_ 0 ));
  84. DATA(insert OID = 0 ( avg PGUID int4pl   int4inc int4div 23  23   23   23 _null_ 0 ));
  85. DATA(insert OID = 0 ( avg PGUID int2pl   int2inc int2div 21  21   21   21 _null_ 0 ));
  86. DATA(insert OID = 0 ( avg PGUID float4pl   float4inc float4div    700 700  700  700 _null_ 0.0 ));
  87. DATA(insert OID = 0 ( avg PGUID float8pl   float8inc float8div    701 701  701  701 _null_ 0.0 ));
  88. DATA(insert OID = 0 ( avg PGUID cash_pl   float8inc cash_div_flt8  790 790  701  790 _null_ 0.0 ));
  89. DATA(insert OID = 0 ( avg PGUID timespan_pl float8inc timespan_div  1186 1186  701 1186 _null_ 0.0 ));
  90. DATA(insert OID = 0 ( avg PGUID numeric_add numeric_inc numeric_div 1700 1700 1700 1700 _null_ 0 ));
  91. DATA(insert OID = 0 ( sum PGUID int8pl - -   20   20 0   20 _null_ _null_ ));
  92. DATA(insert OID = 0 ( sum PGUID int4pl - -   23   23 0   23 _null_ _null_ ));
  93. DATA(insert OID = 0 ( sum PGUID int2pl - -   21   21 0   21 _null_ _null_ ));
  94. DATA(insert OID = 0 ( sum PGUID float4pl - -  700  700 0  700 _null_ _null_ ));
  95. DATA(insert OID = 0 ( sum PGUID float8pl - -  701  701 0  701 _null_ _null_ ));
  96. DATA(insert OID = 0 ( sum PGUID cash_pl - -  790  790 0  790 _null_ _null_ ));
  97. DATA(insert OID = 0 ( sum PGUID timespan_pl - - 1186 1186 0 1186 _null_ _null_ ));
  98. DATA(insert OID = 0 ( sum PGUID numeric_add - - 1700 1700 0 1700 _null_ _null_ ));
  99. DATA(insert OID = 0 ( max PGUID int8larger - -   20   20 0   20 _null_ _null_ ));
  100. DATA(insert OID = 0 ( max PGUID int4larger - -   23   23 0   23 _null_ _null_ ));
  101. DATA(insert OID = 0 ( max PGUID int2larger - -   21   21 0   21 _null_ _null_ ));
  102. DATA(insert OID = 0 ( max PGUID float4larger - -  700  700 0  700 _null_ _null_ ));
  103. DATA(insert OID = 0 ( max PGUID float8larger - -  701  701 0  701 _null_ _null_ ));
  104. DATA(insert OID = 0 ( max PGUID int4larger - -  702  702 0  702 _null_ _null_ ));
  105. DATA(insert OID = 0 ( max PGUID date_larger - - 1082 1082 0 1082 _null_ _null_ ));
  106. DATA(insert OID = 0 ( max PGUID cashlarger - -  790  790 0  790 _null_ _null_ ));
  107. DATA(insert OID = 0 ( max PGUID datetime_larger - - 1184 1184 0 1184 _null_ _null_ ));
  108. DATA(insert OID = 0 ( max PGUID timespan_larger - - 1186 1186 0 1186 _null_ _null_ ));
  109. DATA(insert OID = 0 ( max PGUID text_larger - -   25   25 0   25 _null_ _null_ ));
  110. DATA(insert OID = 0 ( max PGUID numeric_larger - - 1700 1700 0 1700 _null_ _null_ ));
  111. DATA(insert OID = 0 ( min PGUID int8smaller - -   20   20 0   20 _null_ _null_ ));
  112. DATA(insert OID = 0 ( min PGUID int4smaller - -   23   23 0   23 _null_ _null_ ));
  113. DATA(insert OID = 0 ( min PGUID int2smaller - -   21   21 0   21 _null_ _null_ ));
  114. DATA(insert OID = 0 ( min PGUID float4smaller - -  700  700 0  700 _null_ _null_ ));
  115. DATA(insert OID = 0 ( min PGUID float8smaller - -  701  701 0  701 _null_ _null_ ));
  116. DATA(insert OID = 0 ( min PGUID int4smaller - -  702  702 0  702 _null_ _null_ ));
  117. DATA(insert OID = 0 ( min PGUID date_smaller - - 1082 1082 0 1082 _null_ _null_ ));
  118. DATA(insert OID = 0 ( min PGUID cashsmaller - -  790  790 0  790 _null_ _null_ ));
  119. DATA(insert OID = 0 ( min PGUID datetime_smaller - - 1184 1184 0 1184 _null_ _null_ ));
  120. DATA(insert OID = 0 ( min PGUID timespan_smaller - - 1186 1186 0 1186 _null_ _null_ ));
  121. DATA(insert OID = 0 ( min PGUID text_smaller - -   25   25 0   25 _null_ _null_ ));
  122. DATA(insert OID = 0 ( min PGUID numeric_smaller - - 1700 1700 0 1700 _null_ _null_ ));
  123. DATA(insert OID = 0 ( count PGUID - int4inc - 0 0 23 23 _null_ 0 ));
  124. /*
  125.  * prototypes for functions in pg_aggregate.c
  126.  */
  127. extern void AggregateCreate(char *aggName,
  128. char *aggtransfn1Name,
  129. char *aggtransfn2Name,
  130. char *aggfinalfnName,
  131. char *aggbasetypeName,
  132. char *aggtransfn1typeName,
  133. char *aggtransfn2typeName,
  134. char *agginitval1,
  135. char *agginitval2);
  136. extern char *AggNameGetInitVal(char *aggName, Oid basetype,
  137.   int xfuncno, bool *isNull);
  138. #endif  /* PG_AGGREGATE_H */