r20123 - gnucash/trunk/src/backend - Enhanced database version handling.

John Ralls jralls at ceridwen.us
Wed Jan 19 20:29:06 EST 2011


On Jan 19, 2011, at 8:32 AM, Derek Atkins wrote:

> John,
> 
> John Ralls <jralls at code.gnucash.org> writes:
> 
>> * Add a macro GNC_RESAVE_VERSION which holds an svn revision number. 
>> * When fully saving a database put this number in versions with 
>>  table_name Gnucash-Resave.
>> * On database load, compare the current GNC_RESAVE_VERSION with the 
>>  Gnucash revision and Gnucash-Resave revision saved when the database 
>>  was created. 
>> * If the current GNC_RESAVE_VERSION > the saved Gnucash 
>>  version, then emit ERR_SQL_DB_TOO_OLD.
>> * If GNC_RESAVE_VERSION < the saved Gnucash-Resave, emit ERR_SQL_DB_TOO_NEW.
> 
> Why tie this to an SVN revision instead of just a monotonically
> increasing "schema version" number?
> 
> Developers need to remember to change this value whenever they change
> the schema, so I don't see why the actual number makes a difference?
> 
> If we do change to git then we wont have the svn revision # to work
> from...


By using a revision number, the GNC_RESAVE_VERSION can be adjusted retrospectively if a change is made in one of the upper levels (e.g. a scrub function) and the developer doesn't recognize that it affects the sql backend differently from the xml backend (which always does a complete resave). 

Yes, if we move away from svn then we'll have to use release version numbers instead.

Regards,
John Ralls




More information about the gnucash-devel mailing list