diff options
| author | Tom Lane | 2003-05-05 00:44:56 +0000 |
|---|---|---|
| committer | Tom Lane | 2003-05-05 00:44:56 +0000 |
| commit | 16503e6fa4a13051debe09698b6db9ce0d509af8 (patch) | |
| tree | b8165b6e9481ec187aee0b54f0cb722915d1090a /src/include/commands | |
| parent | a59793f82c8bb7d9931dab8675d91e06c1a41f5a (diff) | |
Extended query protocol: parse, bind, execute, describe FE/BE messages.
Only lightly tested as yet, since libpq doesn't know anything about 'em.
Diffstat (limited to 'src/include/commands')
| -rw-r--r-- | src/include/commands/portalcmds.h | 4 | ||||
| -rw-r--r-- | src/include/commands/prepare.h | 42 |
2 files changed, 40 insertions, 6 deletions
diff --git a/src/include/commands/portalcmds.h b/src/include/commands/portalcmds.h index efa60869fa6..f89ac36fa57 100644 --- a/src/include/commands/portalcmds.h +++ b/src/include/commands/portalcmds.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: portalcmds.h,v 1.8 2003/05/02 20:54:35 tgl Exp $ + * $Id: portalcmds.h,v 1.9 2003/05/05 00:44:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -22,7 +22,7 @@ extern void PerformCursorOpen(DeclareCursorStmt *stmt, CommandDest dest); extern void PerformPortalFetch(FetchStmt *stmt, CommandDest dest, char *completionTag); -extern void PerformPortalClose(char *name); +extern void PerformPortalClose(const char *name); extern void PortalCleanup(Portal portal, bool isError); diff --git a/src/include/commands/prepare.h b/src/include/commands/prepare.h index aad64166757..5d24c579a40 100644 --- a/src/include/commands/prepare.h +++ b/src/include/commands/prepare.h @@ -1,12 +1,12 @@ /*------------------------------------------------------------------------- * * prepare.h - * PREPARE, EXECUTE and DEALLOCATE command prototypes + * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage * * - * Copyright (c) 2002, PostgreSQL Global Development Group + * Copyright (c) 2002-2003, PostgreSQL Global Development Group * - * $Id: prepare.h,v 1.3 2003/02/02 23:46:38 tgl Exp $ + * $Id: prepare.h,v 1.4 2003/05/05 00:44:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -18,10 +18,44 @@ #include "tcop/dest.h" +/* + * The data structure representing a prepared statement + * + * 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. + */ +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 */ +} PreparedStatement; + + +/* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */ extern void PrepareQuery(PrepareStmt *stmt); extern void ExecuteQuery(ExecuteStmt *stmt, CommandDest outputDest); extern void DeallocateQuery(DeallocateStmt *stmt); -extern List *FetchQueryParams(const char *plan_name); extern void ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate); +/* Low-level access to stored prepared statements */ +extern void StorePreparedStatement(const char *stmt_name, + const char *query_string, + const char *commandTag, + List *query_list, + List *plan_list, + List *argtype_list); +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); + #endif /* PREPARE_H */ |
