From 1bf90bc7d346fc182d0d68bfecfe1dcaba256349 Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" Date: Mon, 1 Sep 1997 06:04:59 +0000 Subject: [PATCH] Add structure for subselects. Add field to support "WITH TIME ZONE". --- src/include/nodes/nodes.h | 5 +++-- src/include/nodes/parsenodes.h | 28 +++++++++++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index ecf8cff61c..66c1b1812c 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -6,7 +6,7 @@ * * 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 { T_TargetEntry, T_RangeTblEntry, T_SortClause, - T_GroupClause + T_GroupClause, + T_SubSelect } NodeTag; /* diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 19f551559e..81e635ceba 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -6,7 +6,7 @@ * * 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 { List *targetList; /* the target list (of ResTarget) */ List *fromClause; /* the from clause */ Node *whereClause; /* qualifications */ - List *groupClause; /* group by clause */ + List *groupClause; /* group by clause */ List *sortClause; /* sort clause (a list of SortGroupBy's) */ -} CursorStmt; +} CursorStmt; /* ---------------------- * Select Statement @@ -564,28 +564,42 @@ typedef struct CursorStmt { */ typedef struct RetrieveStmt { NodeTag type; - char *unique; /* NULL, '*', or unique attribute name */ - char *into; /* name of table (for select into - table) */ + char *unique; /* NULL, '*', or unique attribute name */ + char *into; /* name of table (for select into table) */ 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 */ + List *selectClause; /* subselect parameters */ List *sortClause; /* sort clause (a list of SortGroupBy's) */ -} RetrieveStmt; +} RetrieveStmt; /**************************************************************************** * 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 */ typedef struct TypeName { NodeTag type; char *name; /* name of the type */ + bool timezone; /* timezone specified? */ bool setof; /* is a set? */ List *arrayBounds; /* array bounds */ int typlen; /* length for char() and varchar() */