39 #ifndef GNC_BACKEND_SQL_H
40 #define GNC_BACKEND_SQL_H
146 #define gnc_sql_statement_dispose(STMT) \
147 (STMT)->dispose(STMT)
148 #define gnc_sql_statement_to_sql(STMT) \
150 #define gnc_sql_statement_add_where_cond(STMT,TYPENAME,OBJ,COLDESC,VALUE) \
151 (STMT)->addWhereCond(STMT, TYPENAME, OBJ, COLDESC, VALUE)
174 #define gnc_sql_connection_dispose(CONN) (CONN)->dispose(CONN)
175 #define gnc_sql_connection_execute_select_statement(CONN,STMT) \
176 (CONN)->executeSelectStatement(CONN,STMT)
177 #define gnc_sql_connection_execute_nonselect_statement(CONN,STMT) \
178 (CONN)->executeNonSelectStatement(CONN,STMT)
179 #define gnc_sql_connection_create_statement_from_sql(CONN,SQL) \
180 (CONN)->createStatementFromSql(CONN,SQL)
181 #define gnc_sql_connection_does_table_exist(CONN,NAME) \
182 (CONN)->doesTableExist(CONN,NAME)
183 #define gnc_sql_connection_begin_transaction(CONN) \
184 (CONN)->beginTransaction(CONN)
185 #define gnc_sql_connection_rollback_transaction(CONN) \
186 (CONN)->rollbackTransaction(CONN)
187 #define gnc_sql_connection_commit_transaction(CONN) \
188 (CONN)->commitTransaction(CONN)
189 #define gnc_sql_connection_create_table(CONN,NAME,COLLIST) \
190 (CONN)->createTable(CONN,NAME,COLLIST)
191 #define gnc_sql_connection_create_index(CONN,INDEXNAME,TABLENAME,COLTABLE) \
192 (CONN)->createIndex(CONN,INDEXNAME,TABLENAME,COLTABLE)
193 #define gnc_sql_connection_add_columns_to_table(CONN,TABLENAME,COLLIST) \
194 (CONN)->addColumnsToTable(CONN,TABLENAME,COLLIST)
195 #define gnc_sql_connection_quote_string(CONN,STR) \
196 (CONN)->quoteString(CONN,STR)
206 const GValue* (*getValueAtColName)(
GncSqlRow*,
const gchar* );
209 #define gnc_sql_row_get_value_at_col_name(ROW,N) \
210 (ROW)->getValueAtColName(ROW,N)
211 #define gnc_sql_row_dispose(ROW) \
227 #define gnc_sql_result_get_num_rows(RESULT) \
228 (RESULT)->getNumRows(RESULT)
229 #define gnc_sql_result_get_first_row(RESULT) \
230 (RESULT)->getFirstRow(RESULT)
231 #define gnc_sql_result_get_next_row(RESULT) \
232 (RESULT)->getNextRow(RESULT)
233 #define gnc_sql_result_dispose(RESULT) \
234 (RESULT)->dispose(RESULT)
280 #define GNC_SQL_BACKEND "gnc:sql:1"
281 #define GNC_SQL_BACKEND_VERSION 1
314 #define CT_STRING "ct_string"
315 #define CT_GUID "ct_guid"
316 #define CT_INT "ct_int"
317 #define CT_INT64 "ct_int64"
318 #define CT_TIMESPEC "ct_timespec"
319 #define CT_GDATE "ct_gdate"
320 #define CT_NUMERIC "ct_numeric"
321 #define CT_DOUBLE "ct_double"
322 #define CT_BOOLEAN "ct_boolean"
323 #define CT_ACCOUNTREF "ct_accountref"
324 #define CT_BUDGETREF "ct_budgetref"
325 #define CT_COMMODITYREF "ct_commodityref"
326 #define CT_LOTREF "ct_lotref"
327 #define CT_TXREF "ct_txref"
352 #define COL_PKEY 0x01
353 #define COL_NNUL 0x02
354 #define COL_UNIQUE 0x04
355 #define COL_AUTOINC 0x08
378 typedef void (*GNC_SQL_ADD_COL_INFO_TO_LIST_FN)(
const GncSqlBackend* be,
382 typedef void (*GNC_SQL_ADD_GVALUE_TO_SLIST_FN)(
const GncSqlBackend* be,
450 const gchar* table_name,
522 const gchar* table_name,
536 const gchar* table_name,
549 const gchar* table_name,
563 const gchar* table_name,
609 const gchar* table_name );
752 void _retrieve_guid_( gpointer pObject, gpointer pValue );
756 void gnc_sql_free_query(
QofBackend* pBEnd, gpointer pQuery );
757 void gnc_sql_run_query(
QofBackend* pBEnd, gpointer pQuery );
const gchar * qof_param_name
gboolean gnc_sql_object_is_it_in_db(GncSqlBackend *be, const gchar *table_name, QofIdTypeConst obj_name, const gpointer pObject, const GncSqlColumnTableEntry *table)
void gnc_sql_begin_edit(GncSqlBackend *be, QofInstance *inst)
void gnc_sql_finalize_version_info(GncSqlBackend *be)
gint gnc_sql_get_table_version(const GncSqlBackend *be, const gchar *table_name)
GNC_SQL_ADD_GVALUE_TO_SLIST_FN add_gvalue_to_slist_fn
QofAccessFunc gnc_sql_get_getter(QofIdTypeConst obj_name, const GncSqlColumnTableEntry *table_row)
void gnc_sql_rollback_edit(GncSqlBackend *qbe, QofInstance *inst)
void gnc_sql_upgrade_table(GncSqlBackend *be, const gchar *table_name, const GncSqlColumnTableEntry *col_table)
const GncGUID * gnc_sql_load_tx_guid(const GncSqlBackend *be, GncSqlRow *row)
void gnc_sql_add_colname_to_list(const GncSqlColumnTableEntry *table_row, GList **pList)
void gnc_sql_init(GncSqlBackend *be)
const gchar * QofIdTypeConst
GncSqlStatement * gnc_sql_create_select_statement(GncSqlBackend *be, const gchar *table_name)
gboolean(* doesTableExist)(GncSqlConnection *, const gchar *)
gint gnc_sql_execute_nonselect_sql(GncSqlBackend *be, const gchar *sql)
gboolean gnc_sql_create_table(GncSqlBackend *be, const gchar *table_name, gint table_version, const GncSqlColumnTableEntry *col_table)
void gnc_sql_register_col_type_handler(const gchar *colType, const GncSqlColumnTypeHandler *handler)
Use a 64-bit unsigned int timespec.
gboolean gnc_sql_add_columns_to_table(GncSqlBackend *be, const gchar *table_name, const GncSqlColumnTableEntry *new_col_table)
void gnc_sql_add_objectref_guid_col_info_to_list(const GncSqlBackend *be, const GncSqlColumnTableEntry *table_row, GList **pList)
gpointer(* QofAccessFunc)(gpointer object, const QofParam *param)
struct _QofQuery QofQuery
gint64 gnc_sql_get_integer_value(const GValue *value)
gboolean gnc_sql_create_index(const GncSqlBackend *be, const gchar *index_name, const gchar *table_name, const GncSqlColumnTableEntry *col_table)
const GncGUID * gnc_sql_load_guid(const GncSqlBackend *be, GncSqlRow *row)
gboolean(* addColumnsToTable)(GncSqlConnection *, const gchar *table, GList *)
GncSqlBasicColumnType type
void gnc_sql_set_load_order(const gchar **load_order)
guint gnc_sql_append_guid_list_to_sql(GString *str, GList *list, guint maxCount)
gboolean gnc_sql_set_table_version(GncSqlBackend *be, const gchar *table_name, gint version)
void gnc_sql_add_gvalue_objectref_guid_to_slist(const GncSqlBackend *be, QofIdTypeConst obj_name, const gpointer pObject, const GncSqlColumnTableEntry *table_row, GSList **pList)
gchar * gnc_sql_get_sql_value(const GncSqlConnection *conn, const GValue *value)
gboolean(* createIndex)(GncSqlConnection *, const gchar *, const gchar *, const GncSqlColumnTableEntry *)
GNC_SQL_ADD_COL_INFO_TO_LIST_FN add_col_info_to_list_fn
GncSqlResult * gnc_sql_execute_select_statement(GncSqlBackend *be, GncSqlStatement *statement)
void gnc_sql_load_object(const GncSqlBackend *be, GncSqlRow *row, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
const gchar * gobj_param_name
void gnc_sql_push_commodity_for_postload_processing(GncSqlBackend *be, gpointer *comm)
GNC_SQL_ADD_COLNAME_TO_LIST_FN add_colname_to_list_fn
gboolean gnc_sql_create_temp_table(const GncSqlBackend *be, const gchar *table_name, const GncSqlColumnTableEntry *col_table)
void gnc_sql_commit_edit(GncSqlBackend *qbe, QofInstance *inst)
gboolean(* createTable)(GncSqlConnection *, const gchar *, GList *)
private api for data storage backend
void gnc_sql_sync_all(GncSqlBackend *be, QofBook *book)
gint(* executeNonSelectStatement)(GncSqlConnection *, GncSqlStatement *)
gboolean gnc_sql_commit_standard_item(GncSqlBackend *be, QofInstance *inst, const gchar *tableName, QofIdTypeConst obj_name, const GncSqlColumnTableEntry *col_table)
void(* QofSetterFunc)(gpointer, gpointer)
gboolean(* rollbackTransaction)(GncSqlConnection *)
gboolean gnc_sql_do_db_operation(GncSqlBackend *be, E_DB_OPERATION op, const gchar *table_name, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
GncSqlStatement * gnc_sql_create_statement_from_sql(GncSqlBackend *be, const gchar *sql)
const gchar * timespec_format
gboolean(* beginTransaction)(GncSqlConnection *)
gboolean(* commitTransaction)(GncSqlConnection *)
void gnc_sql_init_version_info(GncSqlBackend *be)
void gnc_sql_add_subtable_colnames_to_list(const GncSqlColumnTableEntry *table_row, const GncSqlColumnTableEntry *subtable, GList **pList)
void gnc_sql_load(GncSqlBackend *be, QofBook *book, QofBackendLoadType loadType)
GncSqlResult * gnc_sql_execute_select_sql(GncSqlBackend *be, const gchar *sql)
gchar * gnc_sql_convert_timespec_to_string(const GncSqlBackend *be, Timespec ts)