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