[Sqlalchemy-commits] sqlalchemy: 0.7 updates, links
Brought to you by:
zzzeek
From: <co...@sq...> - 2012-10-25 19:49:48
|
details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/9169d424dbea changeset: 8856:9169d424dbea user: Mike Bayer <mi...@zz...> date: Thu Oct 25 15:49:08 2012 -0400 description: 0.7 updates, links Subject: sqlalchemy: update to new doc system details: http://hg.sqlalchemy.org/sqlalchemy/sqlalchemy/rev/6026d326e347 changeset: 8857:6026d326e347 user: Mike Bayer <mi...@zz...> date: Thu Oct 25 15:49:44 2012 -0400 description: update to new doc system diffstat: .hgignore | 1 - .hgtags | 3 + CHANGES | 5811 +++++++++++- CHANGES_PRE_06 | 6343 +++++++++++++ MANIFEST.in | 2 +- README.dialects.rst | 224 - README.rst | 46 +- README.unittests | 239 + README.unittests.rst | 202 - doc/build/changelog/changelog_08.rst | 1368 -- doc/build/changelog/index.rst | 2 - doc/build/changelog/migration_07.rst | 116 +- doc/build/changelog/migration_08.rst | 944 - doc/build/conf.py | 13 +- doc/build/contents.rst | 1 - doc/build/copyright.rst | 2 +- doc/build/core/connections.rst | 52 +- doc/build/core/engines.rst | 96 +- doc/build/core/event.rst | 4 +- doc/build/core/events.rst | 3 +- doc/build/core/expression_api.rst | 55 +- doc/build/core/index.rst | 1 - doc/build/core/inspection.rst | 31 - doc/build/core/interfaces.rst | 2 +- doc/build/core/internals.rst | 6 +- doc/build/core/pooling.rst | 4 +- doc/build/core/schema.rst | 13 +- doc/build/core/tutorial.rst | 69 +- doc/build/core/types.rst | 307 +- doc/build/dialects/access.rst | 6 + doc/build/dialects/drizzle.rst | 3 +- doc/build/dialects/firebird.rst | 6 +- doc/build/dialects/index.rst | 31 +- doc/build/dialects/informix.rst | 3 +- doc/build/dialects/maxdb.rst | 6 + doc/build/dialects/mssql.rst | 2 +- doc/build/dialects/mysql.rst | 16 +- doc/build/dialects/oracle.rst | 6 +- doc/build/dialects/postgresql.rst | 12 +- doc/build/dialects/sybase.rst | 6 +- doc/build/index.rst | 26 +- doc/build/intro.rst | 9 +- doc/build/orm/events.rst | 10 +- doc/build/orm/examples.rst | 18 +- doc/build/orm/extensions/associationproxy.rst | 86 +- doc/build/orm/extensions/declarative.rst | 3 +- doc/build/orm/extensions/index.rst | 2 +- doc/build/orm/extensions/instrumentation.rst | 23 - doc/build/orm/extensions/sqlsoup.rst | 11 + doc/build/orm/index.rst | 1 + doc/build/orm/inheritance.rst | 563 +- doc/build/orm/interfaces.rst | 1 + doc/build/orm/internals.rst | 8 +- doc/build/orm/loading.rst | 74 +- doc/build/orm/mapper_config.rst | 101 +- doc/build/orm/query.rst | 6 +- doc/build/orm/relationships.rst | 7 - doc/build/orm/session.rst | 167 +- doc/build/orm/tutorial.rst | 490 +- examples/beaker_caching/__init__.py | 78 + examples/beaker_caching/advanced.py | 79 + examples/beaker_caching/caching_query.py | 279 + examples/beaker_caching/environment.py | 67 + examples/beaker_caching/fixture_data.py | 49 + examples/beaker_caching/helloworld.py | 62 + examples/beaker_caching/local_session_caching.py | 96 + examples/beaker_caching/model.py | 106 + examples/beaker_caching/relation_caching.py | 24 + examples/custom_attributes/custom_management.py | 119 +- examples/declarative_reflection/__init__.py | 47 + examples/declarative_reflection/declarative_reflection.py | 98 + examples/dogpile_caching/__init__.py | 84 - examples/dogpile_caching/advanced.py | 79 - examples/dogpile_caching/caching_query.py | 255 - examples/dogpile_caching/environment.py | 83 - examples/dogpile_caching/fixture_data.py | 52 - examples/dogpile_caching/helloworld.py | 62 - examples/dogpile_caching/local_session_caching.py | 99 - examples/dogpile_caching/model.py | 106 - examples/dogpile_caching/relation_caching.py | 25 - examples/inheritance/joined.py | 135 - examples/inheritance/polymorph.py | 125 + examples/postgis/postgis.py | 284 +- lib/sqlalchemy/__init__.py | 22 +- lib/sqlalchemy/cextension/processors.c | 1 - lib/sqlalchemy/cextension/resultproxy.c | 5 +- lib/sqlalchemy/cextension/utils.c | 197 - lib/sqlalchemy/connectors/mxodbc.py | 31 +- lib/sqlalchemy/connectors/mysqldb.py | 14 +- lib/sqlalchemy/connectors/pyodbc.py | 4 +- lib/sqlalchemy/connectors/zxJDBC.py | 2 +- lib/sqlalchemy/databases/__init__.py | 22 +- lib/sqlalchemy/dialects/__init__.py | 30 +- lib/sqlalchemy/dialects/access/base.py | 451 + lib/sqlalchemy/dialects/drizzle/base.py | 13 +- lib/sqlalchemy/dialects/drizzle/mysqldb.py | 17 +- lib/sqlalchemy/dialects/firebird/base.py | 80 +- lib/sqlalchemy/dialects/firebird/fdb.py | 65 - lib/sqlalchemy/dialects/firebird/kinterbasdb.py | 20 +- lib/sqlalchemy/dialects/informix/base.py | 19 +- lib/sqlalchemy/dialects/informix/informixdb.py | 16 +- lib/sqlalchemy/dialects/maxdb/__init__.py | 9 + lib/sqlalchemy/dialects/maxdb/base.py | 1117 ++ lib/sqlalchemy/dialects/maxdb/sapdb.py | 23 + lib/sqlalchemy/dialects/mssql/adodbapi.py | 11 +- lib/sqlalchemy/dialects/mssql/base.py | 322 +- lib/sqlalchemy/dialects/mssql/information_schema.py | 4 +- lib/sqlalchemy/dialects/mssql/mxodbc.py | 71 +- lib/sqlalchemy/dialects/mssql/pymssql.py | 29 +- lib/sqlalchemy/dialects/mssql/pyodbc.py | 29 +- lib/sqlalchemy/dialects/mssql/zxjdbc.py | 33 +- lib/sqlalchemy/dialects/mysql/__init__.py | 4 +- lib/sqlalchemy/dialects/mysql/base.py | 144 +- lib/sqlalchemy/dialects/mysql/gaerdbms.py | 30 +- lib/sqlalchemy/dialects/mysql/mysqlconnector.py | 31 +- lib/sqlalchemy/dialects/mysql/mysqldb.py | 22 +- lib/sqlalchemy/dialects/mysql/oursql.py | 25 +- lib/sqlalchemy/dialects/mysql/pymysql.py | 19 +- lib/sqlalchemy/dialects/mysql/pyodbc.py | 22 +- lib/sqlalchemy/dialects/mysql/zxjdbc.py | 25 +- lib/sqlalchemy/dialects/oracle/base.py | 88 +- lib/sqlalchemy/dialects/oracle/cx_oracle.py | 123 +- lib/sqlalchemy/dialects/oracle/zxjdbc.py | 19 +- lib/sqlalchemy/dialects/postgresql/__init__.py | 8 +- lib/sqlalchemy/dialects/postgresql/base.py | 588 +- lib/sqlalchemy/dialects/postgresql/pg8000.py | 28 +- lib/sqlalchemy/dialects/postgresql/psycopg2.py | 49 +- lib/sqlalchemy/dialects/postgresql/pypostgresql.py | 20 +- lib/sqlalchemy/dialects/postgresql/zxjdbc.py | 15 +- lib/sqlalchemy/dialects/sqlite/base.py | 140 +- lib/sqlalchemy/dialects/sqlite/pysqlite.py | 15 +- lib/sqlalchemy/dialects/sybase/__init__.py | 7 +- lib/sqlalchemy/dialects/sybase/base.py | 9 +- lib/sqlalchemy/dialects/sybase/mxodbc.py | 12 +- lib/sqlalchemy/dialects/sybase/pyodbc.py | 12 +- lib/sqlalchemy/dialects/sybase/pysybase.py | 12 +- lib/sqlalchemy/engine/__init__.py | 115 +- lib/sqlalchemy/engine/base.py | 2118 +++- lib/sqlalchemy/engine/ddl.py | 4 +- lib/sqlalchemy/engine/default.py | 106 +- lib/sqlalchemy/engine/interfaces.py | 837 - lib/sqlalchemy/engine/reflection.py | 98 +- lib/sqlalchemy/engine/result.py | 1001 -- lib/sqlalchemy/engine/threadlocal.py | 4 +- lib/sqlalchemy/engine/url.py | 62 +- lib/sqlalchemy/engine/util.py | 93 - lib/sqlalchemy/event.py | 180 +- lib/sqlalchemy/events.py | 273 +- lib/sqlalchemy/exc.py | 17 +- lib/sqlalchemy/ext/associationproxy.py | 14 +- lib/sqlalchemy/ext/compiler.py | 17 +- lib/sqlalchemy/ext/declarative.py | 1761 +++ lib/sqlalchemy/ext/declarative/__init__.py | 1245 -- lib/sqlalchemy/ext/declarative/api.py | 436 - lib/sqlalchemy/ext/declarative/base.py | 430 - lib/sqlalchemy/ext/declarative/clsregistry.py | 244 - lib/sqlalchemy/ext/horizontal_shard.py | 10 +- lib/sqlalchemy/ext/hybrid.py | 188 +- lib/sqlalchemy/ext/instrumentation.py | 397 - lib/sqlalchemy/ext/mutable.py | 8 +- lib/sqlalchemy/ext/orderinglist.py | 4 +- lib/sqlalchemy/ext/serializer.py | 14 +- lib/sqlalchemy/ext/sqlsoup.py | 811 + lib/sqlalchemy/inspection.py | 88 - lib/sqlalchemy/interfaces.py | 4 +- lib/sqlalchemy/log.py | 2 +- lib/sqlalchemy/orm/__init__.py | 151 +- lib/sqlalchemy/orm/attributes.py | 354 +- lib/sqlalchemy/orm/collections.py | 156 +- lib/sqlalchemy/orm/dependency.py | 31 +- lib/sqlalchemy/orm/deprecated_interfaces.py | 4 +- lib/sqlalchemy/orm/descriptor_props.py | 45 +- lib/sqlalchemy/orm/dynamic.py | 35 +- lib/sqlalchemy/orm/evaluator.py | 28 +- lib/sqlalchemy/orm/events.py | 217 +- lib/sqlalchemy/orm/exc.py | 35 +- lib/sqlalchemy/orm/identity.py | 27 +- lib/sqlalchemy/orm/instrumentation.py | 416 +- lib/sqlalchemy/orm/interfaces.py | 412 +- lib/sqlalchemy/orm/loading.py | 602 - lib/sqlalchemy/orm/mapper.py | 1052 +- lib/sqlalchemy/orm/persistence.py | 260 +- lib/sqlalchemy/orm/properties.py | 781 +- lib/sqlalchemy/orm/query.py | 1071 +- lib/sqlalchemy/orm/relationships.py | 932 - lib/sqlalchemy/orm/scoping.py | 91 +- lib/sqlalchemy/orm/session.py | 608 +- lib/sqlalchemy/orm/shard.py | 15 + lib/sqlalchemy/orm/state.py | 409 +- lib/sqlalchemy/orm/strategies.py | 554 +- lib/sqlalchemy/orm/sync.py | 32 +- lib/sqlalchemy/orm/unitofwork.py | 137 +- lib/sqlalchemy/orm/util.py | 819 +- lib/sqlalchemy/pool.py | 44 +- lib/sqlalchemy/processors.py | 13 +- lib/sqlalchemy/schema.py | 301 +- lib/sqlalchemy/sql/__init__.py | 4 +- lib/sqlalchemy/sql/compiler.py | 575 +- lib/sqlalchemy/sql/expression.py | 1647 +-- lib/sqlalchemy/sql/functions.py | 167 +- lib/sqlalchemy/sql/operators.py | 247 +- lib/sqlalchemy/sql/util.py | 267 +- lib/sqlalchemy/sql/visitors.py | 14 +- lib/sqlalchemy/testing/__init__.py | 21 - lib/sqlalchemy/testing/assertions.py | 362 - lib/sqlalchemy/testing/assertsql.py | 314 - lib/sqlalchemy/testing/config.py | 3 - lib/sqlalchemy/testing/engines.py | 430 - lib/sqlalchemy/testing/entities.py | 83 - lib/sqlalchemy/testing/exclusions.py | 313 - lib/sqlalchemy/testing/fixtures.py | 333 - lib/sqlalchemy/testing/pickleable.py | 107 - lib/sqlalchemy/testing/plugin/noseplugin.py | 416 - lib/sqlalchemy/testing/profiling.py | 291 - lib/sqlalchemy/testing/requirements.py | 220 - lib/sqlalchemy/testing/runner.py | 32 - lib/sqlalchemy/testing/schema.py | 85 - lib/sqlalchemy/testing/suite/__init__.py | 6 - lib/sqlalchemy/testing/suite/test_ddl.py | 51 - lib/sqlalchemy/testing/suite/test_insert.py | 166 - lib/sqlalchemy/testing/suite/test_reflection.py | 428 - lib/sqlalchemy/testing/suite/test_types.py | 104 - lib/sqlalchemy/testing/suite/test_update_delete.py | 64 - lib/sqlalchemy/testing/util.py | 196 - lib/sqlalchemy/testing/warnings.py | 43 - lib/sqlalchemy/types.py | 552 +- lib/sqlalchemy/util/__init__.py | 20 +- lib/sqlalchemy/util/_collections.py | 121 +- lib/sqlalchemy/util/compat.py | 35 +- lib/sqlalchemy/util/deprecations.py | 2 +- lib/sqlalchemy/util/langhelpers.py | 100 +- lib/sqlalchemy/util/queue.py | 17 +- lib/sqlalchemy/util/topological.py | 5 +- setup.cfg | 21 +- setup.py | 24 +- sqla_nose.py | 21 +- test/aaa_profiling/test_compiler.py | 24 +- test/aaa_profiling/test_memusage.py | 217 +- test/aaa_profiling/test_orm.py | 29 +- test/aaa_profiling/test_pool.py | 16 +- test/aaa_profiling/test_resultset.py | 9 +- test/aaa_profiling/test_zoomark.py | 3 +- test/aaa_profiling/test_zoomark_orm.py | 8 +- test/base/test_dependency.py | 6 +- test/base/test_events.py | 230 +- test/base/test_except.py | 4 +- test/base/test_inspect.py | 71 - test/base/test_utils.py | 208 +- test/bootstrap/config.py | 176 + test/bootstrap/noseplugin.py | 195 + test/dialect/test_access.py | 31 + test/dialect/test_firebird.py | 41 +- test/dialect/test_informix.py | 2 +- test/dialect/test_maxdb.py | 239 + test/dialect/test_mssql.py | 77 +- test/dialect/test_mxodbc.py | 17 +- test/dialect/test_mysql.py | 598 +- test/dialect/test_oracle.py | 137 +- test/dialect/test_postgresql.py | 353 +- test/dialect/test_pyodbc.py | 4 +- test/dialect/test_sqlite.py | 109 +- test/dialect/test_suite.py | 2 - test/dialect/test_sybase.py | 2 +- test/engine/test_bind.py | 10 +- test/engine/test_ddlevents.py | 45 +- test/engine/test_execute.py | 289 +- test/engine/test_parseconnect.py | 50 +- test/engine/test_pool.py | 14 +- test/engine/test_processors.py | 128 +- test/engine/test_reconnect.py | 40 +- test/engine/test_reflection.py | 396 +- test/engine/test_transaction.py | 12 +- test/ex/test_examples.py | 58 + test/ext/declarative/test_basic.py | 1458 -- test/ext/declarative/test_clsregistry.py | 198 - test/ext/declarative/test_inheritance.py | 1161 -- test/ext/declarative/test_mixin.py | 1254 -- test/ext/declarative/test_reflection.py | 451 - test/ext/test_associationproxy.py | 22 +- test/ext/test_compiler.py | 18 +- test/ext/test_declarative.py | 3673 +++++++ test/ext/test_extendedattr.py | 485 - test/ext/test_horizontal_shard.py | 97 +- test/ext/test_hybrid.py | 8 +- test/ext/test_mutable.py | 10 +- test/ext/test_orderinglist.py | 9 +- test/ext/test_serializer.py | 38 +- test/ext/test_sqlsoup.py | 447 + test/lib/__init__.py | 24 + test/lib/assertsql.py | 316 + test/lib/engines.py | 428 + test/lib/entities.py | 83 + test/lib/exclusions.py | 269 + test/lib/fixtures.py | 339 + test/lib/orm.py | 111 + test/lib/pickleable.py | 101 + test/lib/profiles.txt | 252 + test/lib/profiling.py | 290 + test/lib/requires.py | 461 + test/lib/schema.py | 81 + test/lib/testing.py | 454 + test/lib/util.py | 129 + test/orm/_fixtures.py | 51 +- test/orm/inheritance/_poly_fixtures.py | 55 +- test/orm/inheritance/test_abc_inheritance.py | 17 +- test/orm/inheritance/test_abc_polymorphic.py | 8 +- test/orm/inheritance/test_assorted_poly.py | 17 +- test/orm/inheritance/test_basic.py | 226 +- test/orm/inheritance/test_concrete.py | 12 +- test/orm/inheritance/test_magazine.py | 8 +- test/orm/inheritance/test_manytomany.py | 6 +- test/orm/inheritance/test_poly_linked_list.py | 6 +- test/orm/inheritance/test_poly_persistence.py | 9 +- test/orm/inheritance/test_polymorphic_rel.py | 186 +- test/orm/inheritance/test_productspec.py | 6 +- test/orm/inheritance/test_relationship.py | 7 +- test/orm/inheritance/test_selects.py | 4 +- test/orm/inheritance/test_single.py | 8 +- test/orm/inheritance/test_with_poly.py | 114 - test/orm/test_association.py | 8 +- test/orm/test_assorted_eager.py | 8 +- test/orm/test_attributes.py | 320 +- test/orm/test_backref_mutations.py | 16 +- test/orm/test_bind.py | 10 +- test/orm/test_cascade.py | 109 +- test/orm/test_collection.py | 12 +- test/orm/test_compile.py | 6 +- test/orm/test_composites.py | 10 +- test/orm/test_cycles.py | 10 +- test/orm/test_default_strategies.py | 4 +- test/orm/test_defaults.py | 9 +- test/orm/test_deprecations.py | 8 +- test/orm/test_descriptor.py | 16 +- test/orm/test_dynamic.py | 36 +- test/orm/test_eager_relations.py | 165 +- test/orm/test_evaluator.py | 10 +- test/orm/test_events.py | 362 +- test/orm/test_expire.py | 12 +- test/orm/test_extendedattr.py | 325 + test/orm/test_froms.py | 142 +- test/orm/test_generative.py | 12 +- test/orm/test_hasparent.py | 15 +- test/orm/test_immediate_load.py | 4 +- test/orm/test_inspect.py | 365 - test/orm/test_instrumentation.py | 180 +- test/orm/test_joins.py | 23 +- test/orm/test_lazy_relations.py | 12 +- test/orm/test_legacy_mutable.py | 375 + test/orm/test_load_on_fks.py | 59 +- test/orm/test_loading.py | 94 - test/orm/test_lockmode.py | 4 +- test/orm/test_manytomany.py | 10 +- test/orm/test_mapper.py | 178 +- test/orm/test_merge.py | 172 +- test/orm/test_naturalpks.py | 54 +- test/orm/test_of_type.py | 577 - test/orm/test_onetoone.py | 6 +- test/orm/test_pickled.py | 54 +- test/orm/test_query.py | 350 +- test/orm/test_rel_fn.py | 1015 -- test/orm/test_relationships.py | 796 +- test/orm/test_scoping.py | 10 +- test/orm/test_selectable.py | 10 +- test/orm/test_session.py | 152 +- test/orm/test_subquery_relations.py | 126 +- test/orm/test_sync.py | 12 +- test/orm/test_transaction.py | 86 +- test/orm/test_unitofwork.py | 29 +- test/orm/test_unitofworkv2.py | 134 +- test/orm/test_update_delete.py | 249 +- test/orm/test_utils.py | 306 +- test/orm/test_versioning.py | 11 +- test/perf/insertspeed.py | 2 +- test/perf/large_flush.py | 2 +- test/perf/objselectspeed.py | 4 +- test/perf/objupdatespeed.py | 4 +- test/perf/orm2010.py | 2 - test/perf/ormsession.py | 4 +- test/perf/sessions.py | 4 +- test/perf/stress_all.py | 4 +- test/profiles.txt | 264 - test/requirements.py | 474 - test/sql/test_case_statement.py | 25 +- test/sql/test_compiler.py | 1592 +- test/sql/test_constraints.py | 73 +- test/sql/test_cte.py | 5 +- test/sql/test_defaults.py | 41 +- test/sql/test_functions.py | 213 +- test/sql/test_generative.py | 235 +- test/sql/test_inspect.py | 33 - test/sql/test_labels.py | 9 +- test/sql/test_metadata.py | 87 +- test/sql/test_operators.py | 942 +- test/sql/test_query.py | 491 +- test/sql/test_quote.py | 3 +- test/sql/test_returning.py | 45 +- test/sql/test_rowcount.py | 3 +- test/sql/test_selectable.py | 339 +- test/sql/test_type_expressions.py | 271 - test/sql/test_types.py | 463 +- test/sql/test_unicode.py | 7 +- test/sql/test_update.py | 7 +- 402 files changed, 40861 insertions(+), 41522 deletions(-) diffs (truncated from 104114 to 300 lines): diff -r 08c63cef036c -r 6026d326e347 .hgignore --- a/.hgignore Thu Oct 25 15:20:36 2012 -0400 +++ b/.hgignore Thu Oct 25 15:49:44 2012 -0400 @@ -8,7 +8,6 @@ .so$ .egg-info .*,cover -^dogpile_data/ .un~ \.coverage \.DS_Store diff -r 08c63cef036c -r 6026d326e347 .hgtags --- a/.hgtags Thu Oct 25 15:20:36 2012 -0400 +++ b/.hgtags Thu Oct 25 15:49:44 2012 -0400 @@ -87,3 +87,6 @@ 19a7e3a6058878ecc07a40ea563e9cf92110be3a rel_0_7_4 ebe9514a69a4b4ec6209f0e9aa43053ba28d080b rel_0_7_5 d557287431986274a796348750f1c6ce885b196c rel_0_7_6 +faa9d921eb84651e755839072edf7cc929888119 rel_0_7_7 +78b2833fb74f63423a5daa4837364ec1d7b56152 rel_0_7_8 +b42f6393dff29a11cfcf9578085b0a10587a6975 rel_0_7_9 diff -r 08c63cef036c -r 6026d326e347 CHANGES --- a/CHANGES Thu Oct 25 15:20:36 2012 -0400 +++ b/CHANGES Thu Oct 25 15:49:44 2012 -0400 @@ -1,16 +1,5799 @@ +-*- coding: utf-8; fill-column: 68 -*- + +======= +CHANGES +======= +0.7.10 +====== +- changelog + - The changelog has been moved to the documentation. + This file will be maintained throughout remaining + 0.7 maintenance for backwards compabitility, but + is removed in 0.8. + +- orm + - [bug] Fixed Session accounting bug whereby replacing + a deleted object in the identity map with another + object of the same primary key would raise a + "conflicting state" error on rollback(), + if the replaced primary key were established either + via non-unitofwork-established INSERT statement + or by primary key switch of another instance. + [ticket:2583] + +- oracle + - [bug] changed the list of cx_oracle types that are + excluded from the setinputsizes() step to only include + STRING and UNICODE; CLOB and NCLOB are removed. This + is to work around cx_oracle behavior which is broken + for the executemany() call. In 0.8, this same change + is applied however it is also configurable via the + exclude_setinputsizes argument. [ticket:2561] + +- mysql + - [feature] Added "raise_on_warnings" flag to OurSQL + dialect. [ticket:2523] + + - [feature] Added "read_timeout" flag to MySQLdb + dialect. [ticket:2554] + +0.7.9 ===== -MOVED +- orm + - [bug] Fixed bug mostly local to new + AbstractConcreteBase helper where the "type" + attribute from the superclass would not + be overridden on the subclass to produce the + "reserved for base" error message, instead placing + a do-nothing attribute there. This was inconsistent + vs. using ConcreteBase as well as all the behavior + of classical concrete mappings, where the "type" + column from the polymorphic base would be explicitly + disabled on subclasses, unless overridden + explicitly. + + - [bug] A warning is emitted when lazy='dynamic' + is combined with uselist=False. This is an + exception raise in 0.8. + + - [bug] Fixed bug whereby user error in related-object + assignment could cause recursion overflow if the + assignment triggered a backref of the same name + as a bi-directional attribute on the incorrect + class to the same target. An informative + error is raised now. + + - [bug] Fixed bug where incorrect type information + would be passed when the ORM would bind the + "version" column, when using the "version" feature. + Tests courtesy Daniel Miller. [ticket:2539] + + - [bug] Extra logic has been added to the "flush" + that occurs within Session.commit(), such that the + extra state added by an after_flush() or + after_flush_postexec() hook is also flushed in a + subsequent flush, before the "commit" completes. + Subsequent calls to flush() will continue until + the after_flush hooks stop adding new state. + An "overflow" counter of 100 is also in place, + in the event of a broken after_flush() hook + adding new content each time. [ticket:2566] + +- sql + - [bug] Fixed the DropIndex construct to support + an Index associated with a Table in a remote + schema. [ticket:2571] + + - [bug] Fixed bug in over() construct whereby + passing an empty list for either partition_by + or order_by, as opposed to None, would fail + to generate correctly. + Courtesy Gunnlaugur Ãór Briem. + [ticket:2574] + + - [bug] Fixed CTE bug whereby positional + bound parameters present in the CTEs themselves + would corrupt the overall ordering of + bound parameters. This primarily + affected SQL Server as the platform with + positional binds + CTE support. + [ticket:2521] + + - [bug] Fixed more un-intuitivenesses in CTEs + which prevented referring to a CTE in a union + of itself without it being aliased. + CTEs now render uniquely + on name, rendering the outermost CTE of a given + name only - all other references are rendered + just as the name. This even includes other + CTE/SELECTs that refer to different versions + of the same CTE object, such as a SELECT + or a UNION ALL of that SELECT. We are + somewhat loosening the usual link between object + identity and lexical identity in this case. + A true name conflict between two unrelated + CTEs now raises an error. + + - [bug] quoting is applied to the column names + inside the WITH RECURSIVE clause of a + common table expression according to the + quoting rules for the originating Column. + [ticket:2512] + + - [bug] Fixed regression introduced in 0.7.6 + whereby the FROM list of a SELECT statement + could be incorrect in certain "clone+replace" + scenarios. [ticket:2518] + + - [bug] Fixed bug whereby usage of a UNION + or similar inside of an embedded subquery + would interfere with result-column targeting, + in the case that a result-column had the same + ultimate name as a name inside the embedded + UNION. [ticket:2552] + + - [bug] Fixed a regression since 0.6 regarding + result-row targeting. It should be possible + to use a select() statement with string + based columns in it, that is + select(['id', 'name']).select_from('mytable'), + and have this statement be targetable by + Column objects with those names; this is the + mechanism by which + query(MyClass).from_statement(some_statement) + works. At some point the specific case of + using select(['id']), which is equivalent to + select([literal_column('id')]), stopped working + here, so this has been re-instated and of + course tested. [ticket:2558] + + - [bug] Added missing operators is_(), isnot() + to the ColumnOperators base, so that these long-available + operators are present as methods like all + the other operators. [ticket:2544] + +- engine + - [bug] Fixed bug whereby + a disconnect detect + dispose that occurs + when the QueuePool has threads waiting + for connections would leave those + threads waiting for the duration of + the timeout on the old pool (or indefinitely + if timeout was disabled). The fix + now notifies those waiters with a special + exception case and has them move onto + the new pool. [ticket:2522] + + - [feature] Dramatic improvement in memory + usage of the event system; instance-level + collections are no longer created for a + particular type of event until + instance-level listeners are established + for that event. [ticket:2516] + + - [bug] Added gaerdbms import to mysql/__init__.py, + the absense of which was preventing the new + GAE dialect from being loaded. [ticket:2529] + + - [bug] Fixed cextension bug whereby the + "ambiguous column error" would fail to + function properly if the given index were + a Column object and not a string. + Note there are still some column-targeting + issues here which are fixed in 0.8. + [ticket:2553] + + - [bug] Fixed the repr() of Enum to include + the "name" and "native_enum" flags. Helps + Alembic autogenerate. + +- sqlite + - [bug] Adjusted a very old bugfix which attempted + to work around a SQLite issue that itself was + "fixed" as of sqlite 3.6.14, regarding quotes + surrounding a table name when using + the "foreign_key_list" pragma. The fix has been + adjusted to not interfere with quotes that + are *actually in the name* of a column or table, + to as much a degree as possible; sqlite still + doesn't return the correct result for foreign_key_list() + if the target table actually has quotes surrounding + its name, as *part* of its name (i.e. """mytable"""). + [ticket:2568] + + - [bug] Adjusted column default reflection code to + convert non-string values to string, to accommodate + old SQLite versions that don't deliver + default info as a string. [ticket:2265] + + - [feature] Added support for the localtimestamp() + SQL function implemented in SQLite, courtesy + Richard Mitchell. + +- postgresql + - [bug] Columns in reflected primary key constraint + are now returned in the order in which the constraint + itself defines them, rather than how the table + orders them. Courtesy Gunnlaugur Ãór Briem. + [ticket:2531]. + + - [bug] Added 'terminating connection' to the list + of messages we use to detect a disconnect with PG, which + appears to be present in some versions when the server + is restarted. [ticket:2570] + +- mysql + - [bug] Updated mysqlconnector interface to use + updated "client flag" and "charset" APIs, + courtesy David McNelis. + +- mssql + - [bug] Fixed compiler bug whereby using a correlated + subquery within an ORDER BY would fail to render correctly + if the stament also used LIMIT/OFFSET, due to mis-rendering + within the ROW_NUMBER() OVER clause. Fix courtesy + sayap [ticket:2538] + + - [bug] Fixed compiler bug whereby a given + select() would be modified if it had an "offset" + attribute, causing the construct to not compile + correctly a second time. [ticket:2545] + + - [bug] Fixed bug where reflection of primary key constraint + would double up columns if the same constraint/table + existed in multiple schemas. + +0.7.8 ===== - -Please see: - - /doc/changelog/index.html - -or - - http://www.sqlalchemy.org/docs/latest/changelog/ - -for an index of all changelogs. - - - +- orm + - [bug] Fixed bug whereby subqueryload() from + a polymorphic mapping to a target would incur + a new invocation of the query for each + distinct class encountered in the polymorphic + result. [ticket:2480] + + - [bug] Fixed bug in declarative + whereby the precedence of columns + in a joined-table, composite + column (typically for id) would fail to + be correct if the columns contained + names distinct from their attribute + names. This would cause things like |