diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index ecf8cff61c29dc9bf2751a2f3df7abda53b041cc..66c1b1812ce2fb74fc8a64ea39c6ac6c0bbb5f33 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 19f551559e4ceb4453f450cf1334388f8bb5f046..81e635cebad3bf73d567773e30202ff17a19fa70 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() */