summaryrefslogtreecommitdiff
path: root/test/engine/test_reflection.py
Commit message (Collapse)AuthorAgeFilesLines
* Spelling fixes: "an SQL" -> "a SQL", see #266pr/270Ville Skyttä2016-05-051-1/+1
|
* - Multi-tenancy schema translation for :class:`.Table` objects is added.Mike Bayer2016-01-081-5/+16
| | | | | | | | | This supports the use case of an application that uses the same set of :class:`.Table` objects in many schemas, such as schema-per-user. A new execution option :paramref:`.Connection.execution_options.schema_translate_map` is added. fixes #2685 - latest tox doesn't like the {posargs} in the profile rerunner
* - The system by which a :class:`.Column` considers itself to be anMike Bayer2015-10-071-9/+10
| | | | | | | | | | | | | | | | | "auto increment" column has been changed, such that autoincrement is no longer implicitly enabled for a :class:`.Table` that has a composite primary key. In order to accommodate being able to enable autoincrement for a composite PK member column while at the same time maintaining SQLAlchemy's long standing behavior of enabling implicit autoincrement for a single integer primary key, a third state has been added to the :paramref:`.Column.autoincrement` parameter ``"auto"``, which is now the default. fixes #3216 - The MySQL dialect no longer generates an extra "KEY" directive when generating CREATE TABLE DDL for a table using InnoDB with a composite primary key with AUTO_INCREMENT on a column that isn't the first column; to overcome InnoDB's limitation here, the PRIMARY KEY constraint is now generated with the AUTO_INCREMENT column placed first in the list of columns.
* PEP8 cleanup in /test/enginepr/163Eric Streeper2015-03-201-30/+58
|
* Added new requirement for check_constraintsScott Dugas2014-10-231-0/+1
|
* - An adjustment to table/index reflection such that if an indexMike Bayer2014-09-021-0/+20
| | | | | | | reports a column that isn't found to be present in the table, a warning is emitted and the column is skipped. This can occur for some special system column situations as has been observed with Oracle. fixes #3180
* Providing an autoload_with info automatically sets autoload to TrueMalik Diarra2014-08-091-0/+16
|
* - ensure all tests are named test_*Mike Bayer2014-07-301-1/+1
|
* - scale up for mysql, sqliteMike Bayer2014-07-261-9/+14
|
* - rename __multiple__ to __backend__, and apply __backend__ to a large ↵Mike Bayer2014-03-241-0/+10
| | | | | | number of tests. - move out logging tests from test_execute to test_logging
* - Added new datatype :class:`.oracle.DATE`, which is a subclass ofMike Bayer2014-03-221-2/+2
| | | | | | | | | | | | :class:`.DateTime`. As Oracle has no "datetime" type per se, it instead has only ``DATE``, it is appropriate here that the ``DATE`` type as present in the Oracle dialect be an instance of :class:`.DateTime`. This issue doesn't change anything as far as the behavior of the type, as data conversion is handled by the DBAPI in any case, however the improved subclass layout will help the use cases of inspecting types for cross-database compatibility. Also removed uppercase ``DATETIME`` from the Oracle dialect as this type isn't functional in that context. fixes #2987
* Remove tables from metadata when autoload failspr/78Roman Podoliaka2014-03-121-0/+1
| | | | | | | | If autoloading of a table fails, don't register it in a metadata instance. It seems that the original behaviour was accidentally changed in f6198d9abf453182f4b111e0579a7a4ef1614e79, restore it. Closes issue #2988
* - Support has been added for pytest to run tests. This runnerMike Bayer2014-03-031-15/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | is currently being supported in addition to nose, and will likely be preferred to nose going forward. The nose plugin system used by SQLAlchemy has been split out so that it works under pytest as well. There are no plans to drop support for nose at the moment and we hope that the test suite itself can continue to remain as agnostic of testing platform as possible. See the file README.unittests.rst for updated information on running tests with pytest. The test plugin system has also been enhanced to support running tests against mutiple database URLs at once, by specifying the ``--db`` and/or ``--dburi`` flags multiple times. This does not run the entire test suite for each database, but instead allows test cases that are specific to certain backends make use of that backend as the test is run. When using pytest as the test runner, the system will also run specific test suites multiple times, once for each database, particularly those tests within the "dialect suite". The plan is that the enhanced system will also be used by Alembic, and allow Alembic to run migration operation tests against multiple backends in one run, including third-party backends not included within Alembic itself. Third party dialects and extensions are also encouraged to standardize on SQLAlchemy's test suite as a basis; see the file README.dialects.rst for background on building out from SQLAlchemy's test platform.
* Merge branch 'master' of https://github.com/eblume/sqlalchemy into tMike Bayer2014-02-161-2/+8
|\
| * SQLite dialect - support relection from affinitypr/65Erich Blume2014-02-031-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SQLite allows column types that aren't technically understood in sqlite by using 'data affinity', which is an algorithm for converting column types in to some sort of useful type that can be stored and retrieved from the db. Unfortunatly, this breaks reflection since we (previously) expected a sqlite db to reflect column types that we permit in the `ischema_names` for that dialect. This patch changes the logic for 'unknown' column types during reflection to instead run through SQLite's data affinity algorithm, and assigns appropriate types from that. It also expands the matching for column type to include column types with spaces (strongly discouraged but allowed by sqlite) and also completely empty column types (in which case the NullType is assigned, which sqlite will treat as a Blob - or rather, Blob is treated as NullType). These changes mean that SQLite will never raise an error for an unknown type during reflection - there will always be some 'useful' type returned, which follows the spirit of SQLite (accomodation before sanity!).
* | - Added a new feature which allows automated naming conventions to beMike Bayer2014-02-011-5/+2
|/ | | | | | | | | | | | | | | | applied to :class:`.Constraint` and :class:`.Index` objects. Based on a recipe in the wiki, the new feature uses schema-events to set up names as various schema objects are associated with each other. The events then expose a configuration system through a new argument :paramref:`.MetaData.naming_convention`. This system allows production of both simple and custom naming schemes for constraints and indexes on a per-:class:`.MetaData` basis. [ticket:2923] commit 7e65e52c086652de3dd3303c723f98f09af54db8 Author: Mike Bayer <mike_mp@zzzcomputing.com> Date: Sat Feb 1 15:09:04 2014 -0500 - first pass at new naming approach
* - simplify the mechanics of PrimaryKeyConstraint with regards to reflection;Mike Bayer2014-01-201-0/+21
| | | | | | | | | | | | reflection now updates the PKC in place. - support the use case of the empty PrimaryKeyConstraint in order to specify constraint options; the columns marked as primary_key=True will now be gathered into the columns collection, rather than being ignored. [ticket:2910] - add validation such that column specification should only take place in the PrimaryKeyConstraint directly, or by using primary_key=True flags; if both are present, they have to match exactly, otherwise the condition is assumed to be ambiguous, and a warning is emitted; the old behavior of using the PKC columns only is maintained.
* - The :paramref:`.Table.extend_existing` and :paramref:`.Table.autoload_replace`Mike Bayer2014-01-041-0/+13
| | | | | | parameters are now available on the :meth:`.MetaData.reflect` method. - starting to use paramref and need newer paramlinks version.
* - remove informix dialect, moved out to ↵Mike Bayer2013-11-171-5/+1
| | | | | | https://bitbucket.org/zzzeek/sqlalchemy_informixdb - remove informix, maxdb, access symbols from tests etc.
* - move this test to PG test_reflectionMike Bayer2013-10-251-2/+2
| | | | - don't use locals()
* ForeignKeyConstraint reflection test respects MySQL limitationspr/34ijl2013-10-151-12/+20
|
* #2183: Metadata.reflect() foreign keys include options when the dialect ↵ijl2013-10-131-0/+41
| | | | exposes it
* use a different col here to keep oracle happyMike Bayer2013-09-021-2/+12
|
* plus some more adjustments for mysql, or in general if an Index refers toMike Bayer2013-08-281-1/+3
| | | | in-python only cols
* Fixed bug where using the ``column_reflect`` event to change the ``.key``Mike Bayer2013-08-281-4/+34
| | | | | | of the incoming :class:`.Column` would prevent primary key constraints, indexes, and foreign key constraints from being correctly reflected. Also in 0.8.3. [ticket:2811]
* - get_unique_constraints() pull requestMike Bayer2013-06-091-34/+0
| | | | | | - version (0.9 for now) - changelog - move the test into the test suite so that all dialects can take advantage of it
* Add basic support of unique constraints reflectionpr/4Roman Podolyaka2013-06-091-0/+37
| | | | | | | | | | | | Inspection API already supports reflection of table indexes information and those also include unique constraints (at least for PostgreSQL and MySQL). But it could be actually useful to distinguish between indexes and plain unique constraints (though both are implemented in the same way internally in RDBMS). This change adds a new method to Inspection API - get_unique_constraints() and implements it for SQLite, PostgreSQL and MySQL dialects.
* - clean up some of the requires for cross-schema reflectionMike Bayer2013-06-031-7/+4
| | | | - add oracle profile counts
* Fixed bug whereby using :meth:`.MetaData.reflect` across a remoteMike Bayer2013-06-031-0/+24
| | | | | | schema as well as a local schema could produce wrong results in the case where both schemas had a table of the same name. [ticket:2728]
* that's all of engineMike Bayer2013-05-041-6/+8
|
* cleanupMike Bayer2013-05-041-79/+78
|
* - the raw 2to3 runMike Bayer2013-04-271-9/+9
| | | | - went through examples/ and cleaned out excess list() calls
* - adding in requirementsMike Bayer2013-02-061-3/+3
| | | | - get test_naturalpks to be more generalized
* Fixed :meth:`.MetaData.reflect` to correctly useMike Bayer2012-11-141-10/+37
| | | | | | the given :class:`.Connection`, if given, without opening a second connection from that connection's :class:`.Engine`. [ticket:2604]
* - test updatesMike Bayer2012-10-041-5/+7
|
* - more tests, move some tests out of test_reflection, test_queryMike Bayer2012-09-271-317/+0
|
* trying different approaches to test layout. in this one, the testing modulesMike Bayer2012-09-271-4/+5
| | | | | | | become an externally usable package but still remains within the main sqlalchemy parent package. in this system, we use kind of an ugly hack to get the noseplugin imported outside of the "sqlalchemy" package, while still making it available within sqlalchemy for usage by third party libraries.
* -whitespace bonanza, contdMike Bayer2012-07-281-45/+45
|
* - [feature] The "deferred declarativeMike Bayer2012-05-171-1/+50
| | | | | | | | | | | | | | | | reflection" system has been moved into the declarative extension itself, using the new DeferredReflection class. This class is now tested with both single and joined table inheritance use cases. [ticket:2485] - [bug] The autoload_replace flag on Table, when False, will cause any reflected foreign key constraints which refer to already-declared columns to be skipped, assuming that the in-Python declared column will take over the task of specifying in-Python ForeignKey or ForeignKeyConstraint declarations.
* - [feature] Inspector.get_primary_keys() isMike Bayer2012-04-241-16/+30
|\ | | | | | | | | | | | | | | deprecated; use Inspector.get_pk_constraint(). Courtesy Diana Clarke. [ticket:2422] - restored default get_primary_keys()/get_pk_constraint() wrapper to help maintain compatibility with third party dialects created against 0.6 or 0.7
| * deprecate inspector.get_primary_keys() in favor of inspector.get_pk_constraint()Diana Clarke2012-04-021-17/+30
| | | | | | | | - see #2422
* | - [feature] The column_reflect event nowMike Bayer2012-04-241-1/+1
| | | | | | | | | | | | | | | | | | accepts the Inspector object as the first argument, preceding "table". Code which uses the 0.7 version of this very new event will need modification to add the "inspector" object as the first argument. [ticket:2418]
* | begin implementing inspection system for #2208Mike Bayer2012-04-031-16/+13
|/
* - [bug] Fixed bug in new "autoload_replace" flagMike Bayer2012-02-121-1/+13
| | | | | | which would fail to preserve the primary key constraint of the reflected table. [ticket:2402]
* - [feature] New reflection feature "autoload_replace";Mike Bayer2012-01-281-0/+42
| | | | | | | | | | | | | | | when set to False on Table, the Table can be autoloaded without existing columns being replaced. Allows more flexible chains of Table construction/reflection to be constructed, including that it helps with combining Declarative with table reflection. See the new example on the wiki. [ticket:2356] - [bug] Improved the API for add_column() such that if the same column is added to its own table, an error is not raised and the constraints don't get doubled up. Also helps with some reflection/declarative patterns. [ticket:2356]
* - [bug] the "name" of an FK constraint in SQLiteMike Bayer2012-01-071-2/+10
| | | | | | is reflected as "None", not "0" [ticket:2364]. SQLite does not appear to support constraint naming in any case (the names are ignored).
* - [bug] Decode incoming values when retrievingMike Bayer2011-12-061-36/+97
| | | | | | | list of index names and the names of columns within those indexes. [ticket:2269] - rewrite unicode reflection test to be of more general use on broken backends
* - reflection process always resets the primary key constraintMike Bayer2011-12-041-2/+5
| | | | first, fixes extend_existing
* - [feature] The "extend_existing" flag on TableMike Bayer2011-12-041-1/+40
| | | | | | | | | | | | | now allows for the reflection process to take effect for a Table object that's already been defined; when autoload=True and extend_existing=True are both set, the full set of columns will be reflected from the Table which will then *overwrite* those columns already present, rather than no activity occurring. Columns that are present directly in the autoload run will be used as always, however. [ticket:1410]
* - [bug] Fixed bug whereby "order_by='foreign_key'"Mike Bayer2011-12-011-400/+363
| | | | | | | option to Inspector.get_table_names wasn't implementing the sort properly, replaced with the existing sort algorithm - clean up metadata usage in reflection tests