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

数据库系统

开发平台:

Unix_Linux

  1. /*
  2.  * makefuncs.c
  3.  *   creator functions for primitive nodes. The functions here are for
  4.  *   the most frequently created nodes.
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  *
  9.  * IDENTIFICATION
  10.  *   $Header: /usr/local/cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.15 1999/05/17 17:03:12 momjian Exp $
  11.  *
  12.  * NOTES
  13.  *   Creator functions in POSTGRES 4.2 are generated automatically. Most of
  14.  *   them are rarely used. Now we don't generate them any more. If you want
  15.  *   one, you have to write it yourself.
  16.  *
  17.  * HISTORY
  18.  *   AUTHOR DATE MAJOR EVENT
  19.  *   Andrew Yu Oct 20, 1994 file creation
  20.  */
  21. #include "postgres.h"
  22. #include "nodes/pg_list.h"
  23. #include "nodes/primnodes.h"
  24. #include "nodes/parsenodes.h"
  25. #include "nodes/makefuncs.h"
  26. /*
  27.  * makeOper -
  28.  *   creates an Oper node
  29.  */
  30. Oper *
  31. makeOper(Oid opno,
  32.  Oid opid,
  33.  Oid opresulttype,
  34.  int opsize,
  35.  FunctionCachePtr op_fcache)
  36. {
  37. Oper    *oper = makeNode(Oper);
  38. oper->opno = opno;
  39. oper->opid = opid;
  40. oper->opresulttype = opresulttype;
  41. oper->opsize = opsize;
  42. oper->op_fcache = op_fcache;
  43. return oper;
  44. }
  45. /*
  46.  * makeVar -
  47.  *   creates a Var node
  48.  *
  49.  */
  50. Var *
  51. makeVar(Index varno,
  52. AttrNumber varattno,
  53. Oid vartype,
  54. int32 vartypmod,
  55. Index varlevelsup,
  56. Index varnoold,
  57. AttrNumber varoattno)
  58. {
  59. Var    *var = makeNode(Var);
  60. var->varno = varno;
  61. var->varattno = varattno;
  62. var->vartype = vartype;
  63. var->vartypmod = vartypmod;
  64. var->varlevelsup = varlevelsup;
  65. var->varnoold = varnoold;
  66. var->varoattno = varoattno;
  67. return var;
  68. }
  69. /*
  70.  * makeTargetEntry -
  71.  *   creates a TargetEntry node(contains a Resdom)
  72.  */
  73. TargetEntry *
  74. makeTargetEntry(Resdom *resdom, Node *expr)
  75. {
  76. TargetEntry *rt = makeNode(TargetEntry);
  77. rt->resdom = resdom;
  78. rt->expr = expr;
  79. return rt;
  80. }
  81. /*
  82.  * makeResdom -
  83.  *   creates a Resdom (Result Domain) node
  84.  */
  85. Resdom *
  86. makeResdom(AttrNumber resno,
  87.    Oid restype,
  88.    int32 restypmod,
  89.    char *resname,
  90.    Index reskey,
  91.    Oid reskeyop,
  92.    bool resjunk)
  93. {
  94. Resdom    *resdom = makeNode(Resdom);
  95. resdom->resno = resno;
  96. resdom->restype = restype;
  97. resdom->restypmod = restypmod;
  98. resdom->resname = resname;
  99. resdom->reskey = reskey;
  100. resdom->reskeyop = reskeyop;
  101. resdom->resgroupref = 0;
  102. resdom->resjunk = resjunk;
  103. return resdom;
  104. }
  105. /*
  106.  * makeConst -
  107.  *   creates a Const node
  108.  */
  109. Const *
  110. makeConst(Oid consttype,
  111.   int constlen,
  112.   Datum constvalue,
  113.   bool constisnull,
  114.   bool constbyval,
  115.   bool constisset,
  116.   bool constiscast)
  117. {
  118. Const    *cnst = makeNode(Const);
  119. cnst->consttype = consttype;
  120. cnst->constlen = constlen;
  121. cnst->constvalue = constvalue;
  122. cnst->constisnull = constisnull;
  123. cnst->constbyval = constbyval;
  124. cnst->constisset = constisset;
  125. cnst->constiscast = constiscast;
  126. return cnst;
  127. }