diff --git a/NEWS b/NEWS index 791ddd5..855d768 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ 1.6.8: ? - * + * Fixed a compatibility problem with newer versions of SQLite. (Luminotes + was using a reserved keyword as an identifier.) This only affected those + people who installed Luminotes Server themselves. 1.6.7: February 23, 2009 * When you export your notebook as an HTML or CSV file, the saved filename is diff --git a/controller/Schema_upgrader.py b/controller/Schema_upgrader.py index fce39de..4bf4f8e 100644 --- a/controller/Schema_upgrader.py +++ b/controller/Schema_upgrader.py @@ -98,7 +98,8 @@ class Schema_upgrader: database.rollback() schema_version = default_version or ( 1, 5, 4 ) - database.execute( "create table schema_version ( major numeric, minor numeric, release numeric );", commit = False ); + # "release" is a reserved keyword in newer versions of sqlite, so put it in quotes + database.execute( "create table schema_version ( major numeric, minor numeric, \"release\" numeric );", commit = False ); database.execute( "insert into schema_version values ( %s, %s, %s );" % schema_version, commit = False ); return schema_version @@ -123,7 +124,7 @@ class Schema_upgrader: # http://oss.itsystementwicklung.de/download/pysqlite/doc/sqlite3.html#sqlite3-controlling-transactions self.__database.execute_script( self.__read_file( filename ), commit = False ) - self.__database.execute( "update schema_version set major = %s, minor = %s, release = %s;" % version, commit = False ); + self.__database.execute( "update schema_version set major = %s, minor = %s, \"release\" = %s;" % version, commit = False ); self.__database.commit() @staticmethod diff --git a/controller/test/Test_schema_upgrader.py b/controller/test/Test_schema_upgrader.py index 59e5037..a73d7ce 100644 --- a/controller/test/Test_schema_upgrader.py +++ b/controller/test/Test_schema_upgrader.py @@ -60,12 +60,12 @@ class Test_schema_upgrader( object ): assert result == [ ( 5, 7, 11 ) ]; def test_upgrade_schema_with_schema_version_table( self ): - self.database.execute( u"create table schema_version ( major numeric, minor numeric, release numeric );" ); + self.database.execute( u"create table schema_version ( major numeric, minor numeric, \"release\" numeric );" ); self.database.execute( u"insert into schema_version values ( 0, 0, 0 );" ) self.test_upgrade_schema(); def test_upgrade_schema_with_schema_version_table_and_specific_starting_version( self ): - self.database.execute( u"create table schema_version ( major numeric, minor numeric, release numeric );" ); + self.database.execute( u"create table schema_version ( major numeric, minor numeric, \"release\" numeric );" ); self.database.execute( u"insert into schema_version values ( 5, 6, 6 );" ) self.fake_files[ u"model/delta/5.6.1.sqlite" ] = u"this is not valid sql and should not be executed anyway;"; @@ -120,7 +120,7 @@ class Test_schema_upgrader( object ): assert result == [ ( 1, 5, 6 ) ]; def test_apply_schema_delta( self ): - self.database.execute( u"create table schema_version ( major numeric, minor numeric, release numeric );" ); + self.database.execute( u"create table schema_version ( major numeric, minor numeric, \"release\" numeric );" ); self.database.execute( u"insert into schema_version values ( 0, 0, 0 );" ) self.fake_files = {