]> granicus.if.org Git - postgresql/blobdiff - src/include/commands/prepare.h
Remove cvs keywords from all files.
[postgresql] / src / include / commands / prepare.h
index fdbea2c6083bdb4b2e221d4874b283d9490ef8c3..68251cd638f6fdb2834f7409e0b3cc5b7575f676 100644 (file)
@@ -4,59 +4,61 @@
  *       PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage
  *
  *
- * Copyright (c) 2002-2003, PostgreSQL Global Development Group
+ * Copyright (c) 2002-2010, PostgreSQL Global Development Group
  *
- * $Id: prepare.h,v 1.8 2003/08/08 21:42:40 momjian Exp $
+ * src/include/commands/prepare.h
  *
  *-------------------------------------------------------------------------
  */
 #ifndef PREPARE_H
 #define PREPARE_H
 
-#include "executor/executor.h"
-#include "nodes/parsenodes.h"
-#include "tcop/dest.h"
-
+#include "commands/explain.h"
+#include "utils/plancache.h"
+#include "utils/timestamp.h"
 
 /*
- * The data structure representing a prepared statement
+ * The data structure representing a prepared statement.  This is now just
+ * a thin veneer over a plancache entry --- the main addition is that of
+ * a name.
  *
- * Note: all subsidiary storage lives in the context denoted by the context
- * field.  However, the string referenced by commandTag is not subsidiary
- * storage; it is assumed to be a compile-time-constant string.  As with
- * portals, commandTag shall be NULL if and only if the original query string
- * (before rewriting) was an empty string.
+ * Note: all subsidiary storage lives in the referenced plancache entry.
  */
 typedef struct
 {
        /* dynahash.c requires key to be first field */
        char            stmt_name[NAMEDATALEN];
-       char       *query_string;       /* text of query, or NULL */
-       const char *commandTag;         /* command tag (a constant!), or NULL */
-       List       *query_list;         /* list of queries */
-       List       *plan_list;          /* list of plans */
-       List       *argtype_list;       /* list of parameter type OIDs */
-       MemoryContext context;          /* context containing this query */
+       CachedPlanSource *plansource;           /* the actual cached plan */
+       bool            from_sql;               /* prepared via SQL, not FE/BE protocol? */
+       TimestampTz prepare_time;       /* the time when the stmt was prepared */
 } PreparedStatement;
 
 
 /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */
-extern void PrepareQuery(PrepareStmt *stmt);
-extern void ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest);
+extern void PrepareQuery(PrepareStmt *stmt, const char *queryString);
+extern void ExecuteQuery(ExecuteStmt *stmt, const char *queryString,
+                        ParamListInfo params,
+                        DestReceiver *dest, char *completionTag);
 extern void DeallocateQuery(DeallocateStmt *stmt);
-extern void ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate);
+extern void ExplainExecuteQuery(ExecuteStmt *execstmt, ExplainState *es,
+                                       const char *queryString, ParamListInfo params);
 
 /* Low-level access to stored prepared statements */
 extern void StorePreparedStatement(const char *stmt_name,
+                                          Node *raw_parse_tree,
                                           const char *query_string,
                                           const char *commandTag,
-                                          List *query_list,
-                                          List *plan_list,
-                                          List *argtype_list);
+                                          Oid *param_types,
+                                          int num_params,
+                                          int cursor_options,
+                                          List *stmt_list,
+                                          bool from_sql);
 extern PreparedStatement *FetchPreparedStatement(const char *stmt_name,
                                           bool throwError);
 extern void DropPreparedStatement(const char *stmt_name, bool showError);
-extern List *FetchPreparedStatementParams(const char *stmt_name);
 extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt);
+extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt);
+
+void           DropAllPreparedStatements(void);
 
 #endif   /* PREPARE_H */