[Modeling-cvs] SF.net SVN: modeling: [1000] trunk/ProjectModeling
Status: Abandoned
Brought to you by:
sbigaret
From: <sbi...@us...> - 2006-04-22 19:07:23
|
Revision: 1000 Author: sbigaret Date: 2006-04-22 12:07:12 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/modeling/?rev=1000&view=rev Log Message: ----------- Feature Request #978800: "SQLite adaptor: get X primary keys at once". PKs are now retrieved in a single request Modified Paths: -------------- trunk/ProjectModeling/CHANGES trunk/ProjectModeling/Modeling/DatabaseAdaptors/SQLiteAdaptorLayer/SQLiteAdaptorChannel.py Modified: trunk/ProjectModeling/CHANGES =================================================================== --- trunk/ProjectModeling/CHANGES 2006-04-22 18:47:08 UTC (rev 999) +++ trunk/ProjectModeling/CHANGES 2006-04-22 19:07:12 UTC (rev 1000) @@ -7,6 +7,9 @@ ** Distributed under a 3-clause BSD-style license, see LICENSE for details ** ----------------------------------------------------------------------------- + * Feature Request #978800: "SQLite adaptor: get X primary keys at once" + PKs are now retrieved in a single request. + * Fixed bug #1474720: when saving changes, the PKs needed for the inserted objects are retrieved one after the other, opening and closing a transaction for every PK. PKs are now fetched by batch, in a single Modified: trunk/ProjectModeling/Modeling/DatabaseAdaptors/SQLiteAdaptorLayer/SQLiteAdaptorChannel.py =================================================================== --- trunk/ProjectModeling/Modeling/DatabaseAdaptors/SQLiteAdaptorLayer/SQLiteAdaptorChannel.py 2006-04-22 18:47:08 UTC (rev 999) +++ trunk/ProjectModeling/Modeling/DatabaseAdaptors/SQLiteAdaptorLayer/SQLiteAdaptorChannel.py 2006-04-22 19:07:12 UTC (rev 1000) @@ -69,23 +69,22 @@ try: pkName=anEntity.primaryKeyAttributeNames()[0] pkRootName=anEntity.primaryKeyRootName() - statements=["UPDATE PK_SEQ_%s SET id=((select max(id) from PK_SEQ_%s)+1)"%(pkRootName,pkRootName), + statements=["UPDATE PK_SEQ_%s SET id=((select max(id) from PK_SEQ_%s)+%i)"%(pkRootName,pkRootName,count), "select id FROM PK_SEQ_%s"%pkRootName] - result=[] - for idx in range(count): - for statement in statements: - db_info('Evaluating: %s'%statement) - try: - self.dbAPI_cursor().execute(statement) - except: - exctype, value = sys.exc_info()[:2] - msg="Couldn't evaluate expression %s. Reason: %s:%s"%(statement, exctype, value) - db_error(msg) - raise GeneralAdaptorException, msg - - SQLiteAdaptorChannel._count_for_execute+=1 + for statement in statements: + db_info('Evaluating: %s'%statement) + try: + self.dbAPI_cursor().execute(statement) + except: + exctype, value = sys.exc_info()[:2] + msg="Couldn't evaluate expression %s. Reason: %s:%s"%(statement, exctype, value) + db_error(msg) + raise GeneralAdaptorException, msg + + SQLiteAdaptorChannel._count_for_execute+=1 - result.append({pkName :self.dbAPI_cursor().fetchone()[0]}) + result = self.dbAPI_cursor().fetchone()[0] + result = [{pkName : v+1} for v in range(result-count,result)] return tuple(result) finally: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |