]> 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 1bfb27e2c135629eec04890d3c298011c9bb5e86..b88fa02d3b737796797264b6d938bfa709a32b4c 100644 (file)
@@ -5,10 +5,10 @@
  *       and related modules.
  *
  *
- * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/executor/execdesc.h,v 1.36 2007/11/15 22:25:17 momjian Exp $
+ * src/include/executor/execdesc.h
  *
  *-------------------------------------------------------------------------
  */
@@ -16,7 +16,6 @@
 #define EXECDESC_H
 
 #include "nodes/execnodes.h"
-#include "nodes/plannodes.h"
 #include "tcop/dest.h"
 
 
@@ -35,33 +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 */
-       bool            doInstrument;   /* TRUE requests runtime instrumentation */
+       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,
-                               Snapshot snapshot,
-                               Snapshot crosscheck_snapshot,
-                               DestReceiver *dest,
-                               ParamListInfo params,
-                               bool doInstrument);
-
-extern QueryDesc *CreateUtilityQueryDesc(Node *utilitystmt,
-                                          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  */