r18956 - gnucash/trunk/src/backend/sql - Create splits->accounts sql index and tx->post_date index when creating new databases

Phil Longstaff plongstaff at code.gnucash.org
Tue Mar 23 10:31:43 EDT 2010


Author: plongstaff
Date: 2010-03-23 10:31:43 -0400 (Tue, 23 Mar 2010)
New Revision: 18956
Trac: http://svn.gnucash.org/trac/changeset/18956

Modified:
   gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
Log:
Create splits->accounts sql index and tx->post_date index when creating new databases


Modified: gnucash/trunk/src/backend/sql/gnc-transaction-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-transaction-sql.c	2010-03-22 21:15:15 UTC (rev 18955)
+++ gnucash/trunk/src/backend/sql/gnc-transaction-sql.c	2010-03-23 14:31:43 UTC (rev 18956)
@@ -112,9 +112,25 @@
 	/*@ +full_init_block @*/
 };
 
-static const GncSqlColumnTableEntry guid_col_table[] =
+static const GncSqlColumnTableEntry post_date_col_table[] =
 {
 	/*@ -full_init_block @*/
+    { "post_date", CT_TIMESPEC, 0, 0, "post-date" },
+    { NULL }
+	/*@ +full_init_block @*/
+};
+
+static const GncSqlColumnTableEntry account_guid_col_table[] =
+{
+	/*@ -full_init_block @*/
+    { "account_guid", CT_ACCOUNTREF, 0, COL_NNUL, "account" },
+    { NULL }
+	/*@ +full_init_block @*/
+};
+
+static const GncSqlColumnTableEntry tx_guid_col_table[] =
+{
+	/*@ -full_init_block @*/
     { "tx_guid", CT_GUID, 0, 0, "guid" },
     { NULL }
 	/*@ +full_init_block @*/
@@ -214,7 +230,7 @@
 	if( list == NULL ) return;
 
 	sql = g_string_sized_new( 40+(GUID_ENCODING_LENGTH+3)*g_list_length( list ) );
-	g_string_append_printf( sql, "SELECT * FROM %s WHERE %s IN (", SPLIT_TABLE, guid_col_table[0].col_name );
+	g_string_append_printf( sql, "SELECT * FROM %s WHERE %s IN (", SPLIT_TABLE, tx_guid_col_table[0].col_name );
 	(void)gnc_sql_append_guid_list_to_sql( sql, list, G_MAXUINT );
 	(void)g_string_append( sql, ")" );
 
@@ -467,6 +483,10 @@
 	version = gnc_sql_get_table_version( be, TRANSACTION_TABLE );
     if( version == 0 ) {
         (void)gnc_sql_create_table( be, TRANSACTION_TABLE, TX_TABLE_VERSION, tx_col_table );
+	    ok = gnc_sql_create_index( be, "tx_post_date_index", TRANSACTION_TABLE, post_date_col_table );
+	    if( !ok ) {
+		    PERR( "Unable to create index\n" );
+	    }
     } else if( version < TX_TABLE_VERSION ) {
 		/* Upgrade:
 		    1->2: 64 bit int handling
@@ -479,20 +499,28 @@
 	version = gnc_sql_get_table_version( be, SPLIT_TABLE );
     if( version == 0 ) {
         (void)gnc_sql_create_table( be, SPLIT_TABLE, SPLIT_TABLE_VERSION, split_col_table );
-	    ok = gnc_sql_create_index( be, "splits_tx_guid_index", SPLIT_TABLE, guid_col_table );
+	    ok = gnc_sql_create_index( be, "splits_tx_guid_index", SPLIT_TABLE, tx_guid_col_table );
 	    if( !ok ) {
 		    PERR( "Unable to create index\n" );
 	    }
+	    ok = gnc_sql_create_index( be, "splits_account_guid_index", SPLIT_TABLE, account_guid_col_table );
+	    if( !ok ) {
+		    PERR( "Unable to create index\n" );
+	    }
     } else if( version < SPLIT_TABLE_VERSION ) {
 
 		/* Upgrade:
 		   1->2: 64 bit int handling
 		   3->4: Split reconcile date can be NULL */
 		gnc_sql_upgrade_table( be, SPLIT_TABLE, split_col_table );
-		ok = gnc_sql_create_index( be, "splits_tx_guid_index", SPLIT_TABLE, guid_col_table );
+		ok = gnc_sql_create_index( be, "splits_tx_guid_index", SPLIT_TABLE, tx_guid_col_table );
 		if( !ok ) {
 			PERR( "Unable to create index\n" );
 		}
+	    ok = gnc_sql_create_index( be, "splits_account_guid_index", SPLIT_TABLE, account_guid_col_table );
+	    if( !ok ) {
+		    PERR( "Unable to create index\n" );
+	    }
 		(void)gnc_sql_set_table_version( be, SPLIT_TABLE, SPLIT_TABLE_VERSION );
     }
 }
@@ -535,7 +563,7 @@
 	g_return_val_if_fail( pTx != NULL, FALSE );
 
     if( !gnc_sql_do_db_operation( be, OP_DB_DELETE, SPLIT_TABLE,
-                                SPLIT_TABLE, pTx, guid_col_table ) ) {
+                                SPLIT_TABLE, pTx, tx_guid_col_table ) ) {
 		return FALSE;
 	}
     split_info.be = be;



More information about the gnucash-changes mailing list