r16957 - gnucash/branches/gda-dev2/src/backend/gda - Create an index for the slots table
Phil Longstaff
plongstaff at cvs.gnucash.org
Sun Feb 24 14:36:29 EST 2008
Author: plongstaff
Date: 2008-02-24 14:36:29 -0500 (Sun, 24 Feb 2008)
New Revision: 16957
Trac: http://svn.gnucash.org/trac/changeset/16957
Modified:
gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.h
gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
Log:
Create an index for the slots table
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c 2008-02-24 17:12:40 UTC (rev 16956)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c 2008-02-24 19:36:29 UTC (rev 16957)
@@ -1950,21 +1950,36 @@
return TRUE;
}
+gboolean gnc_gda_does_table_exist( const GncGdaBackend* be, const gchar* table_name )
+{
+ GdaDictTable* table;
+ GdaDictDatabase* db;
+
+ g_return_val_if_fail( be != NULL, FALSE );
+ g_return_val_if_fail( table_name != NULL, FALSE );
+
+ db = gda_dict_get_database( be->pDict );
+ g_return_val_if_fail( db != NULL, FALSE );
+
+ table = gda_dict_database_get_table_by_name( db, table_name );
+ if( table != NULL && GDA_IS_DICT_TABLE(table) ) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
void gnc_gda_create_table_if_needed( const GncGdaBackend* be,
const gchar* table_name,
const col_cvt_t* col_table )
{
- GdaDictTable* table;
- GError* error = NULL;
- GdaDictDatabase* db;
-
g_return_if_fail( be != NULL );
g_return_if_fail( table_name != NULL );
g_return_if_fail( col_table != NULL );
- db = gda_dict_get_database( be->pDict );
- table = gda_dict_database_get_table_by_name( db, table_name );
- if( !GDA_IS_DICT_TABLE(table) ) {
+ if( !gnc_gda_does_table_exist( be, table_name ) ) {
+ GError* error = NULL;
+
gnc_gda_create_table( be, table_name, col_table, &error );
if( error != NULL ) {
PERR( "Error creating table: %s\n", error->message );
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.h
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.h 2008-02-24 17:12:40 UTC (rev 16956)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.h 2008-02-24 19:36:29 UTC (rev 16957)
@@ -174,6 +174,7 @@
const gchar* table_name,
QofIdTypeConst obj_name, const gpointer pObject,
const col_cvt_t* table );
+gboolean gnc_gda_does_table_exist( const GncGdaBackend* be, const gchar* table_name );
gboolean gnc_gda_create_table( const GncGdaBackend* be,
const gchar* table_name, const col_cvt_t* col_table,
GError** error );
Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c 2008-02-24 17:12:40 UTC (rev 16956)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c 2008-02-24 19:36:29 UTC (rev 16957)
@@ -574,10 +574,15 @@
g_return_if_fail( be != NULL );
- gnc_gda_create_table_if_needed( be, TABLE_NAME, col_table );
- ok = gnc_gda_create_index( be, "slots_guid_index", TABLE_NAME, obj_guid_col_table, &error );
- if( !ok ) {
- g_critical( "GDA: unable to create index: %s\n", error->message );
+ if( !gnc_gda_does_table_exist( be, TABLE_NAME ) ) {
+ gnc_gda_create_table( be, TABLE_NAME, col_table, &error );
+ if( error != NULL ) {
+ g_critical( "GDA: unable to create SLOTS table: %s\n", error->message );
+ }
+ ok = gnc_gda_create_index( be, "slots_guid_index", TABLE_NAME, obj_guid_col_table, &error );
+ if( !ok ) {
+ g_critical( "GDA: unable to create index: %s\n", error->message );
+ }
}
}
More information about the gnucash-changes
mailing list