| 1 | /*------------------------------------------------------------------------- |
| 2 | * |
| 3 | * prepare.h |
| 4 | * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage |
| 5 | * |
| 6 | * |
| 7 | * Copyright (c) 2002-2019, PostgreSQL Global Development Group |
| 8 | * |
| 9 | * src/include/commands/prepare.h |
| 10 | * |
| 11 | *------------------------------------------------------------------------- |
| 12 | */ |
| 13 | #ifndef PREPARE_H |
| 14 | #define PREPARE_H |
| 15 | |
| 16 | #include "commands/explain.h" |
| 17 | #include "datatype/timestamp.h" |
| 18 | #include "utils/plancache.h" |
| 19 | |
| 20 | /* |
| 21 | * The data structure representing a prepared statement. This is now just |
| 22 | * a thin veneer over a plancache entry --- the main addition is that of |
| 23 | * a name. |
| 24 | * |
| 25 | * Note: all subsidiary storage lives in the referenced plancache entry. |
| 26 | */ |
| 27 | typedef struct |
| 28 | { |
| 29 | /* dynahash.c requires key to be first field */ |
| 30 | char stmt_name[NAMEDATALEN]; |
| 31 | CachedPlanSource *plansource; /* the actual cached plan */ |
| 32 | bool from_sql; /* prepared via SQL, not FE/BE protocol? */ |
| 33 | TimestampTz prepare_time; /* the time when the stmt was prepared */ |
| 34 | } PreparedStatement; |
| 35 | |
| 36 | |
| 37 | /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */ |
| 38 | extern void PrepareQuery(PrepareStmt *stmt, const char *queryString, |
| 39 | int stmt_location, int stmt_len); |
| 40 | extern void ExecuteQuery(ExecuteStmt *stmt, IntoClause *intoClause, |
| 41 | const char *queryString, ParamListInfo params, |
| 42 | DestReceiver *dest, char *completionTag); |
| 43 | extern void DeallocateQuery(DeallocateStmt *stmt); |
| 44 | extern void ExplainExecuteQuery(ExecuteStmt *execstmt, IntoClause *into, |
| 45 | ExplainState *es, const char *queryString, |
| 46 | ParamListInfo params, QueryEnvironment *queryEnv); |
| 47 | |
| 48 | /* Low-level access to stored prepared statements */ |
| 49 | extern void StorePreparedStatement(const char *stmt_name, |
| 50 | CachedPlanSource *plansource, |
| 51 | bool from_sql); |
| 52 | extern PreparedStatement *FetchPreparedStatement(const char *stmt_name, |
| 53 | bool throwError); |
| 54 | extern void DropPreparedStatement(const char *stmt_name, bool showError); |
| 55 | extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt); |
| 56 | extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt); |
| 57 | |
| 58 | extern void DropAllPreparedStatements(void); |
| 59 | |
| 60 | #endif /* PREPARE_H */ |
| 61 | |