diff options
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r-- | src/backend/executor/execMain.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 51478f06253..7a8730ce021 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.71 1999/02/06 16:50:23 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.72 1999/02/07 13:37:55 wieck Exp $ * *------------------------------------------------------------------------- */ @@ -128,8 +128,22 @@ ExecutorStart(QueryDesc *queryDesc, EState *estate) memset(estate->es_param_exec_vals, 0, queryDesc->plantree->nParamExec * sizeof(ParamExecData)); } - estate->es_snapshot = QuerySnapshot; + /* + * Make our own private copy of the current queries snapshot data + */ + estate->es_snapshot = (Snapshot)palloc(sizeof(SnapshotData)); + memcpy(estate->es_snapshot, QuerySnapshot, sizeof(SnapshotData)); + if (estate->es_snapshot->xcnt > 0) + { + estate->es_snapshot->xip = (TransactionId *) + palloc(estate->es_snapshot->xcnt * sizeof(TransactionId)); + memcpy(estate->es_snapshot->xip, QuerySnapshot->xip, + estate->es_snapshot->xcnt * sizeof(TransactionId)); + } + /* + * Initialize the plan + */ result = InitPlan(queryDesc->operation, queryDesc->parsetree, queryDesc->plantree, |