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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * parsetree.h
  4.  *   Routines to access various components and subcomponents of
  5.  *   parse trees.
  6.  *
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  * $Id: parsetree.h,v 1.6 1999/02/13 23:21:57 momjian Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #ifndef PARSETREE_H
  15. #define PARSETREE_H /* include once only */
  16. /* ----------------
  17.  * need pg_list.h for definitions of CAR(), etc. macros
  18.  * ----------------
  19.  */
  20. /* ----------------
  21.  * range table macros
  22.  *
  23.  * parse tree:
  24.  * (root targetlist qual)
  25.  *  ^^^^
  26.  * parse root:
  27.  * (numlevels cmdtype resrel rangetable priority ruleinfo nestdotinfo)
  28.  *   ^^^^^^^^^^
  29.  * range table:
  30.  * (rtentry ...)
  31.  * rtentry:
  32.  * ----------------
  33.  */
  34. #define rt_relname(rt_entry) 
  35.   ((!strcmp(((rt_entry)->refname),"*CURRENT*") ||
  36. !strcmp(((rt_entry)->refname),"*NEW*")) ? ((rt_entry)->refname) : 
  37. ((char *)(rt_entry)->relname))
  38. /*
  39.  * rt_fetch
  40.  * rt_store
  41.  *
  42.  * Access and (destructively) replace rangetable entries.
  43.  *
  44.  */
  45. #define rt_fetch(rangetable_index, rangetable) 
  46. ((RangeTblEntry*)nth((rangetable_index)-1, rangetable))
  47. #define rt_store(rangetable_index, rangetable, rt) 
  48. set_nth(rangetable, (rangetable_index)-1, rt)
  49. /*
  50.  * getrelid
  51.  * getrelname
  52.  *
  53.  * Given the range index of a relation, return the corresponding
  54.  * relation id or relation name.
  55.  */
  56. #define getrelid(rangeindex,rangetable) 
  57. ((RangeTblEntry*)nth((rangeindex)-1, rangetable))->relid
  58. #define getrelname(rangeindex, rangetable) 
  59. rt_relname((RangeTblEntry*)nth((rangeindex)-1, rangetable))
  60. #endif  /* PARSETREE_H */