summaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/statement.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/odbc/statement.h')
-rw-r--r--src/interfaces/odbc/statement.h209
1 files changed, 118 insertions, 91 deletions
diff --git a/src/interfaces/odbc/statement.h b/src/interfaces/odbc/statement.h
index ae2df856b2..9907c28ae9 100644
--- a/src/interfaces/odbc/statement.h
+++ b/src/interfaces/odbc/statement.h
@@ -1,9 +1,9 @@
-/* File: statement.h
+/* File: statement.h
*
- * Description: See "statement.c"
+ * Description: See "statement.c"
*
- * Comments: See "notice.txt" for copyright and license information.
+ * Comments: See "notice.txt" for copyright and license information.
*
*/
@@ -33,21 +33,28 @@
#define TRUE (BOOL)1
#endif
-typedef enum {
- STMT_ALLOCATED, /* The statement handle is allocated, but not used so far */
- STMT_READY, /* the statement is waiting to be executed */
- STMT_PREMATURE, /* ODBC states that it is legal to call e.g. SQLDescribeCol before
- a call to SQLExecute, but after SQLPrepare. To get all the necessary
- information in such a case, we simply execute the query _before_ the
- actual call to SQLExecute, so that statement is considered to be "premature".
- */
- STMT_FINISHED, /* statement execution has finished */
- STMT_EXECUTING /* statement execution is still going on */
+typedef enum
+{
+ STMT_ALLOCATED, /* The statement handle is allocated, but
+ * not used so far */
+ STMT_READY, /* the statement is waiting to be executed */
+ STMT_PREMATURE, /* ODBC states that it is legal to call
+ * e.g. SQLDescribeCol before a call to
+ * SQLExecute, but after SQLPrepare. To
+ * get all the necessary information in
+ * such a case, we simply execute the
+ * query _before_ the actual call to
+ * SQLExecute, so that statement is
+ * considered to be "premature". */
+ STMT_FINISHED, /* statement execution has finished */
+ STMT_EXECUTING /* statement execution is still going on */
} STMT_Status;
#define STMT_TRUNCATED -2
-#define STMT_INFO_ONLY -1 /* not an error message, just a notification to be returned by SQLError */
-#define STMT_OK 0 /* will be interpreted as "no error pending" */
+#define STMT_INFO_ONLY -1 /* not an error message, just a
+ * notification to be returned by SQLError */
+#define STMT_OK 0 /* will be interpreted as "no error
+ * pending" */
#define STMT_EXEC_ERROR 1
#define STMT_STATUS_ERROR 2
#define STMT_SEQUENCE_ERROR 3
@@ -77,7 +84,8 @@ typedef enum {
#define STMT_BAD_ERROR 27
/* statement types */
-enum {
+enum
+{
STMT_TYPE_UNKNOWN = -2,
STMT_TYPE_OTHER = -1,
STMT_TYPE_SELECT = 0,
@@ -95,7 +103,8 @@ enum {
/* Parsing status */
-enum {
+enum
+{
STMT_PARSE_NONE = 0,
STMT_PARSE_COMPLETE,
STMT_PARSE_INCOMPLETE,
@@ -103,92 +112,110 @@ enum {
};
/* Result style */
-enum {
+enum
+{
STMT_FETCH_NONE = 0,
STMT_FETCH_NORMAL,
STMT_FETCH_EXTENDED,
};
-typedef struct {
- COL_INFO *col_info; /* cached SQLColumns info for this table */
- char name[MAX_TABLE_LEN+1];
- char alias[MAX_TABLE_LEN+1];
+typedef struct
+{
+ COL_INFO *col_info; /* cached SQLColumns info for this table */
+ char name[MAX_TABLE_LEN + 1];
+ char alias[MAX_TABLE_LEN + 1];
} TABLE_INFO;
-typedef struct {
- TABLE_INFO *ti; /* resolve to explicit table names */
- int precision;
- int display_size;
- int length;
- int type;
- char nullable;
- char func;
- char expr;
- char quote;
- char dquote;
- char numeric;
- char dot[MAX_TABLE_LEN+1];
- char name[MAX_COLUMN_LEN+1];
- char alias[MAX_COLUMN_LEN+1];
+typedef struct
+{
+ TABLE_INFO *ti; /* resolve to explicit table names */
+ int precision;
+ int display_size;
+ int length;
+ int type;
+ char nullable;
+ char func;
+ char expr;
+ char quote;
+ char dquote;
+ char numeric;
+ char dot[MAX_TABLE_LEN + 1];
+ char name[MAX_COLUMN_LEN + 1];
+ char alias[MAX_COLUMN_LEN + 1];
} FIELD_INFO;
/******** Statement Handle ***********/
-struct StatementClass_ {
- ConnectionClass *hdbc; /* pointer to ConnectionClass this statement belongs to */
- QResultClass *result; /* result of the current statement */
- HSTMT FAR *phstmt;
+struct StatementClass_
+{
+ ConnectionClass *hdbc; /* pointer to ConnectionClass this
+ * statement belongs to */
+ QResultClass *result; /* result of the current statement */
+ HSTMT FAR *phstmt;
StatementOptions options;
- STMT_Status status;
- char *errormsg;
- int errornumber;
+ STMT_Status status;
+ char *errormsg;
+ int errornumber;
- /* information on bindings */
- BindInfoClass *bindings; /* array to store the binding information */
+ /* information on bindings */
+ BindInfoClass *bindings; /* array to store the binding information */
BindInfoClass bookmark;
- int bindings_allocated;
-
- /* information on statement parameters */
- int parameters_allocated;
- ParameterInfoClass *parameters;
-
- Int4 currTuple; /* current absolute row number (GetData, SetPos, SQLFetch) */
- int save_rowset_size; /* saved rowset size in case of change/FETCH_NEXT */
- int rowset_start; /* start of rowset (an absolute row number) */
- int bind_row; /* current offset for Multiple row/column binding */
- int last_fetch_count; /* number of rows retrieved in last fetch/extended fetch */
- int current_col; /* current column for GetData -- used to handle multiple calls */
- int lobj_fd; /* fd of the current large object */
-
- char *statement; /* if non--null pointer to the SQL statement that has been executed */
-
- TABLE_INFO **ti;
- FIELD_INFO **fi;
+ int bindings_allocated;
+
+ /* information on statement parameters */
+ int parameters_allocated;
+ ParameterInfoClass *parameters;
+
+ Int4 currTuple; /* current absolute row number (GetData,
+ * SetPos, SQLFetch) */
+ int save_rowset_size; /* saved rowset size in case of
+ * change/FETCH_NEXT */
+ int rowset_start; /* start of rowset (an absolute row
+ * number) */
+ int bind_row; /* current offset for Multiple row/column
+ * binding */
+ int last_fetch_count; /* number of rows retrieved in
+ * last fetch/extended fetch */
+ int current_col; /* current column for GetData -- used to
+ * handle multiple calls */
+ int lobj_fd; /* fd of the current large object */
+
+ char *statement; /* if non--null pointer to the SQL
+ * statement that has been executed */
+
+ TABLE_INFO **ti;
+ FIELD_INFO **fi;
int nfld;
int ntab;
- int parse_status;
+ int parse_status;
- int statement_type; /* According to the defines above */
- int data_at_exec; /* Number of params needing SQLPutData */
- int current_exec_param; /* The current parameter for SQLPutData */
+ int statement_type; /* According to the defines above */
+ int data_at_exec; /* Number of params needing SQLPutData */
+ int current_exec_param; /* The current parameter for
+ * SQLPutData */
- char put_data; /* Has SQLPutData been called yet? */
+ char put_data; /* Has SQLPutData been called yet? */
- char errormsg_created; /* has an informative error msg been created? */
- char manual_result; /* Is the statement result manually built? */
- char prepare; /* is this statement a prepared statement or direct */
+ char errormsg_created; /* has an informative error msg
+ * been created? */
+ char manual_result; /* Is the statement result manually built? */
+ char prepare; /* is this statement a prepared statement
+ * or direct */
- char internal; /* Is this statement being called internally? */
+ char internal; /* Is this statement being called
+ * internally? */
- char cursor_name[MAX_CURSOR_LEN+1];
+ char cursor_name[MAX_CURSOR_LEN + 1];
- char stmt_with_params[STD_STATEMENT_LEN]; /* statement after parameter substitution */
+ char stmt_with_params[STD_STATEMENT_LEN]; /* statement after
+ * parameter
+ * substitution */
};
-#define SC_get_conn(a) (a->hdbc)
+#define SC_get_conn(a) (a->hdbc)
#define SC_get_Result(a) (a->result);
/* options for SC_free_params() */
@@ -197,21 +224,21 @@ struct StatementClass_ {
/* Statement prototypes */
StatementClass *SC_Constructor(void);
-void InitializeStatementOptions(StatementOptions *opt);
-char SC_Destructor(StatementClass *self);
-int statement_type(char *statement);
-char parse_statement(StatementClass *stmt);
-void SC_pre_execute(StatementClass *self);
-char SC_unbind_cols(StatementClass *self);
-char SC_recycle_statement(StatementClass *self);
-
-void SC_clear_error(StatementClass *self);
-char SC_get_error(StatementClass *self, int *number, char **message);
-char *SC_create_errormsg(StatementClass *self);
-RETCODE SC_execute(StatementClass *self);
-RETCODE SC_fetch(StatementClass *self);
-void SC_free_params(StatementClass *self, char option);
-void SC_log_error(char *func, char *desc, StatementClass *self);
+void InitializeStatementOptions(StatementOptions *opt);
+char SC_Destructor(StatementClass *self);
+int statement_type(char *statement);
+char parse_statement(StatementClass *stmt);
+void SC_pre_execute(StatementClass *self);
+char SC_unbind_cols(StatementClass *self);
+char SC_recycle_statement(StatementClass *self);
+
+void SC_clear_error(StatementClass *self);
+char SC_get_error(StatementClass *self, int *number, char **message);
+char *SC_create_errormsg(StatementClass *self);
+RETCODE SC_execute(StatementClass *self);
+RETCODE SC_fetch(StatementClass *self);
+void SC_free_params(StatementClass *self, char option);
+void SC_log_error(char *func, char *desc, StatementClass *self);
unsigned long SC_get_bookmark(StatementClass *self);