From da59591a9c3fe4e04ce22650c5ec3f0cf0e336b7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 7 Nov 2008 17:45:19 +0000 Subject: [PATCH] - zoomark adjustments - changelog has separate category for 'features' --- CHANGES | 54 +++++++++++++++++++++----------------- test/profiling/compiler.py | 2 +- test/profiling/zoomark.py | 10 +++---- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/CHANGES b/CHANGES index ace4452359..27db34f583 100644 --- a/CHANGES +++ b/CHANGES @@ -6,13 +6,42 @@ CHANGES ======= 0.5.0rc3 ======== -- orm +- features - Added two new hooks to SessionExtension: after_bulk_delete and after_bulk_update. after_bulk_delete is called after a bulk delete() operation on a query. after_bulk_update is called after a bulk update() operation on a query. + - SQL compiler optimizations. The call count for compiling a + typical select() construct is 20% less versus 0.5.0rc2. + + - Dialects can now generate label names of adjustable length. + Pass in the argument "label_length=" to create_engine() + to adjust how many characters max will be present in dynamically + generated column labels, i.e. "somecolumn AS somelabel". Any + value less than 6 will result in a label of minimal size, + consiting of an underscore and a numeric counter. + The compiler uses the value of dialect.max_identifier_length + as a default. [ticket:1211] + + - Added a new extension sqlalchemy.ext.serializer. Provides + Serializer/Deserializer "classes" which mirror Pickle/Unpickle, + as well as dumps() and loads(). This serializer implements + an "external object" pickler which keeps key context-sensitive + objects, including engines, sessions, metadata, Tables/Columns, + and mappers, outside of the pickle stream, and can later + restore the pickle using any engine/metadata/session provider. + This is used not for pickling regular object instances, which are + pickleable without any special logic, but for pickling expression + objects and full Query objects, such that all mapper/engine/session + dependencies can be restored at unpickle time. + + - Wrote a docstring for Oracle dialect. Apparently that Ohloh + "few source code comments" label is starting to sting :). + +- bugfixes and behavioral changes +- orm - "not equals" comparisons of simple many-to-one relation to an instance will not drop into an EXISTS clause and will compare foreign key columns instead. @@ -76,15 +105,6 @@ CHANGES All the regexp-based guessing about statements returning rows has been removed [ticket:1212]. - - Dialects can now generate label names of adjustable length. - Pass in the argument "label_length=" to create_engine() - to adjust how many characters max will be present in dynamically - generated column labels, i.e. "somecolumn AS somelabel". Any - value less than 6 will result in a label of minimal size, - consiting of an underscore and a numeric counter. - The compiler uses the value of dialect.max_identifier_length - as a default. [ticket:1211] - - Further simplified SELECT compilation and its relationship to result row processing. @@ -111,9 +131,6 @@ CHANGES can be reenabled with optimize_limits=True create_engine() flag. [ticket:536] - - Wrote a docstring for Oracle dialect. Apparently that Ohloh - "few source code comments" label is starting to sting :). - - Setting the auto_convert_lobs to False on create_engine() will also instruct the OracleBinary type to return the cx_oracle LOB object unchanged. @@ -127,17 +144,6 @@ CHANGES lower case. - ext - - Added a new extension sqlalchemy.ext.serializer. Provides - Serializer/Deserializer "classes" which mirror Pickle/Unpickle, - as well as dumps() and loads(). This serializer implements - an "external object" pickler which keeps key context-sensitive - objects, including engines, sessions, metadata, Tables/Columns, - and mappers, outside of the pickle stream, and can later - restore the pickle using any engine/metadata/session provider. - This is used not for pickling regular object instances, which are - pickleable without any special logic, but for pickling expression - objects and full Query objects, such that all mapper/engine/session - dependencies can be restored at unpickle time. - misc - util.flatten_iterator() func doesn't interpret strings with diff --git a/test/profiling/compiler.py b/test/profiling/compiler.py index 2f1cbad596..26260068a6 100644 --- a/test/profiling/compiler.py +++ b/test/profiling/compiler.py @@ -23,7 +23,7 @@ class CompileTest(TestBase, AssertsExecutionResults): def test_update(self): t1.update().compile() - @profiling.function_call_count(185, versions={'2.4':133}) + @profiling.function_call_count(185, versions={'2.4':118}) def test_select(self): s = select([t1], t1.c.c2==t2.c.c1) s.compile() diff --git a/test/profiling/zoomark.py b/test/profiling/zoomark.py index 08215454a9..a91539d5a0 100644 --- a/test/profiling/zoomark.py +++ b/test/profiling/zoomark.py @@ -332,23 +332,23 @@ class ZooMarkTest(TestBase): def test_profile_2_insert(self): self.test_baseline_2_insert() - @profiling.function_call_count(3858, {'2.4': 2557}) + @profiling.function_call_count(3858, {'2.4': 2347}) def test_profile_3_properties(self): self.test_baseline_3_properties() - @profiling.function_call_count(14752, {'2.4': 10549}) + @profiling.function_call_count(14752, {'2.4': 9950}) def test_profile_4_expressions(self): self.test_baseline_4_expressions() - @profiling.function_call_count(1442, {'2.4': 1084}) + @profiling.function_call_count(1442, {'2.4': 1001}) def test_profile_5_aggregates(self): self.test_baseline_5_aggregates() - @profiling.function_call_count(1904, {'2.4': 1256}) + @profiling.function_call_count(1904, {'2.4': 1193}) def test_profile_6_editing(self): self.test_baseline_6_editing() - @profiling.function_call_count(3110, {'2.4': 2198}) + @profiling.function_call_count(3110, {'2.4': 1998}) def test_profile_7_multiview(self): self.test_baseline_7_multiview() -- 2.47.3