| /*------------------------------------------------------------------------- |
| * |
| * prepare.h |
| * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage |
| * |
| * |
| * Copyright (c) 2002-2021, PostgreSQL Global Development Group |
| * |
| * src/include/commands/prepare.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| #ifndef PREPARE_H |
| #define PREPARE_H |
| |
| #include "commands/explain.h" |
| #include "datatype/timestamp.h" |
| #include "utils/plancache.h" |
| |
| /* |
| * 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 referenced plancache entry. |
| */ |
| typedef struct |
| { |
| /* dynahash.c requires key to be first field */ |
| char stmt_name[NAMEDATALEN]; |
| 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(ParseState *pstate, PrepareStmt *stmt, |
| int stmt_location, int stmt_len); |
| extern void ExecuteQuery(ParseState *pstate, |
| ExecuteStmt *stmt, IntoClause *intoClause, |
| ParamListInfo params, |
| DestReceiver *dest, QueryCompletion *qc); |
| extern void DeallocateQuery(DeallocateStmt *stmt); |
| extern void ExplainExecuteQuery(ExecuteStmt *execstmt, IntoClause *into, |
| ExplainState *es, const char *queryString, |
| ParamListInfo params, QueryEnvironment *queryEnv); |
| |
| /* Low-level access to stored prepared statements */ |
| extern void StorePreparedStatement(const char *stmt_name, |
| CachedPlanSource *plansource, |
| bool from_sql); |
| extern PreparedStatement *FetchPreparedStatement(const char *stmt_name, |
| bool throwError); |
| extern void DropPreparedStatement(const char *stmt_name, bool showError); |
| extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt); |
| extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt); |
| |
| extern void DropAllPreparedStatements(void); |
| |
| #endif /* PREPARE_H */ |