summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
Commit message (Collapse)AuthorAgeFilesLines
* Support pytest 6.xrel_1_1Mike Bayer2020-09-271-3/+5
| | | | | | | pytest has removed support for pytest.Class().collect() and we need to use from_parent. Change-Id: Ia5fed9b22e76c99f71489283acee207f996f52a4
* update for pytest-xdist terminologyMike Bayer2020-08-141-8/+8
| | | | | | | | | With version 2.0.0 they removed the old terminology, which I had no idea had been changed in any case for several years. pushing this out for all branches Change-Id: If200b4335a6331b606499c569cee4586a41f03fb
* Add missing suite_level requirements "independent_connections"Mike Bayer2019-09-181-0/+7
| | | | | | | | | In 14b1e6fe8e18d139846c1aba6761d4eea3dc25c3 we added suite-level requirements but did not add them to the base, causing failures in third party dialect test suites. Change-Id: I7edf0be86b814b508071c5c752fc2dd744a3d9ad (cherry picked from commit f79967441fd092ba9cc81f53b6a71e8cf0223b35)
* Add missing suite level requirements from 2efd89d02941Mike Bayer2019-09-171-0/+10
| | | | | | | | | In 2efd89d02941ab4267d6e2842963fd38b1539f6c we added suite-level requirements but did not add them to the base, causing failures in third party dialect test suites. Change-Id: Ic5f1a053f5c47166e1b12c613595823106c8736e (cherry picked from commit 33648643f227929f083b67d817701f930078f901)
* filter formatargspec deprecation warningMike Bayer2019-07-211-0/+2
| | | | | | | in order to allow the 1.1 branch to include its test suite under Python 3, filter out the formatargspec warning Change-Id: I20aeddb6bb88817f7d2b1d50543df2aa4d43a8cc
* use ..deprecated directive w/ version in all casesMike Bayer2019-01-121-3/+3
| | | | | | | | | | | | These changes should be ported from 1.3 back to 1.0 or possibly 0.9 to the extent they are relevant in each version. In 1.3 we hope to turn all deprecation documentation into warnings. (cherry picked from commit 77e9534673d58f2f4c33d16c0ed4e8671cea48b6) (cherry picked from commit dcfe5a3f8929a11fd8d89b3b34449e1894bb2a3b) Change-Id: I205186cde161af9389af513a425c62ce90dd54d8
* commit 1b774808c926665047bf353222ecd191679a95d1Lele Gaifax2018-12-301-1/+1
| | | | | | | | | | | | | | | | | Author: Lele Gaifax <lele@metapensiero.it> Date: Tue Dec 25 12:35:41 2018 +0100 Consistently use "PostgreSQL", fixing also a few doc glitches commit 0e382aaee4427193926f0dc10ad29056bc12c85e Author: Lele Gaifax <lele@metapensiero.it> Date: Tue Dec 25 12:08:49 2018 +0100 Remove duplicated words Change-Id: Iaa586b9412f46a50fe6ff3bbb92e07d6cb1905c8 (cherry picked from commit c0f9708fde39175c8695fdd87873464f516fdf98) (cherry picked from commit 7ec092063a7defe2b60d8f01b2eb3cda9dd28c90)
* Don't call rollback on DBAPI connection that's "closed"Mike Bayer2018-10-141-0/+6
| | | | | | | | | | | Use the existence of ConnectionRecord.connection to estimate that this connection is likely closed, and if so, don't try to call "rollback" on it. This rollback is normally harmless but is causing segfaults in mysqlclient due to https://github.com/PyMySQL/mysqlclient-python/issues/270. Change-Id: I1d7c5f5a520527d8268b6334795c2051f7ceeea6 (cherry picked from commit a8781b51b4039eee56791b9dbfdee183f7a5b797)
* MariaDB 10.3 updatesMike Bayer2018-08-301-2/+2
| | | | | | | | | | MariaDB seems to handle some additional UPDATE/DELETE FROM syntaxes as well as some forms of INTERSECT and EXCEPT. Open up tests that expect failure for MySQL to allow success for MariaDB 10.3. Change-Id: Ia9341a82485ef7201bb8130d8dbf4a9b6976035a (cherry picked from commit 081d4275cf5c3e6842c8e0198542ff89617eaa96)
* happy new yearMike Bayer2018-01-1218-18/+18
| | | | | Change-Id: I3ef36bfd0cb0ba62b3123c8cf92370a43156cf8f (cherry picked from commit 699272e4dcb9aa71ebbc0d9487fb6de82d3abc2b)
* Remove deprecation warnings mysql5 7 20Daniel Thorell2017-10-231-4/+12
| | | | | | | | | | | | | | | MySQL 5.7.20 now warns for use of the @tx_isolation variable; a version check is now performed and uses @transaction_isolation instead to prevent this warning. For 1.1, also backport our_warn() test fixture fix from 9f0fb6c601 1.2 branch. (cherry picked from commit 41cfe44b5e5806b3d3b13949e41dbb347bfa29e1) Co-authored by: Mike Bayer <mike_mp@zzzcomputing.com> Fixes: #4120 Pull-request: https://github.com/zzzeek/sqlalchemy/pull/391 Change-Id: I4d2e04df760c5351a71dde8b32145cdc69fa6115
* Take schema name into account when querying sqlite_masterMike Bayer2017-09-292-0/+50
| | | | | | | | | | | | Fixed bug where SQLite CHECK constraint reflection would fail if the referenced table were in a remote schema, e.g. on SQLite a remote database referred to by ATTACH. Also add suite support for general CHECK constraint reflection. Change-Id: I073a72cb47dc4f8c5683000d708768523759332f Fixes: #4099 (cherry picked from commit 68b52c48b775f9a99d0bc3666ebe02c54e401303)
* - sanitize class names for junit reportingMike Bayer2017-08-241-1/+8
| | | | | Change-Id: I42821d8324208b708adc17a10b1a2758797cb9db (cherry picked from commit a61ff195b5687b32828e1bc4d958c5cd87e94ff0)
* Restore original test namesMike Bayer2017-08-241-4/+3
| | | | | | | | | | | | The change in de1f8f8345ecd6af0ec1177703465e9471cfe862 modified how test classes are named, breaking logic that extracts the class name for the profiling suite. Add a new variable _sa_orig_cls_name if we've modified the name so that the profiling logic doesn't need to guess the original class name. Change-Id: Ica15a97408b9e0749a78c87f62749c15c1627009 (cherry picked from commit bb9d511e52ee5ab3621d8595328ee2400242461a)
* Allow multiple versions of single backendMike Bayer2017-08-243-9/+17
| | | | | | | | | | | Improve screen output to illustrate which server version is running for a particular database config, and additionally allow full overriding for the backend-specific targets in tox.ini via environment variables, so that CI can inject multiple server urls for a particular database such as MySQL/MariaDB. Change-Id: Ibf443bb9fb82e4563efd1bb66058fa9989aa2fda (cherry picked from commit de1f8f8345ecd6af0ec1177703465e9471cfe862)
* - allow a separate template database to be used forMike Bayer2017-08-222-5/+19
| | | | | | | | | PG CREATE DATABASE. as nobody will connect to it that would solve the contention issue here - backport --nomemory since tox.ini is using it Change-Id: I00a4d52091876e120faff4a8a5493c53280d96f1 (cherry picked from commit 4c306818396c8cc98a16a14c5ed3361cf6ff373a)
* - repair --dbsMike Bayer2017-08-222-1/+21
| | | | | Change-Id: I69e39d2368f50b126c369ecc35e01799fd013254 (cherry picked from commit 3fc6f32ddc5fbbf439acff42c2fdae9e910154be)
* - still supporting py2.6 in 1.1 (!)Mike Bayer2017-08-221-1/+1
| | | | Change-Id: Iaaababf83b9c3a6e4dc784fc9807bed01c90b69b
* - simplify and see if it still worksMike Bayer2017-08-211-23/+6
| | | | | Change-Id: Id0cf7ae2223507d413aaa22e5f8df066b7ac2b46 (cherry picked from commit fe5eede555973044aceda038e28a190ebb483579)
* merge PG fixes from masterMike Bayer2017-08-211-2/+22
| | | | Change-Id: I5630eb8ba503c567bebddd10f6e525ceb3dd5998
* - filter out non-oracle URLsMike Bayer2017-08-211-0/+2
| | | | | Change-Id: I475f744f8801bc923d738e466d208d662e707413 (cherry picked from commit 97e455f21b513936b7afda760c2ab0f3c04a12fd)
* - a few mysql fixes, more to comeMike Bayer2017-08-211-3/+4
| | | | | Change-Id: Icdcc8ed03374251b8d3815ae58e2726ea27c14b4 (cherry picked from commit 64032a35ae3dbed0bd5bbdf4d07b3f0094684f87)
* - rework oracle de-provisioning to write URLs to the file as well,Mike Bayer2017-08-213-33/+47
| | | | | | | supporting custom dburi etc. Change-Id: Ic0ab0b3b4223e40fd335ee3313fda4dfce942100 (cherry picked from commit cc741e1ac7fce9ce7117b4855d56e38749c04868)
* - add some logging for the provisioningMike Bayer2017-08-211-0/+2
| | | | | Change-Id: I1ac16bc77642f4f576195ac10443ed8e641e0d49 (cherry picked from commit 00309662008b8c4a66f3e008d417ff836c91004b)
* - correct server side cursor assertion for driver namesMike Bayer2017-08-191-5/+5
| | | | | Change-Id: Id8156f6af15a36f7d5653dff56f68e81431692a6 (cherry picked from commit ecdd922d9627c60058833fbcc2c8c2bc06d7332b)
* Ensure we check for boolean condition when we inspect __exit__()Mike Bayer2017-07-241-1/+1
| | | | | | | | | Fixed issue in testing fixtures which was incompatible with a change made as of Python 3.6.2 involving context managers. Change-Id: I0f12aa6cc15cba89153f7e4888ac347e7ce599c7 Fixes: #4034 (cherry picked from commit 7d4005156b5a48989dae7c4424faafc03cc8410d)
* Add safe_reraise() + warnings only to Connection._autorollbackMike Bayer2017-03-271-4/+5
| | | | | | | | | | | | | Added an exception handler that will warn for the "cause" exception on Py2K when the "autorollback" feature of :class:`.Connection` itself raises an exception. In Py3K, the two exceptions are naturally reported by the interpreter as one occurring during the handling of the other. This is continuing with the series of changes for rollback failure handling that were last visited as part of :ticket:`2696` in 1.0.12. Change-Id: I600ba455a14ebaea27c6189889181f97c632f179 Fixes: #3946 (cherry picked from commit c0a224aba3d4e2a41f92a29f9d18c6cb9d09d61f)
* Use config.db global opts as defaults for all testing_engine()Mike Bayer2017-03-221-0/+3
| | | | | | | | | | | Some options need to be passed to engines in all cases, such as currently the oracle 12516 workaround. make sure calls to testing_engine also set up the dictionary with defaults even if options is passed. not clear if this affects other backends yet. Change-Id: I5a1f7634e4ce5af6fe55dc21a24db6afacd19bb7 (cherry picked from commit 28edc2604a96d5ecd8318232c95a034433aa07d1)
* Repair _execute_scalar for WITH_UNICODE modeMike Bayer2017-03-131-0/+6
| | | | | | | | | | | | | | | | | cx_Oracle 5.3 seems to code this flag ON now, so remove the warning and ensure WITH_UNICODE handling works. Additionally, the XE setup on jenkins is having more problems here, in particular low-connections mode is causing cx_Oracle to fail more frequently now. Turning off low-connections fixes those but then we get the TNS errors, so adding an emergency "retry" flag that is not yet a feature available to users. Real world applications are not dropping/creating thousands of tables the way our test suite is. Change-Id: Ie95b0e697276c404d3264c2e624e870463d966d6 Fixes: #3937
* Support python3.6Mike Bayer2017-01-131-0/+7
| | | | | | | | | | | Corrects some warnings and adds tox config. Adds DeprecationWarning to the error category. Large sweep for string literals w/ backslashes as this is common in docstrings Co-authored-by: Andrii Soldatenko Fixes: #3886 Change-Id: Ia7c838dfbbe70b262622ed0803d581edc736e085 Pull-request: https://github.com/zzzeek/sqlalchemy/pull/337
* update for 2017 copyrightMike Bayer2017-01-0418-18/+18
| | | | Change-Id: I4e8c2aa8fe817bb2af8707410fa0201f938781de
* Don't select lastrowid for inline=TrueMike Bayer2016-12-211-0/+50
| | | | | | | | | | | - Fixed bug where SQL Server dialects would attempt to select the last row identity for an INSERT from SELECT, failing in the case when the SELECT has no rows. For such a statement, the inline flag is set to True indicating no last primary key should be fetched. Change-Id: Ic40d56d9eadadc3024a4d71245f9eed4c420024a Fixes: #3876
* Ensure Variant passes along impl right-hand typeMike Bayer2016-11-221-6/+53
| | | | | | | | | | | | | | | | | | | Fixed issue in :class:`.Variant` where the "right hand coercion" logic, inherited from :class:`.TypeDecorator`, would coerce the right-hand side into the :class:`.Variant` itself, rather than what the default type for the :class:`.Variant` would do. In the case of :class:`.Variant`, we want the type to act mostly like the base type so the default logic of :class:`.TypeDecorator` is now overridden to fall back to the underlying wrapped type's logic. Is mostly relevant for JSON at the moment. This patch additionally adds documentation and basic tests to allow for backend-agnostic comparison of JSON index elements to other objects. A future version should attempt to improve upon this by providing "astext", "asint" types of operators. Change-Id: I7b7b45d604a4ae8d1dc236a5a1248695aab5232e Fixes: #3859
* Port lower case quoted name fix to firebirdMike Bayer2016-11-161-1/+39
| | | | | | | | | | | | | | Ported the fix for Oracle quoted-lowercase names to Firebird, so that a table name that is quoted as lower case can be reflected properly including when the table name comes from the get_table_names() inspection function. Also genericize the test to the test suite for denormlized name dialects. Fixes: #3548 Change-Id: I8ca62e8d2b359e363ccb01cfe2daa0995354a3cb
* Add support for server side cursors to mysqldb and pymysqlRoman Podoliaka2016-11-102-1/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows to skip buffering of the results on the client side, e.g. the following snippet: table = sa.Table( 'testtbl', sa.MetaData(), sa.Column('id', sa.Integer, primary_key=True), sa.Column('a', sa.Integer), sa.Column('b', sa.String(512)) ) table.create(eng, checkfirst=True) with eng.connect() as conn: result = conn.execute(table.select().limit(1)).fetchone() if result is None: for _ in range(1000): conn.execute( table.insert(), [{'a': random.randint(1, 100000), 'b': ''.join(random.choice(string.ascii_letters) for _ in range(100))} for _ in range(1000)] ) with eng.connect() as conn: for row in conn.execution_options(stream_results=True).execute(table.select()): pass now uses ~23 MB of memory instead of ~327 MB on CPython 3.5.2 and PyMySQL 0.7.9. psycopg2 implementation and execution options (stream_results, server_side_cursors) are reused. Change-Id: I4dc23ce3094f027bdff51b896b050361991c62e2
* spelling: Postgresql -> PostgreSQLVille Skyttä2016-10-082-3/+3
|
* Additions to support HAAlchemy pluginMike Bayer2016-09-164-8/+56
| | | | | | | | | | | | | | | | | | | - add a connect=True key to connection record to support pre-loading of _ConnectionRecord objects - ensure _ConnectionRecord.close() leaves the record in a good state for reopening - add _ConnectionRecord.record_info for persistent storage - add "in_use" accessor based on fairy_ref being present or not - allow for the exclusions system and SuiteRequirements to be usable without the full plugin_base setup. - move some Python-env requirements to the importable requirements.py module. - allow starttime to be queried - add additional events for engine plugins - have "dialect" be a first-class parameter to the pool, ensure the engine strategy supplies it up front Change-Id: Ibf549f7a1766e49d335cd6f5e26bacfaef9a8229
* Repair clauselist comparison to account for clause orderingMike Bayer2016-09-022-1/+9
| | | | | | | | | | | | | | | | Fixed bug where the "simple many-to-one" condition that allows lazy loading to use get() from identity map would fail to be invoked if the primaryjoin of the relationship had multiple clauses separated by AND which were not in the same order as that of the primary key columns being compared in each clause. This ordering difference occurs for a composite foreign key where the table-bound columns on the referencing side were not in the same order in the .c collection as the primary key columns on the referenced side....which in turn occurs a lot if one is using declarative mixins and/or declared_attr to set up columns. Change-Id: I66cce74f614c04ed693dc0d58ac8c952b2f8ae54 Fixes: #3788
* Build string/int processors for JSONIndexType, JSONPathTypeMike Bayer2016-08-041-4/+8
| | | | | | | | | | | | Fixed regression in JSON datatypes where the "literal processor" for a JSON index value, that needs to take effect for example within DDL, would not be invoked for the value. The native String and Integer datatypes are now called upon from within the JSONIndexType and JSONPathType. This is applied to the generic, Postgresql, and MySQL JSON types. Change-Id: Ifa5f2acfeee57a79d01d7fc85d265a37bd27c716 Fixes: #3765
* - MySQL's JSON shared implementation completely w/ sqltypes.JSON;Mike Bayer2016-07-241-2/+2
| | | | | | | | | | this must have been an oversight. Leave mysql.JSON in place still as we might need to add things to it. - CAST(json, String) still confusing MySQL drivers even mysqlclient. Since here we're checking for the raw form of the JSON and not a typical round trip, add a force for unicode Change-Id: I727f4526a01a0875037cf0dede45cd074da5205a
* - missing test_needs_fk for this test, fixes mysql failureMike Bayer2016-06-031-0/+1
| | | | Change-Id: I2dc6961f9b692a8bb6bfb2296d159df145dec679
* Ensure 'options' is always present in foreign key infoMike Bayer2016-06-032-0/+55
| | | | | | | | | Regarding 0e88bcc30ed49193b91f248123f526fa30007f22, "options" needs to be present as a key in the dictionary because Alembic uses this as a guide to know if the backend is even capable of reporting on foreign key options. Change-Id: I271090f75088cfeec24315a878060f9b8a265335
* - limit oracle DB reaps to identifiers generated from thisMike Bayer2016-06-023-4/+20
| | | | | | run to prevent race conditions against concurrent runs Change-Id: I065d1cec346ea7af03792c3cc2f30766f73c2bd3
* - don't raise for stray gc connection. this just happensMike Bayer2016-06-021-2/+3
| | | | | | | sometimes and it really breaks the build once this error occurs. Change-Id: I577c78d623b22a6429f8b083fe08821bc467eb7a
* Let logging format messages on demand, use warning instead of deprecated warnpr/265Ville Skyttä2016-05-031-2/+2
|
* - ensure engine is restored even if we had a failure in cleanupMike Bayer2016-03-151-3/+5
| | | | for stray connection
* - not sure why MySQL DROP DBs fail but we can't just ignore the errorMike Bayer2016-03-031-12/+3
| | | | like this
* - handle parameter sets that aren't correctly formed, so thatMike Bayer2016-02-172-1/+5
| | | | | for example an exception object made within a test suite can still repr (error seen in Keystone)
* - CTE functionality has been expanded to support all DML, allowingMike Bayer2016-02-111-0/+2
| | | | | | | INSERT, UPDATE, and DELETE statements to both specify their own WITH clause, as well as for these statements themselves to be CTE expressions when they include a RETURNING clause. fixes #2551
* - don't drop the ts1/ts2 databases without seeing the primary DB,Mike Bayer2016-02-091-6/+21
| | | | | because we never log in on the ts1/ts2. races against other runs and erases their DBs