aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execUtils.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-01-23 05:10:41 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-01-23 05:10:41 +0000
commit790d5bc9922d515f04b83182b1767a4eaa37cdb7 (patch)
tree0848e2f31ddfc2c4cb03b8344405f15d110343f5 /src/backend/executor/execUtils.c
parent742403bdad1884c95c2ad673d6b9e7c341b31a56 (diff)
downloadpostgresql-790d5bc9922d515f04b83182b1767a4eaa37cdb7.tar.gz
postgresql-790d5bc9922d515f04b83182b1767a4eaa37cdb7.zip
Change CREATE TABLE AS / SELECT INTO to create the new table with OIDs,
for backwards compatibility with pre-7.3 behavior. Per discussion on pgsql-general and pgsql-hackers.
Diffstat (limited to 'src/backend/executor/execUtils.c')
-rw-r--r--src/backend/executor/execUtils.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 63eede22802..90bd8adf1ae 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.95 2003/01/12 04:03:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.96 2003/01/23 05:10:39 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -199,6 +199,7 @@ CreateExecutorState(void)
estate->es_rowMark = NIL;
estate->es_instrument = false;
+ estate->es_force_oids = false;
estate->es_exprcontexts = NIL;
@@ -424,7 +425,6 @@ ExecAssignResultTypeFromOuterPlan(PlanState *planstate)
void
ExecAssignResultTypeFromTL(PlanState *planstate)
{
- ResultRelInfo *ri;
bool hasoid = false;
TupleDesc tupDesc;
@@ -444,14 +444,24 @@ ExecAssignResultTypeFromTL(PlanState *planstate)
* have to make the decision on a per-relation basis as we initialize
* each of the child plans of the topmost Append plan. So, this is
* ugly but it works, for now ...
+ *
+ * SELECT INTO is also pretty grotty, because we don't yet have the
+ * INTO relation's descriptor at this point; we have to look aside
+ * at a flag set by InitPlan().
*/
- ri = planstate->state->es_result_relation_info;
- if (ri != NULL)
+ if (planstate->state->es_force_oids)
+ hasoid = true;
+ else
{
- Relation rel = ri->ri_RelationDesc;
+ ResultRelInfo *ri = planstate->state->es_result_relation_info;
- if (rel != NULL)
- hasoid = rel->rd_rel->relhasoids;
+ if (ri != NULL)
+ {
+ Relation rel = ri->ri_RelationDesc;
+
+ if (rel != NULL)
+ hasoid = rel->rd_rel->relhasoids;
+ }
}
/*