Commit 1bf90bc7 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Add structure for subselects.

Add field to support "WITH TIME ZONE".
parent 570620c5
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: nodes.h,v 1.10 1997/08/31 11:43:08 vadim Exp $ * $Id: nodes.h,v 1.11 1997/09/01 06:04:57 thomas Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -206,7 +206,8 @@ typedef enum NodeTag { ...@@ -206,7 +206,8 @@ typedef enum NodeTag {
T_TargetEntry, T_TargetEntry,
T_RangeTblEntry, T_RangeTblEntry,
T_SortClause, T_SortClause,
T_GroupClause T_GroupClause,
T_SubSelect
} NodeTag; } NodeTag;
/* /*
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: parsenodes.h,v 1.21 1997/08/31 11:43:09 vadim Exp $ * $Id: parsenodes.h,v 1.22 1997/09/01 06:04:59 thomas Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -554,9 +554,9 @@ typedef struct CursorStmt { ...@@ -554,9 +554,9 @@ typedef struct CursorStmt {
List *targetList; /* the target list (of ResTarget) */ List *targetList; /* the target list (of ResTarget) */
List *fromClause; /* the from clause */ List *fromClause; /* the from clause */
Node *whereClause; /* qualifications */ Node *whereClause; /* qualifications */
List *groupClause; /* group by clause */ List *groupClause; /* group by clause */
List *sortClause; /* sort clause (a list of SortGroupBy's) */ List *sortClause; /* sort clause (a list of SortGroupBy's) */
} CursorStmt; } CursorStmt;
/* ---------------------- /* ----------------------
* Select Statement * Select Statement
...@@ -564,28 +564,42 @@ typedef struct CursorStmt { ...@@ -564,28 +564,42 @@ typedef struct CursorStmt {
*/ */
typedef struct RetrieveStmt { typedef struct RetrieveStmt {
NodeTag type; NodeTag type;
char *unique; /* NULL, '*', or unique attribute name */ char *unique; /* NULL, '*', or unique attribute name */
char *into; /* name of table (for select into char *into; /* name of table (for select into table) */
table) */
List *targetList; /* the target list (of ResTarget) */ List *targetList; /* the target list (of ResTarget) */
List *fromClause; /* the from clause */ List *fromClause; /* the from clause */
Node *whereClause; /* qualifications */ Node *whereClause; /* qualifications */
List *groupClause; /* group by clause */ List *groupClause; /* group by clause */
Node *havingClause; /* having conditional-expression */ Node *havingClause; /* having conditional-expression */
List *selectClause; /* subselect parameters */
List *sortClause; /* sort clause (a list of SortGroupBy's) */ List *sortClause; /* sort clause (a list of SortGroupBy's) */
} RetrieveStmt; } RetrieveStmt;
/**************************************************************************** /****************************************************************************
* Supporting data structures for Parse Trees * Supporting data structures for Parse Trees
****************************************************************************/ ****************************************************************************/
/*
* SubSelect - specifies subselect parameters
*/
typedef struct SubSelect {
NodeTag type;
char *unique; /* NULL, '*', or unique attribute name */
List *targetList; /* the target list (of ResTarget) */
List *fromClause; /* the from clause */
Node *whereClause; /* qualifications */
List *groupClause; /* group by clause */
Node *havingClause; /* having conditional-expression */
} SubSelect;
/* /*
* TypeName - specifies a type in definitions * TypeName - specifies a type in definitions
*/ */
typedef struct TypeName { typedef struct TypeName {
NodeTag type; NodeTag type;
char *name; /* name of the type */ char *name; /* name of the type */
bool timezone; /* timezone specified? */
bool setof; /* is a set? */ bool setof; /* is a set? */
List *arrayBounds; /* array bounds */ List *arrayBounds; /* array bounds */
int typlen; /* length for char() and varchar() */ int typlen; /* length for char() and varchar() */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment