]> granicus.if.org Git - postgresql/blobdiff - src/include/executor/execdesc.h
Fix initialization of fake LSN for unlogged relations
[postgresql] / src / include / executor / execdesc.h
index 48d01df1b64ed31d5868c8a06040a76f64216e2d..b88fa02d3b737796797264b6d938bfa709a32b4c 100644 (file)
@@ -5,7 +5,7 @@
  *       and related modules.
  *
  *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/include/executor/execdesc.h
@@ -34,39 +34,37 @@ typedef struct QueryDesc
 {
        /* These fields are provided by CreateQueryDesc */
        CmdType         operation;              /* CMD_SELECT, CMD_UPDATE, etc. */
-       PlannedStmt *plannedstmt;       /* planner's output, or null if utility */
-       Node       *utilitystmt;        /* utility statement, or null */
+       PlannedStmt *plannedstmt;       /* planner's output (could be utility, too) */
        const char *sourceText;         /* source text of the query */
        Snapshot        snapshot;               /* snapshot to use for query */
        Snapshot        crosscheck_snapshot;    /* crosscheck for RI update/delete */
        DestReceiver *dest;                     /* the destination for tuple output */
        ParamListInfo params;           /* param values being passed in */
-       int                     instrument_options;             /* OR of InstrumentOption flags */
+       QueryEnvironment *queryEnv; /* query environment passed in */
+       int                     instrument_options; /* OR of InstrumentOption flags */
 
        /* These fields are set by ExecutorStart */
        TupleDesc       tupDesc;                /* descriptor for result tuples */
        EState     *estate;                     /* executor's query-wide state */
        PlanState  *planstate;          /* tree of per-plan-node state */
 
+       /* This field is set by ExecutorRun */
+       bool            already_executed;       /* true if previously executed */
+
        /* This is always set NULL by the core system, but plugins can change it */
        struct Instrumentation *totaltime;      /* total time spent in ExecutorRun */
 } QueryDesc;
 
 /* in pquery.c */
 extern QueryDesc *CreateQueryDesc(PlannedStmt *plannedstmt,
-                               const char *sourceText,
-                               Snapshot snapshot,
-                               Snapshot crosscheck_snapshot,
-                               DestReceiver *dest,
-                               ParamListInfo params,
-                               int instrument_options);
-
-extern QueryDesc *CreateUtilityQueryDesc(Node *utilitystmt,
-                                          const char *sourceText,
-                                          Snapshot snapshot,
-                                          DestReceiver *dest,
-                                          ParamListInfo params);
+                                                                 const char *sourceText,
+                                                                 Snapshot snapshot,
+                                                                 Snapshot crosscheck_snapshot,
+                                                                 DestReceiver *dest,
+                                                                 ParamListInfo params,
+                                                                 QueryEnvironment *queryEnv,
+                                                                 int instrument_options);
 
 extern void FreeQueryDesc(QueryDesc *qdesc);
 
-#endif   /* EXECDESC_H  */
+#endif                                                 /* EXECDESC_H  */