2
0

parse_relation.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*-------------------------------------------------------------------------
  2. *
  3. * parse_relation.h
  4. * prototypes for parse_relation.c.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
  8. * Portions Copyright (c) 1994, Regents of the University of California
  9. *
  10. * src/include/parser/parse_relation.h
  11. *
  12. *-------------------------------------------------------------------------
  13. */
  14. #ifndef PARSE_RELATION_H
  15. #define PARSE_RELATION_H
  16. #include "parser/parse_node.h"
  17. extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate,
  18. const char *schemaname,
  19. const char *refname,
  20. int location,
  21. int *sublevels_up);
  22. extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate,
  23. const char *refname,
  24. Index *ctelevelsup);
  25. extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname);
  26. extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1,
  27. List *namespace2);
  28. extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate,
  29. int varno,
  30. int sublevels_up);
  31. extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,
  32. int varno,
  33. int sublevels_up);
  34. extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte,
  35. int rtelevelsup);
  36. extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
  37. int sublevels_up, const char *colname,
  38. int location);
  39. extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
  40. int location);
  41. extern void markVarForSelectPriv(ParseState *pstate, Var *var);
  42. extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
  43. int lockmode);
  44. extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate,
  45. RangeVar *relation,
  46. Alias *alias,
  47. bool inh,
  48. bool inFromCl);
  49. extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate,
  50. Relation rel,
  51. int lockmode,
  52. Alias *alias,
  53. bool inh,
  54. bool inFromCl);
  55. extern ParseNamespaceItem *addRangeTableEntryForSubquery(ParseState *pstate,
  56. Query *subquery,
  57. Alias *alias,
  58. bool lateral,
  59. bool inFromCl);
  60. extern ParseNamespaceItem *addRangeTableEntryForFunction(ParseState *pstate,
  61. List *funcnames,
  62. List *funcexprs,
  63. List *coldeflists,
  64. RangeFunction *rangefunc,
  65. bool lateral,
  66. bool inFromCl);
  67. extern ParseNamespaceItem *addRangeTableEntryForValues(ParseState *pstate,
  68. List *exprs,
  69. List *coltypes,
  70. List *coltypmods,
  71. List *colcollations,
  72. Alias *alias,
  73. bool lateral,
  74. bool inFromCl);
  75. extern ParseNamespaceItem *addRangeTableEntryForTableFunc(ParseState *pstate,
  76. TableFunc *tf,
  77. Alias *alias,
  78. bool lateral,
  79. bool inFromCl);
  80. extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate,
  81. List *colnames,
  82. ParseNamespaceColumn *nscolumns,
  83. JoinType jointype,
  84. int nummergedcols,
  85. List *aliasvars,
  86. List *leftcols,
  87. List *rightcols,
  88. Alias *joinalias,
  89. Alias *alias,
  90. bool inFromCl);
  91. extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,
  92. CommonTableExpr *cte,
  93. Index levelsup,
  94. RangeVar *rv,
  95. bool inFromCl);
  96. extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate,
  97. RangeVar *rv,
  98. bool inFromCl);
  99. extern bool isLockedRefname(ParseState *pstate, const char *refname);
  100. extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem,
  101. bool addToJoinList,
  102. bool addToRelNameSpace, bool addToVarNameSpace);
  103. extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn();
  104. extern void errorMissingColumn(ParseState *pstate,
  105. const char *relname, const char *colname, int location) pg_attribute_noreturn();
  106. extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
  107. int location, bool include_dropped,
  108. List **colnames, List **colvars);
  109. extern List *expandNSItemVars(ParseNamespaceItem *nsitem,
  110. int sublevels_up, int location,
  111. List **colnames);
  112. extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
  113. int sublevels_up, bool require_col_privs,
  114. int location);
  115. extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
  116. extern const NameData *attnumAttName(Relation rd, int attid);
  117. extern Oid attnumTypeId(Relation rd, int attid);
  118. extern Oid attnumCollationId(Relation rd, int attid);
  119. extern bool isQueryUsingTempRelation(Query *query);
  120. #endif /* PARSE_RELATION_H */