summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* postgres basy.py support to teiid virtual database connection patchpr/317Salvatore Incandela2016-10-261-6/+11
|
* Ensure .mapper is set on _ColumnEntityMike Bayer2016-10-213-1/+45
| | | | | | | | | | | | | | _ColumnEntity didn't seem to have .mapper present, which due to the way _mapper_zero() worked didn't tend to come across it. With :ticket:`3608` _mapper_zero() has been simplified so make sure this is now present. Also ensure that _select_from_entity is an entity and not a mapped class, though this does not seem to matter at the moment. Fixes: #3836 Change-Id: Id6dae8e700269b97de3b01562edee95ac1e01f80
* Don't set pg autoincrement if type affinity is not IntegerMike Bayer2016-10-203-1/+30
| | | | | | | | | | | | | | | Postgresql table reflection will ensure that the :paramref:`.Column.autoincrement` flag is set to False when reflecting a primary key column that is not of an :class:`.Integer` datatype, even if the default is related to an integer-generating sequence. This can happen if a column is created as SERIAL and the datatype is changed. The autoincrement flag can only be True if the datatype is of integer affinity in the 1.1 series. This bug is related to a test failure in downstream sqlalchemy_migrate. Change-Id: I40260e47e1927a1ac940538408983c943bbdba28 Fixes: #3835
* Merge "Convert expression type for concat + Enum"mike bayer2016-10-203-0/+43
|\
| * Convert expression type for concat + EnumMike Bayer2016-10-203-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | Fixed bug involving new value translation and validation feature in :class:`.Enum` whereby using the enum object in a string concatenation would maintain the :class:`.Enum` type as the type of the expression overall, producing missing lookups. A string concatenation against an :class:`.Enum`-typed column now uses :class:`.String` as the datatype of the expression itself. Change-Id: Id402054e3ef008e0250c740dbb7e1c80f339fe78 Fixes: #3833
* | Document Enum.enums is now a listMike Bayer2016-10-201-0/+7
|/ | | | | Change-Id: I27251c262f919df1b084cbb08759f672f05cd3f7 Fixes: #3834
* Ensure TypeDecorator delegates _set_parent_with_dispatchMike Bayer2016-10-204-2/+83
| | | | | | | | | | | | | | | | Ensure TypeDecorator delegates _set_parent_with_dispatch as well as _set_parent to itself as well as its impl, as the TypeDecorator class itself may have an active SchemaType implementation as well. Fixed regression which occurred as a side effect of :ticket:`2919`, which in the less typical case of a user-defined :class:`.TypeDecorator` that was also itself an instance of :class:`.SchemaType` (rather than the implementation being such) would cause the column attachment events to be skipped for the type itself. Change-Id: I0afb498fd91ab7d948e4439e7323a89eafcce0bc Fixes: #3832
* - open for 1.1.3Mike Bayer2016-10-202-1/+4
| | | | Change-Id: I283e52a7a63ec4f7a285aba1b41627f11b7ad41b
* Rewrite migration notes for [ticket:3514]Mike Bayer2016-10-194-23/+112
| | | | | | | | | | | | | | | | | | | The change to "evaluates none" datatypes in the ORM was not fully described in the migration notes, missing the key behavioral change that a column which is missing a default entirely will not receive a value for a missing JSON column now. The issue here touched upon a revisit of the assumptions in [ticket:3514], but overall the old behavior "worked" mostly because the ORM wants to explicitly render NULL into an INSERT for column values that are missing, which itself is a legacy behavior which should be considered for possible removal in a future major release. Given that "missing ORM value + no column default set up == dont put it in the INSERT" would be the most intuitive behavior, the move in [ticket:3514] represents a step in this direction. Change-Id: I454d5bb0773bd73d9864925dcc47f1f0810e33ba Fixes: #3830
* - 1.1.2rel_1_1_2Mike Bayer2016-10-172-2/+3
|
* - correct ticket link markupMike Bayer2016-10-171-3/+3
| | | | Change-Id: I49df318c77f9f539541e7edea857bd256aca2844
* Merge "Add a qualifying character to multi INSERT..VALUES parameter names"mike bayer2016-10-175-88/+154
|\
| * Add a qualifying character to multi INSERT..VALUES parameter namesMike Bayer2016-10-175-88/+154
| | | | | | | | | | | | | | | | | | | | Changed the naming convention used when generating bound parameters for a multi-VALUES insert statement, so that the numbered parameter names don't conflict with the anonymized parameters of a WHERE clause, as is now common in a PostgreSQL ON CONFLICT construct. Change-Id: I3188d100fe4d322a47d344d6a63d3e40b915f228 Fixes: #3828
* | Remove the use of the word "fundamental" to describe ColumnElementsMike Bayer2016-10-171-5/+10
|/ | | | | | | | | The context is unclear if "fundamental" refers to the object's role within a SELECT composition or within the class hierarchy of ClauseElement classes. Change-Id: I10bbf324fc09034cc27398867b7eca6b6f127abe Fixes: #3793
* Add explicit copy() to EnumMike Bayer2016-10-173-6/+57
| | | | | | | | | | | | | | | | | The Boolean and Enum types both place SchemaType second in the inheritance hierarchy. In the case of Enum, this works out that the copy() method is called from the base TypeEngine which fails to transfer _create_events. The test suite doesn't seem to work with the inhertance hierarchy set up like this as the event listeners don't work out, the _on_metadata_create and _on_table_create hooks cause the production of an adapted type which then adds event listeners that cause deque changed while iteration. It's not clear why Enum /Boolean don't have this problem. But in any case it seems like the class mechanics for these types remains fragile and would benefit from yet another refactor someday. Change-Id: Ib641a5d2321b00f58bbe98dd0c5e789374db32b2 Fixes: #3827
* Memoize load_path in all cases, run quick populators for path changeMike Bayer2016-10-176-15/+137
| | | | | | | | | | | | | | | | | | | | | | | | Adds a new variant to the "isnew" state within entity loading for isnew=False, but the load path is new. This is to address the use case of an entity appearing in multiple places in the row in a more generalized way than the fixes in [ticket:3431], [ticket:3811] in that loading.py will be able to tell the populator that this row is not "isnew" but is a "new" path for the entity. For the moment, the new information is only being applied to the use of "quick" populators so that simple column loads can take place on top of a deferred loader from elsewhere in the row. As part of this change, state.load_path() will now always be populated with the "path" that was in effect when this state was originally loaded, which for multi-path loads of the same entity is still non-deterministic. Ideally there'd be some kind of "here's all the paths that loaded this state and how" type of data structure though it's not clear if that could be done while maintaining performance. Fixes: #3822 Change-Id: Ib915365353dfcca09e15c24001a8581113b97d5e
* Assemble "don't joinedload other side" rule using query._current_pathMike Bayer2016-10-176-5/+133
| | | | | | | | | Discovered during testing for [ticket:3822], the rule added for [ticket:1495] will fail if the source object has propagated options set up, which add elements to query._current_path. Fixes: #3824 Change-Id: I3d96c96fee5f9b247f739d2136d18681ac61f2fe
* Merge "Check for __module__ not present in util.wrap_callable()"mike bayer2016-10-173-1/+26
|\
| * Check for __module__ not present in util.wrap_callable()Mike Bayer2016-10-143-1/+26
| | | | | | | | | | | | | | | | | | The newly added wrap_callable() function assumes __module__ is present when this is not the case for objects such as functools.partial. Change-Id: Ia226260e9a65419e26d5c1f7187512f7fd4bb7c1 Fixes: #3823
* | Remove some legacy dead code from the declared_attr logicpr/315Pierre Jaury2016-10-161-3/+0
|/ | | | | The second 'if' condition was never called because the original condition always returns.
* Fix a minor grammatical error in the ORM tutorial.Randy Barlow2016-10-131-2/+2
| | | | Change-Id: I50daaee2645dd8aa2ee7217f4065589492ed0b7d
* - setup for next versionMike Bayer2016-10-132-1/+4
| | | | Change-Id: I4a7ef54bec3891821954061a9b4ed19d398989f3
* Update the Column.nullable docstring for the primary_key=True caseMatt Riedemann2016-10-101-4/+8
| | | | | | | | | | | | | | | | | While reviewing a change that created a new table, the primary_key column value was set to True but nullable was not explicitly set, which led to some confusion over the default behavior for the nullable column value when setting a primary_key. Looking at the docs it's not clear, but the code shows that if nullable is not specified, then nullable = not primary_key, so nullable defaults to False when primary_key is True. This patch adds a simple clarification to the docs so people don't have to check the code. Change-Id: I8553339d56fbae11370c7c6af6d8d4723163be1c Pull-request: https://github.com/zzzeek/sqlalchemy/pull/312
* spelling: Mysql -> MySQLpr/311Ville Skyttä2016-10-082-3/+3
|
* spelling: Postgis -> PostGISVille Skyttä2016-10-083-5/+5
|
* spelling: Postgresql -> PostgreSQLVille Skyttä2016-10-0860-311/+311
|
* Spelling fixesVille Skyttä2016-10-0823-30/+30
|
* - 1.1.1rel_1_1_1Mike Bayer2016-10-072-2/+3
|
* Change autoincrement compileerror to a warningMike Bayer2016-10-077-96/+155
| | | | | | | | Users are complaining that IntegrityError is no longer raised. Change-Id: I0855d5b7a98d4338f0910501b6e6d404ba33634d Fixes: #3216
* Catch DBAPIError instead of ProgrammingError for pyodbc failMike Bayer2016-10-072-2/+14
| | | | | Change-Id: Ide9e916d02fbbef549aa2838d1402c2b091e701d Fixes: #3820
* - set up for 1.1.1Mike Bayer2016-10-052-1/+4
| | | | Change-Id: I569a03a6e86aa096be6744ecb479fe8485f7def6
* - 1.1.0rel_1_1_0Mike Bayer2016-10-052-2/+3
|
* Merge "Propagate execution_options at compile stage"mike bayer2016-10-055-3/+69
|\
| * Propagate execution_options at compile stageMike Bayer2016-10-055-3/+69
| | | | | | | | | | | | | | | | Compiler can now set up execution options and additionally will propagate autocommit from embedded CTEs. Change-Id: I19db7b8fe4d84549ea95342e8d2040189fed1bbe Fixes: #3805
* | Minor grammatical improvements in doc/build/intro.rst.pr/310Randy Barlow2016-10-051-5/+5
|/
* Check for __clause_element__() in ORM insert/updateMike Bayer2016-10-056-7/+54
| | | | | | | | | | | | | | | | ORM attributes can now be assigned any object that is has a ``__clause_element__()`` attribute, which will result in inline SQL the way any :class:`.ClauseElement` class does. This covers other mapped attributes not otherwise transformed by further expression constructs. As part of this, it was considered that we could add __clause_element__() to ClauseElement, however this causes endless loops in a "while" pattern and this pattern has been identified in third party libraries. Add a test to ensure we never make that change. Change-Id: I9e15b3f1c4883fd3909acbf7dc81d034c6e3ce1d Fixes: #3802
* Check row for None with implicit returning PK to accommodate ON CONFLICTMike Bayer2016-10-043-13/+111
| | | | | | | | | | An adjustment to ON CONFLICT such that the "inserted_primary_key" logic is able to accommodate the case where there's no INSERT or UPDATE and there's no net change. The value comes out as None in this case, rather than failing on an exception. Change-Id: I0794e95c3ca262cb1ab2387167d96b8984225fce Fixes: #3813
* Merge "Enhance "raise" strategy to include "raise_on_sql" option"mike bayer2016-10-0410-82/+171
|\
| * Enhance "raise" strategy to include "raise_on_sql" optionMike Bayer2016-10-0410-82/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "raise_on_sql" option differentiates from "raise" in that firing a lazy loader is OK as long as it does a simple get from identity map. Whereas "raise" is more useful for the case that objects are to be detached. As part of this, refactors the strategy initiation logic a bit so that a LoaderStrategy itself knows what "key" was used to create it, thus allowing variants of a single strategy based on what the "lazy" argument is. To achieve this we have to also get rid of _get_strategy_by_cls(). Everything here is internal with the one exception of an apparently undocumented, but not underscored, "strategy_class" key on relationship(). Though it's not clear what "strategy_class" accomplishes; at this point the strategy system is extensible using Property.strategy_for(). Fixes: #3812 Change-Id: I812ad878ea5cf764e15f6f71cb39eee78a645d88
* | Merge "Honor additional row coming in with value of None"mike bayer2016-10-043-14/+75
|\ \
| * | Honor additional row coming in with value of NoneMike Bayer2016-10-043-14/+75
| |/ | | | | | | | | | | | | | | | | | | | | The change in #3431 still checks that the instance() is non-None, deferring to other loading schemes if it is. These columns are dedicated towards the entity however, so if the value is None, we should set it. If it conflicts, we are detecting that in any case. Change-Id: I223768e2898e843f953e910da1f9564b137d95e4 Fixes: #3811
* | - add a few more changes and try to break some out intoMike Bayer2016-10-042-120/+158
| | | | | | | | | | | | ORM behavioral changes Change-Id: I633ff10907b60111d3d0de0970fd384be7931d00
* | - add a note to baked documentation indicating it is notMike Bayer2016-10-041-3/+6
| | | | | | | | | | | | | | | | really of general use. This extension is there only for those who really want it based on observed performance characteristics. Change-Id: I2f612f26fdef4ddbeb1158ab1b344fad7083b11c
* | Use schema_name() for SQL Server default schemaMike Bayer2016-10-042-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | Changed the query used to get "default schema name", from one that queries the database principals table to using the "schema_name()" function, as issues have been reported that the former system was unavailable on the Azure Data Warehouse edition. It is hoped that this will finally work across all SQL Server versions and authentication styles. Change-Id: Ic11bd4162c0d6a60432ae44876e86512703c1f81 Fixes: #3810
* | Use SQL Server SERVERPROPERTY for version info w/ pyodbcMike Bayer2016-10-044-13/+36
|/ | | | | | | | | Updated the server version info scheme for pyodbc to use SQL Server SERVERPROPERTY(), rather than relying upon pyodbc.SQL_DBMS_VER, which continues to be unreliable particularly with FreeTDS. Change-Id: I4ff49ae13c8ff51bd764980131d41c18d73d87ce Fixes: #3814
* Ensure strong ref to obj before calling persistent_to_deleted, othersMike Bayer2016-10-034-6/+95
| | | | | | | | | | | | Add checks in spots where state.obj() might be late-GC'ed before we get a chance to call the event. There may be more cases of these which we should address as they come up. The Session should always be maintaining strong refs to objects that have pending operations left on them, so for these cases we need to ensure that ref remains long enough for the event to be called. Change-Id: I1a7c7bc57130acc11f54ad55924af2e36ac75101 Fixes: #3808
* Add "eager_parenthesis" late-compilation rule, use w/ PG JSON/HSTOREMike Bayer2016-10-018-28/+118
| | | | | | | | | | | | Added compiler-level flags used by Postgresql to place additional parenthesis than would normally be generated by precedence rules around operations involving JSON, HSTORE indexing operators as well as within their operands since it has been observed that Postgresql's precedence rules for at least the HSTORE indexing operator is not consistent between 9.4 and 9.5. Fixes: #3806 Change-Id: I5899677b330595264543b055abd54f3c76bfabf2
* - some documentation hitsMike Bayer2016-10-014-10/+25
| | | | Change-Id: I468fe70168804b08cf0d5e8b57e235bca904b1ff
* Remove extra "return" statement in orm.ext.declared_attr.cascading examplesDmitry Bogun2016-10-013-20/+13
| | | | | | | Also improves some naming in the examples. Change-Id: I51e5b1d9a730885aed10e5e6ade2123f5e736359 Pull-request: https://github.com/zzzeek/sqlalchemy/pull/306
* Escape literal string values passed to server_defaultMike Bayer2016-09-304-1/+66
| | | | | | | | | | | A string sent as a column default via the :paramref:`.Column.server_default` parameter is now escaped for quotes. This change is backwards compatible with code that may have been working around this previously. Change-Id: I341298a76cc67bc0a53df4ab51ab9379f2294cdd Fixes: #3809