mirror of
https://github.com/postgres/postgres.git
synced 2025-11-16 15:02:33 +03:00
Remove the Query structure from the executor's API. This allows us to stop
storing mostly-redundant Query trees in prepared statements, portals, etc. To replace Query, a new node type called PlannedStmt is inserted by the planner at the top of a completed plan tree; this carries just the fields of Query that are still needed at runtime. The statement lists kept in portals etc. now consist of intermixed PlannedStmt and bare utility-statement nodes --- no Query. This incidentally allows us to remove some fields from Query and Plan nodes that shouldn't have been there in the first place. Still to do: simplify the execution-time range table; at the moment the range table passed to the executor still contains Query trees for subqueries. initdb forced due to change of stored rules.
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.125 2007/02/19 07:03:31 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.126 2007/02/20 17:32:17 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -49,6 +49,15 @@ typedef enum InhOption
|
||||
INH_DEFAULT /* Use current SQL_inheritance option */
|
||||
} InhOption;
|
||||
|
||||
/* What to do at commit time for temporary relations */
|
||||
typedef enum OnCommitAction
|
||||
{
|
||||
ONCOMMIT_NOOP, /* No ON COMMIT clause (do nothing) */
|
||||
ONCOMMIT_PRESERVE_ROWS, /* ON COMMIT PRESERVE ROWS (do nothing) */
|
||||
ONCOMMIT_DELETE_ROWS, /* ON COMMIT DELETE ROWS */
|
||||
ONCOMMIT_DROP /* ON COMMIT DROP */
|
||||
} OnCommitAction;
|
||||
|
||||
/*
|
||||
* RangeVar - range variable, used in FROM clauses
|
||||
*
|
||||
@@ -69,6 +78,20 @@ typedef struct RangeVar
|
||||
Alias *alias; /* table alias & optional column aliases */
|
||||
} RangeVar;
|
||||
|
||||
/*
|
||||
* IntoClause - target information for SELECT INTO and CREATE TABLE AS
|
||||
*/
|
||||
typedef struct IntoClause
|
||||
{
|
||||
NodeTag type;
|
||||
|
||||
RangeVar *rel; /* target relation name */
|
||||
List *colNames; /* column names to assign, or NIL */
|
||||
List *options; /* options from WITH clause */
|
||||
OnCommitAction onCommit; /* what do we do at COMMIT? */
|
||||
char *tableSpaceName; /* table space to use, or NULL */
|
||||
} IntoClause;
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* node types for executable expressions
|
||||
|
||||
Reference in New Issue
Block a user