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.h80
1 files changed, 48 insertions, 32 deletions
diff --git a/src/interfaces/odbc/statement.h b/src/interfaces/odbc/statement.h
index cc8e103d847..24f58bf0506 100644
--- a/src/interfaces/odbc/statement.h
+++ b/src/interfaces/odbc/statement.h
@@ -1,11 +1,11 @@
-
-/* File: statement.h
- *
- * Description: See "statement.c"
- *
- * Comments: See "notice.txt" for copyright and license information.
- *
- */
+
+/* File: statement.h
+ *
+ * Description: See "statement.c"
+ *
+ * Comments: See "notice.txt" for copyright and license information.
+ *
+ */
#ifndef __STATEMENT_H__
#define __STATEMENT_H__
@@ -45,18 +45,26 @@ typedef enum {
#define STMT_RESTRICTED_DATA_TYPE_ERROR 14
#define STMT_INVALID_CURSOR_STATE_ERROR 15
#define STMT_OPTION_VALUE_CHANGED 16
-
+#define STMT_CREATE_TABLE_ERROR 17
+#define STMT_NO_CURSOR_NAME 18
+#define STMT_INVALID_CURSOR_NAME 19
/* statement types */
-#define STMT_TYPE_SELECT 0
-#define STMT_TYPE_INSERT 1
-#define STMT_TYPE_UPDATE 2
-#define STMT_TYPE_DELETE 3
-#define STMT_TYPE_OTHER 4
-#define STMT_TYPE_UNKNOWN 666 // 'unknown' means we don't have the statement yet,
- // or haven't looked at it to see what type it is.
- // 'other' means we looked, but couldn't tell.
+enum {
+ STMT_TYPE_UNKNOWN = -2,
+ STMT_TYPE_OTHER = -1,
+ STMT_TYPE_SELECT = 0,
+ STMT_TYPE_INSERT,
+ STMT_TYPE_UPDATE,
+ STMT_TYPE_DELETE,
+ STMT_TYPE_CREATE,
+ STMT_TYPE_ALTER,
+ STMT_TYPE_DROP,
+ STMT_TYPE_GRANT,
+ STMT_TYPE_REVOKE,
+};
+#define STMT_UPDATE(stmt) (stmt->statement_type > STMT_TYPE_SELECT)
/******** Statement Handle ***********/
struct StatementClass_ {
@@ -68,6 +76,9 @@ struct StatementClass_ {
char *errormsg;
int errornumber;
int maxRows;
+ int rowset_size;
+ int cursor_type;
+ int scroll_concurrency;
/* information on bindings */
BindInfoClass *bindings; /* array to store the binding information */
@@ -78,30 +89,35 @@ struct StatementClass_ {
ParameterInfoClass *parameters;
Int4 currTuple;
+ 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 */
-
+
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? */
+ 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 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 stmt_with_params[65536 /* MAX_STATEMENT_LEN */]; /* statement after parameter substitution */
+ char prepare; /* is this statement a prepared statement or direct */
+
+ char internal; /* Is this statement being called internally? */
+
+ char cursor_name[32];
+ char stmt_with_params[65536 /* MAX_STATEMENT_LEN */]; /* statement after parameter substitution */
};
#define SC_get_conn(a) (a->hdbc)
#define SC_get_Result(a) (a->result);
-
-/* options for SC_free_params() */
-#define STMT_FREE_PARAMS_ALL 0
-#define STMT_FREE_PARAMS_DATA_AT_EXEC_ONLY 1
-
+
+/* options for SC_free_params() */
+#define STMT_FREE_PARAMS_ALL 0
+#define STMT_FREE_PARAMS_DATA_AT_EXEC_ONLY 1
+
/* Statement prototypes */
StatementClass *SC_Constructor();
char SC_Destructor(StatementClass *self);
@@ -113,7 +129,7 @@ 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 *stmt);
-void SC_free_params(StatementClass *self, char option);
+RETCODE SC_execute(StatementClass *stmt);
+void SC_free_params(StatementClass *self, char option);
#endif