Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef DBALLE_DB_INTERNALS_H
00023 #define DBALLE_DB_INTERNALS_H
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00036 #include <dballe/db/querybuf.h>
00037 #include <dballe/db/odbcworkarounds.h>
00038
00039 #include <sqltypes.h>
00040
00045
00046
00047 #ifdef TRACE_DB
00048 #define TRACE(...) fprintf(stderr, __VA_ARGS__)
00049 #define IFTRACE if (1)
00050 #else
00051
00052 #define TRACE(...) do { } while (0)
00053
00054 #define IFTRACE if (0)
00055 #endif
00056
00060 struct _dba_db_repinfo;
00061 struct _dba_db_pseudoana;
00062 struct _dba_db_context;
00063 struct _dba_db_data;
00064 struct _dba_db_attr;
00065 struct _dba_db_seq;
00066
00070 enum dba_db_server_type
00071 {
00072 MYSQL,
00073 SQLITE,
00074 ORACLE,
00075 POSTGRES,
00076 };
00077
00081 struct _dba_db
00082 {
00084 SQLHDBC od_conn;
00086 int connected;
00088 enum dba_db_server_type server_type;
00089
00098 struct _dba_db_repinfo* repinfo;
00100 struct _dba_db_pseudoana* pseudoana;
00102 struct _dba_db_context* context;
00104 struct _dba_db_data* data;
00106 struct _dba_db_attr* attr;
00116 struct _dba_db_seq* seq_pseudoana;
00118 struct _dba_db_seq* seq_context;
00122 SQLHSTMT stm_begin;
00124 SQLHSTMT stm_commit;
00126 SQLHSTMT stm_rollback;
00128 SQLHSTMT stm_last_insert_id;
00130 DBALLE_SQL_C_SINT_TYPE last_insert_id;
00131 };
00132 #ifndef DBA_DB_DEFINED
00133 #define DBA_DB_DEFINED
00134
00135 typedef struct _dba_db* dba_db;
00136 #endif
00137
00142 struct _dba_db_cursor
00143 {
00145 dba_db db;
00147 SQLHSTMT stm;
00148
00150 dba_querybuf query;
00151
00153 dba_querybuf where;
00154
00156 unsigned int wanted;
00157
00159 unsigned int modifiers;
00160
00162 unsigned int select_wanted;
00163
00165 unsigned int from_wanted;
00166
00168 unsigned int input_seq;
00169
00171 unsigned int output_seq;
00172
00174 int accept_from_ana_context;
00175
00179 SQL_TIMESTAMP_STRUCT sel_dtmin;
00180 SQL_TIMESTAMP_STRUCT sel_dtmax;
00181 DBALLE_SQL_C_SINT_TYPE sel_latmin;
00182 DBALLE_SQL_C_SINT_TYPE sel_latmax;
00183 DBALLE_SQL_C_SINT_TYPE sel_lonmin;
00184 DBALLE_SQL_C_SINT_TYPE sel_lonmax;
00185 char sel_ident[64];
00186 DBALLE_SQL_C_SINT_TYPE sel_ltype1;
00187 DBALLE_SQL_C_SINT_TYPE sel_l1;
00188 DBALLE_SQL_C_SINT_TYPE sel_ltype2;
00189 DBALLE_SQL_C_SINT_TYPE sel_l2;
00190 DBALLE_SQL_C_SINT_TYPE sel_pind;
00191 DBALLE_SQL_C_SINT_TYPE sel_p1;
00192 DBALLE_SQL_C_SINT_TYPE sel_p2;
00193 DBALLE_SQL_C_SINT_TYPE sel_b;
00194 DBALLE_SQL_C_SINT_TYPE sel_rep_cod;
00195 DBALLE_SQL_C_SINT_TYPE sel_ana_id;
00196 DBALLE_SQL_C_SINT_TYPE sel_context_id;
00202 DBALLE_SQL_C_SINT_TYPE out_lat;
00203 DBALLE_SQL_C_SINT_TYPE out_lon;
00204 char out_ident[64]; SQLLEN out_ident_ind;
00205 DBALLE_SQL_C_SINT_TYPE out_ltype1;
00206 DBALLE_SQL_C_SINT_TYPE out_l1;
00207 DBALLE_SQL_C_SINT_TYPE out_ltype2;
00208 DBALLE_SQL_C_SINT_TYPE out_l2;
00209 DBALLE_SQL_C_SINT_TYPE out_pind;
00210 DBALLE_SQL_C_SINT_TYPE out_p1;
00211 DBALLE_SQL_C_SINT_TYPE out_p2;
00212 DBALLE_SQL_C_SINT_TYPE out_idvar;
00213 SQL_TIMESTAMP_STRUCT out_datetime;
00214 char out_value[255];
00215 DBALLE_SQL_C_SINT_TYPE out_rep_cod;
00216 DBALLE_SQL_C_SINT_TYPE out_ana_id;
00217 DBALLE_SQL_C_SINT_TYPE out_context_id;
00218 DBALLE_SQL_C_SINT_TYPE out_priority;
00222 int count;
00223 };
00224
00225 struct _dba_db_seq
00226 {
00227 SQLHSTMT stm;
00228 DBALLE_SQL_C_SINT_TYPE out;
00229 };
00230
00231 typedef struct _dba_db_seq* dba_db_seq;
00232
00236 dba_err dba_db_error_odbc(SQLSMALLINT handleType, SQLHANDLE handle, const char* fmt, ...);
00237
00245 dba_err dba_db_error_odbc_except(const char* error_to_ignore, SQLSMALLINT handleType, SQLHANDLE handle, const char* fmt, ...);
00246
00250 dba_err dba_db_statement_create(dba_db db, SQLHSTMT* stm);
00251
00255 dba_err dba_db_last_insert_id(dba_db db, int* id);
00256
00260 dba_err dba_db_seq_create(dba_db db, const char* name, dba_db_seq* seq);
00261
00265 dba_err dba_db_seq_read(dba_db_seq seq);
00266
00270 void dba_db_seq_delete(dba_db_seq seq);
00271
00275 dba_err dba_db_drop_table_if_exists(dba_db db, const char* name);
00276
00280 dba_err dba_db_run_sql(dba_db db, const char* query);
00281
00285 dba_err dba_db_begin(dba_db db);
00286
00290 dba_err dba_db_commit(dba_db db);
00291
00295 void dba_db_rollback(dba_db db);
00296
00300 dba_err dba_db_need_repinfo(dba_db db);
00301
00305 dba_err dba_db_need_pseudoana(dba_db db);
00306
00310 dba_err dba_db_need_context(dba_db db);
00311
00315 dba_err dba_db_need_data(dba_db db);
00316
00320 dba_err dba_db_need_attr(dba_db db);
00321
00322 #ifdef __cplusplus
00323 }
00324 #endif
00325
00326
00327 #endif