Commit Graph

2912 Commits

Author SHA1 Message Date
Tim Graham 4e65f195e1 Removed django.db.models.loading per deprecation timeline. 2015-01-17 08:40:59 -05:00
Tim Graham 9ce36512fa Removed backwards compatibility shims for "util" modules per deprecation timeline.
refs #17627.
2015-01-17 07:40:12 -05:00
Tim Graham d79a30ba3f Removed fallback suport for allow_syncdb() in database routers per deprecation timeline. 2015-01-17 07:39:46 -05:00
Marc Tamlyn 39d95fb6ad Fixed #24092 -- Widened base field support for ArrayField.
Several issues resolved here, following from a report that a base_field
of GenericIpAddressField was failing.

We were using get_prep_value instead of get_db_prep_value in ArrayField
which was bypassing any extra modifications to the value being made in
the base field's get_db_prep_value. Changing this broke datetime
support, so the postgres backend has gained the relevant operation
methods to send dates/times/datetimes directly to the db backend instead
of casting them to strings. Similarly, a new database feature has been
added allowing the uuid to be passed directly to the backend, as we do
with timedeltas.

On the other side, psycopg2 expects an Inet() instance for IP address
fields, so we add a value_to_db_ipaddress method to wrap the strings on
postgres. We also have to manually add a database adapter to psycopg2,
as we do not wish to use the built in adapter which would turn
everything into Inet() instances.

Thanks to smclenithan for the report.
2015-01-16 16:15:16 -05:00
Collin Anderson e8171daf0c Fixed #24146 -- Fixed a missing fields regression in admin checks.
This allows using get_field() early in the app loading process.

Thanks to PirosB3 and Tim Graham.
2015-01-16 14:47:09 -05:00
Tim Graham 28db4af80a Fixed #24135 -- Made RenameModel rename many-to-many tables.
Thanks Simon and Markus for reviews.
2015-01-15 20:34:33 -05:00
Simon Charette 47bdad4e6b Replaced inner functions by class methods.
refs #24031

Thanks to Tim Graham and Michał Modzelewski for the review.
2015-01-15 13:03:34 -05:00
Claude Paroz 67bcae1e58 Moved check_aggregate_support to BaseSpatialOperations 2015-01-14 22:03:41 +01:00
Collin Anderson 2d5da57f48 Fixed incorrect error message in Options.get_fields() 2015-01-14 14:51:05 -05:00
Tim Graham 28308078f3 Fixed #22603 -- Reorganized classes in django.db.backends. 2015-01-14 14:16:20 -05:00
Markus Holtermann 737d24923a Fixed #24075 -- Prevented running post_migrate signals when unapplying initial migrations of contenttypes and auth
Thanks Florian Apolloner for the report and Claude Paroz and Tim Graham for the review and help on the patch.
2015-01-14 19:59:39 +01:00
Markus Holtermann 88786afbff Fixed #24147 -- Prevented managers leaking model during migrations
Thanks Tim Graham for the review.
2015-01-14 16:09:33 +01:00
Michał Modzelewski 65246de7b1 Fixed #24031 -- Added CASE expressions to the ORM. 2015-01-12 18:15:34 -05:00
Shai Berger aa8ee6a573 Fixed test failures in Oracle introspection
Refs #17785
2015-01-13 01:00:09 +02:00
Josh Smeaton 21b858cb67 Fixed #24060 -- Added OrderBy Expressions 2015-01-13 09:39:55 +11:00
Claude Paroz 4c413e231c Fixed #17785 -- Preferred column names in get_relations introspection
Thanks Thomas Güttler for the report and the initial patch, and
Tim Graham for the review.
2015-01-12 19:58:47 +01:00
Markus Holtermann eeb88123e7 Fixed #24129 -- Added indicator that migrations are rendering the initial state
Thanks Tim Graham for the review.
2015-01-12 19:23:46 +01:00
Markus Holtermann bbbed99f62 Fixed #24123 -- Used all available migrations to generate the initial migration state
Thanks Collin Anderson for the input when creating the patch and Tim Graham for the review.
2015-01-12 18:39:18 +01:00
Pavel Shpilev a7c256cb54 Fixed #9893 -- Allowed using a field's max_length in the Storage. 2015-01-12 09:09:18 -05:00
Claude Paroz 68a439a18d Removed supports_binary_field flag as all backends support them
It was mainly for MySQL on Python 3, but now the current
recommended MySQL driver for Python 3 (mysqlclient) does support
binary fields, it is unneeded. Refs #20377.
2015-01-11 23:34:47 +01:00
Markus Holtermann be158e3625 Refs #24110 -- Added a more descriptive release note and fixed a spelling mistake. 2015-01-11 00:30:47 +01:00
Markus Holtermann fdc2cc9487 Fixed #24110 -- Rewrote migration unapply to preserve intermediate states 2015-01-10 23:14:15 +01:00
Marc Tamlyn 916e38802f Move % addition to lookups, refactor postgres lookups.
These refactorings making overriding some text based lookup names on
other fields (specifically `contains`) much cleaner. It also removes a
bunch of duplication in the contrib.postgres lookups.
2015-01-10 16:18:19 +00:00
Claude Paroz 7289d01973 Introspected alternate SQLite FK definitions 2015-01-10 16:51:14 +01:00
Loic Bistuer 8f4877c89d Fixed #22583 -- Allowed RunPython and RunSQL to provide hints to the db router.
Thanks Markus Holtermann and Tim Graham for the review.
2015-01-10 00:30:48 +07:00
Markus Holtermann c8bac4b556 Fixed #24098 -- Added no-op attributes to RunPython and RunSQL
Thanks Loïc Bistuer and Tim Graham for the discussion and review.
2015-01-09 10:31:32 -05:00
Anssi Kääriäinen 0c7633178f Fixed #24020 -- Refactored SQL compiler to use expressions
Refactored compiler SELECT, GROUP BY and ORDER BY generation.
While there, also refactored select_related() implementation
(get_cached_row() and get_klass_info() are now gone!).

Made get_db_converters() method work on expressions instead of
internal_type. This allows the backend converters to target
specific expressions if need be.

Added query.context, this can be used to set per-query state.

Also changed the signature of database converters. They now accept
context as an argument.
2015-01-08 14:07:54 -05:00
Claude Paroz de4bfb3fad Simplified verbose_name_raw property 2015-01-08 15:08:26 +01:00
Markus Holtermann 862ea825b5 Fixed #24093 -- Prevented MigrationWriter to write operation kwargs that are not explicitly deconstructed 2015-01-07 17:29:20 -07:00
Josh Smeaton 8713ea7568 Fixed null handling in Value expression 2015-01-07 19:07:49 -05:00
Markus Holtermann 1f03d2d924 Refs #23822 -- Made MigrationOptimizer aware of model managers 2015-01-07 17:33:04 -05:00
Markus Holtermann 12bf42ae0d Refs #22608 -- Optimized migration optimizer
Moved list constants instantiation into optimizer's __init__.
2015-01-07 08:54:46 -05:00
Ulrich Petri 391bb09bb0 Refs #22608 -- Optimized migration optimizer and migrate by caching calls to str.lower() 2015-01-07 08:54:46 -05:00
Michał Modzelewski ee86e59051 Refs #2443 -- Allowed creation of objects with NULL DurationFields 2015-01-07 08:33:26 -05:00
Josh Smeaton 5a4ac4ead9 Fixed #24078 -- Removed empty strings from GenericIPAddressField 2015-01-07 08:08:36 -05:00
Daniel Pyrathon fb48eb0581 Fixed #12663 -- Formalized the Model._meta API for retrieving fields.
Thanks to Russell Keith-Magee for mentoring this Google Summer of
Code 2014 project and everyone else who helped with the patch!
2015-01-06 19:25:12 -05:00
Tim Graham c87ee41954 Fixed #23861 -- Added an API to deprecate model fields.
Thanks Markus Holterman and Berker Peksag for review.
2015-01-05 11:35:36 -05:00
Markus Holtermann 05f702b94c Renamed flag for detecting managers built from QuerySets with as_manager(). 2015-01-05 10:30:15 -05:00
Daniel Pyrathon 8958170755 Fixed #9104 -- Moved FieldDoesNotExist to core.exceptions 2015-01-02 10:46:04 -05:00
Claude Paroz 1aa3e09c20 Fixed #23745 -- Reused states as much as possible in migrations
Thanks Tim Graham and Markus Holtermann for the reviews.
2015-01-02 15:37:10 +01:00
Claude Paroz 2a9c4b4901 Passed around the state between migrations
Refs #23745.
2015-01-02 15:37:10 +01:00
Markus Holtermann 057305e588 Added ignore_swappable to StateApps
Refs #23745.
2015-01-02 15:37:09 +01:00
Claude Paroz a159b1facd Replaced migration state render() by apps cached property
Refs #23745.
2015-01-02 15:19:36 +01:00
Tim Graham 40a8504357 Fixed #23891 -- Moved deprecation of IPAddressField to system check framework.
Thanks Markus Holtermann for review.
2015-01-01 13:30:52 -05:00
Piotr Pawlaczek 41fc1c0b5e Fixed #23758 -- Allowed more than 5 levels of subqueries
Refactored bump_prefix() to avoid infinite loop and allow more than
than 5 subquires by extending the alphabet to use multi-letters.
2014-12-31 08:48:28 -05:00
Tim Graham 478d6a9503 Copied BaseDatabaseCreation._digest() to SchemaEditor to remove dependency.
refs #22340.
2014-12-31 08:33:34 -05:00
Tim Graham 93d73dac91 Moved DatabaseCreation.data_types properties to DatabaseWrapper.
refs #22340.
2014-12-31 08:29:17 -05:00
Russell Keith-Magee 013c2d8d02 Renamed variables to avoid name collision with import of django.db.models. 2014-12-31 13:21:32 +08:00
Tim Graham 8082c75d18 Removed db.backends methods which only call super(). 2014-12-30 11:53:59 -05:00
Andriy Sokolovskiy 8c99b7920e Fixed #12118 -- Added shared cache support to SQLite in-memory testing. 2014-12-30 10:14:33 -05:00
Tim Graham ab4f709da4 Fixed #23581 -- Prevented extraneous DROP DEFAULT statements.
Thanks john_scott for the report and Markus Holtermann for review.
2014-12-30 07:54:05 -05:00
Markus Holtermann 623ccdd598 Fixed #23938 -- Added migration support for m2m to concrete fields and vice versa
Thanks to Michael D. Hoyle for the report and Tim Graham for the review.
2014-12-29 13:41:12 -05:00
Claude Paroz 3c5d1edb39 Fixed #22279 -- Prevented dummy backend going through DatabaseErrorWrapper
Thanks Daniel Hahler for the report and Tim Graham for the review.
2014-12-29 19:06:28 +01:00
Claude Paroz 1d24f073e6 Fixed #21255 -- Closed connections after management command ran
Thanks kabakov.as@gmail.com for the report, and Aymeric Augustin,
Simon Charette for the reviews.
2014-12-29 19:02:45 +01:00
Josh Smeaton 1cdfbde4db Fixed #23753 -- Oracle failure with Coalesce 2014-12-29 19:44:13 +11:00
Claude Paroz 2ceb10f3b0 Fixed #14180 -- Prevented unneeded index creation on MySQL-InnoDB
Thanks zimnyx for the report and Simon Charette, Tim Graham for
the reviews.
2014-12-27 12:52:44 +01:00
Josh Smeaton 4718296546 Fixed #23753 -- Added a suite of SQL Functions
Added functions and tests
Added docs and more tests
Added TextField converter to mysql backend
Aliased Value as V in example docs and tests
Removed unicode_compatible in example
Fixed console emulation in examples
2014-12-27 15:27:27 +11:00
Claude Paroz 234a2e0b6b Fixed #23866 -- Harmonized refs to Django documentation from code 2014-12-25 13:53:13 +01:00
Niclas Olofsson 3daa9d60be Fixed #10414 -- Made select_related() fail on invalid field names. 2014-12-24 14:54:30 -05:00
Tim Graham 061caa5b38 Fixed #24037 -- Prevented data loss possibility when changing Meta.managed.
The migrations autodetector now issues AlterModelOptions operations for
Meta.managed changes instead of DeleteModel + CreateModel.

Thanks iambibhas for the report and Simon and Markus for review.
2014-12-23 14:25:31 -05:00
Tim Graham 69ee7c8d76 Removed models.Field.bind() -- unused/undocumented since at least 1.0. 2014-12-23 14:23:58 -05:00
Claude Paroz 30cbd5d360 Replaced DatabaseCreation sql methods by schema editor equivalents
Also used schema editor in migrate to sync unmigrated apps (sync_apps).
Refs #22340. Thanks Tim Graham for the review.
2014-12-23 19:35:01 +01:00
Anssi Kääriäinen f233bf47dd Fixed #21414 -- Removed RelatedObject and deprecated Field.related. 2014-12-23 10:54:25 -05:00
Anssi Kääriäinen 227a4c48be Refs #2443 -- fixed format_dtdelta on SQLite
A test failed on Python 2 32-bit.
2014-12-23 07:05:44 -05:00
Marc Tamlyn 962bb9b6bd Refs #2443 -- Move the durationfield converter logic.
This reduces how frequently this logic is run significantly.

Thanks to Anssi for the suggestion.
2014-12-23 10:41:42 +00:00
Marc Tamlyn 5ca82e710e Fixed #24033 -- Use interval type on Oracle.
Use INTERVAL DAY(9) TO SECOND(6) for Durationfield on Oracle rather than
storing as a NUMBER(19) of microseconds.

There are issues with cx_Oracle which require some extra data
manipulation in the database backend when constructing queries, but it
handles the conversion back to timedelta objects cleanly.

Thanks to Shai for the review.
2014-12-23 10:38:32 +00:00
Oscar Ramirez 54085b0f9b Fixed #23998 -- Added datetime.time support to migrations questioner. 2014-12-22 07:24:54 -05:00
Josh Schneier 9a23470072 Fixed #24017 -- Added python_2_unicode_compatible in db/migrations 2014-12-21 16:10:43 -05:00
Marc Tamlyn 07728a2c2c Refs #2443 -- Fix Oracle tests for DurationField.
It helps if there are the correct number of microseconds in a second.
2014-12-20 22:04:07 +00:00
Marc Tamlyn 57554442fe Fixed #2443 -- Added DurationField.
A field for storing periods of time - modeled in Python by timedelta. It
is stored in the native interval data type on PostgreSQL and as a bigint
of microseconds on other backends.

Also includes significant changes to the internals of time related maths
in expressions, including the removal of DateModifierNode.

Thanks to Tim and Josh in particular for reviews.
2014-12-20 18:28:29 +00:00
Anssi Kääriäinen 4a2a433e7d Refs #24020 -- return expressions from get_group_by_cols() 2014-12-18 06:01:07 -07:00
Claude Paroz 108b8bf852 Fixed #24007 -- Ensure apps registry's ready before unpickling models
This prevents AppRegistryNotReady errors when unpickling Django
models from an external script.
2014-12-17 18:33:32 +01:00
Andriy Sokolovskiy 3dbbb8a89c Fixed #23983 -- Fixed a crash in migrations when adding order_with_respect_to to non-empty table. 2014-12-16 10:48:49 -05:00
Andriy Sokolovskiy d8f3b86a76 Fixed #23405 -- Fixed makemigrations prompt when adding Text/CharField.
A default is no longer required.
2014-12-15 14:41:52 -05:00
Andriy Sokolovskiy 089047331d Fixed #23987 -- Made SQLite SchemaEditor always use effective_default(). 2014-12-15 13:40:24 -05:00
Markus Holtermann aa5ef0d4fc Fixed #23822 -- Added support for serializing model managers in migration
Thanks to Shai Berger, Loïc Bistuer, Simon Charette, Andrew Godwin,
Tim Graham, Carl Meyer, and others for their review and input.
2014-12-15 08:34:15 -05:00
Markus Holtermann e37ab311fc Changed internal storing of abstract and concrete managers to be in a single list.
This commit prepares the internal manager layout to be serialized by
migrations; refs #23822.
2014-12-15 08:32:47 -05:00
Shai Berger 7c1f3901bc Fixed #23991 -- Apparently, Oracle doesn't need the decimal field converter
Thanks Josh Smeaton for review.
2014-12-15 00:07:10 +02:00
Michael Hall 895dc880eb Fixed #23812 -- Changed django.utils.six.moves.xrange imports to range 2014-12-13 12:45:58 -05:00
Carl Meyer c72eb80d11 Fixed #23455 -- Accept either bytes or text for related_name, convert to text. 2014-12-12 12:50:39 -07:00
Carl Meyer 8aaf51f94c Revert "Fixed #23455 -- Forced related_name to be a unicode string during deconstruction."
This reverts commit 45bd7b3bd9.
2014-12-12 12:50:39 -07:00
Claude Paroz df30ae07fc Fixed postgis test database initialization
Refs #20968. Allow querying template_postgis presence without
existing test database.
Thanks Tim Graham for the review.
2014-12-12 20:08:07 +01:00
Josh Smeaton 267a1dcd9b Fixed #23941 -- Removed implicit decimal formatting from expressions. 2014-12-12 10:17:48 -05:00
Markus Holtermann 44927ba817 Fixed #23956 -- Fixed migration creation for multiple table inheritance 2014-12-11 13:28:21 -05:00
Marc Tamlyn 6b2d3f9206 Remove text-mangling of default values. 2014-12-09 09:10:51 +00:00
Claude Paroz 8f97413fae Fixed #20968 -- Checked Spatialite metadata before migrations
Thanks Kenial S. Lee for the initial patch and Tim Graham for
the review.
2014-12-08 22:22:53 +01:00
Jon Dufresne 4468c08d70 Fixed #23968 -- Replaced list comprehension with generators and dict comprehension 2014-12-08 07:58:23 -05:00
Claude Paroz 8d7a48027e Fixed #23954 -- Added special text/varchar PostgreSQL indexes in migrations
Thanks adityagupta104 for the report and Tim Graham for the review.
2014-12-04 21:27:42 +01:00
Tim Graham 765fa36d57 Fixed #23920 -- Fixed MySQL crash when adding blank=True to TextField.
Thanks wkornewald for the report and Markus Holtermann for review.
2014-12-04 10:57:10 -05:00
Gavin Wahl dee4d23f7e Fixed #23950 -- Prevented calling deconstruct on classes in MigrationWriter. 2014-12-03 08:22:29 -05:00
Andriy Sokolovskiy 1739ae9edc Fixed #23807 -- Ignored non-digits in psycopg2 version 2014-12-01 18:42:08 -05:00
Claude Paroz e11c6fd218 Fixed #23909 -- Prevented crash when collecting SQL for RunSQL
Thanks James Rivett-Carnac for the report and Markus Holtermann
for the review.
2014-12-01 20:26:40 +01:00
Markus Holtermann d2202ec2d4 Fixed #23880 -- Added missing index_together handling for SQLite 2014-12-01 11:30:33 +07:00
Shai Berger 88edce2abb Restored the 'TEST_' prefix in the warning about deprecated test database settings 2014-12-01 02:12:19 +02:00
Anssi Kääriäinen ab89414f40 Fixed #23853 -- Added Join class to replace JoinInfo
Also removed Query.join_map. This structure was used to speed up join
reuse calculation. Initial benchmarking shows that this isn't actually
needed. If there are use cases where the removal has real-world
performance implications, it should be relatively straightforward to
reintroduce it as map {alias: [Join-like objects]}.
2014-11-28 07:30:26 -05:00
Anssi Kääriäinen c7175fcdfe Fixed #901 -- Added Model.refresh_from_db() method
Thanks to github aliases dbrgn, carljm, slurms, dfunckt, and timgraham
for reviews.
2014-11-28 06:54:00 -05:00
Markus Holtermann 912ad03226 Fixed #23894 -- Made deconstruct methods favor kwargs over args 2014-11-28 06:05:56 -05:00
Thomas Chaumeny 6b5d82749c Fixed #16731 -- Made pattern lookups work properly with F() expressions 2014-11-28 12:50:42 +02:00
Diego Guimarães f39b0421b4 Fixed #23338 -- Added warning when unique=True on ForeigKey
Thanks Jonathan Lindén for the initial patch, and Tim Graham
and Gabe Jackson for the suggestions.
2014-11-27 19:42:30 -05:00
Anssi Kääriäinen bd337184f1 Fixed #23877 -- aggregation's subquery missed target col
Aggregation over subquery produced syntactically incorrect queries in
some cases as Django didn't ensure that source expressions of the
aggregation were present in the subquery.
2014-11-27 06:50:08 -05:00
Anssi Kääriäinen c7fd9b242d Fixed #23875 -- cleaned up query.get_count() 2014-11-27 06:26:53 -05:00
MattBlack85 e9d1f1182a Fixed #23801 -- Added warning when max_length is used with IntegerField 2014-11-26 18:41:54 -05:00
Anssi Kääriäinen cbb5cdd155 Fixed #23867 -- removed DateQuerySet hacks
The .dates() queries were implemented by using custom Query, QuerySet,
and Compiler classes. Instead implement them by using expressions and
database converters APIs.
2014-11-26 17:49:25 -05:00
Simon Charette 9cebb95348 Adjusted a comment to reflect some app refactor changes. 2014-11-26 09:47:37 -05:00
Luke Plant ff3d746e8d Fixed bug in circular dependency algo for migration dependencies.
Previous algo only worked if the first item was a part of the loop,
and you would get an infinite loop otherwise (see test).

To fix this, it was much easier to do a pre-pass.

A bonus is that you now get an error message that actually helps you debug
the dependency problem.
2014-11-25 15:37:34 +00:00
Carl Meyer bcb693ebd4 Revert "Fixed #23892 -- Made deconstructible classes forwards compatible"
This reverts commit f36151ed16.

Adding kwargs to deconstructed objects does not achieve useful
forward-compatibility in general, since additional arguments are silently
dropped rather than having their intended effect. In fact, it can make the
failure more difficult to diagnose. Thanks Shai Berger for discussion.
2014-11-22 22:29:23 -07:00
Carl Meyer f36151ed16 Fixed #23892 -- Made deconstructible classes forwards compatible 2014-11-22 14:30:14 -07:00
Collin Anderson d4ea4eea79 Fixed #23889 -- Added more usage of quote_name_unless_alias() to avoid deprecation warnings. 2014-11-21 16:44:50 -05:00
Simon Charette c7087bc777 Fixed #23862 -- Made ManyToManyRel.get_related_field() respect to_field. 2014-11-21 16:02:31 -05:00
Andrzej Pragacz 72729f844e Fixed #23794 -- Fixed migrations crash when removing a field that's part of index/unique_together. 2014-11-21 10:55:19 -05:00
Brad Walker cfa26f29bd Reduced reduce() usage; refs #23796.
django.core.exceptions.ValidationError.messages() and
django.db.backends.schema.BaseDatabaseSchemaEditor._alter_field():
Replaced reduce(operator.add, ...) w/uncoupled, explicit sum()
2014-11-20 14:31:14 -05:00
Anssi Kääriäinen 5c481db295 Fixed #23605 -- Fixed nested subquery regression
Added relabeled_clone() method to sql.Query to fix the problem. It
manifested itself in rare cases where at least double nested subquery's
filter condition might target non-existing alias.

Thanks to Trac alias ris for reporting the problem.
2014-11-20 13:38:08 -05:00
Patryk Zawadzki 21e21c7bc2 Fixed #23844 -- Used topological sort for migration operation dependency resolution.
This removes the concept of equality between operations to guarantee
compatilibity with Python 3.

Python 3 requires equality to result in identical object hashes. It's
impossible to implement a unique hash that preserves equality as
operations such as field creation depend on being able to accept
arbitrary dicts that cannot be hashed reliably.

Thanks Klaas van Schelven for the original patch in
13d613f800.
2014-11-20 12:49:49 -05:00
Claude Paroz 1a63093e22 Added AutoField introspection for PostgreSQL
Refs #23748.
2014-11-20 16:13:58 +01:00
Claude Paroz 11662022be Added AutoField introspection for MySQL
Refs #23748.
2014-11-20 16:13:58 +01:00
Carl Meyer d6e2bbe734 Fixed #23876 -- Removed dead code in SQLAggregateCompiler. 2014-11-20 04:18:08 -07:00
Carl Meyer ab2819aa7b Fixed #23410 -- Avoided unnecessary rollbacks in related apps when migrating backwards. 2014-11-19 16:11:44 -07:00
Carl Meyer e7b9a58b08 Fixed #21794 -- Removed deprecation warning for abstract models outside an app. 2014-11-19 15:56:04 -07:00
Tim Graham 5bcd292098 Fixed #23871 -- Removed promotion of MySQL warnings to errors in DEBUG mode. 2014-11-19 16:07:49 -05:00
Stratos Moros cf7a2a000e Fixed #22248 -- Made RenameModel reversible 2014-11-19 14:11:35 +02:00
Carl Meyer 08fbbaa45b Deprecated calling a SQLCompiler instance. 2014-11-18 19:47:16 -07:00
Markus Holtermann 7b4a994599 Fixed #23859 -- Fixed a migration crash when a field is renamed that is part of an index_together 2014-11-17 19:15:07 +01:00
twidi 19ae13d9ed Avoided unneeded calls to state.render() in migrations. 2014-11-17 18:44:09 +01:00
twidi 82aca216e1 Reordered condition to avoid calling allow_migrate() if unneeded. 2014-11-17 18:32:42 +01:00
Anssi Kääriäinen 4252a14c39 Moved bilateral transform fetching to models.lookups 2014-11-17 18:04:08 +01:00
Karen Tracey dec93d8991 Fixed #21612 -- Made QuerySet.update() respect to_field 2014-11-16 15:44:13 +01:00
Josh Smeaton f61256da3a Renamed qn to compiler 2014-11-16 13:19:34 +01:00
Carl Meyer 1ed9b9e2e2 Merge pull request #3536 from Zweedeend/ticket_23837
Fixes #23837: Replace list with deque in migration-planner for improved performance.
2014-11-15 18:56:52 +01:00
Andrew Godwin c5def493d0 Fixed #23835: Changed circular dependency in DFS to be less infinite 2014-11-15 17:39:02 +01:00
Niels Kouwenhoven fefb77934e Fixes #23837: Replace list.pop(0) by deque.popleft() in dfs function in migrations 2014-11-15 16:34:20 +01:00
Tim Graham 83d104d61a Revert "Use topological sort for migration operation dependency resolution"
This commit broke the tests on Python 3.

This reverts commit 13d613f800.
2014-11-15 15:28:04 +01:00
Josh Smeaton f59fd15c49 Fixed #14030 -- Allowed annotations to accept all expressions 2014-11-15 14:00:43 +00:00
Klaas van Schelven 13d613f800 Use topological sort for migration operation dependency resolution
rather than an ad-hoc algorithm
2014-11-15 14:45:42 +01:00
Tim Graham aa77e90aa9 Remove Field.get_validator_unique_lookup_type()
Usage of this method was removed pre 1.0 (c2ba59fc).
2014-11-12 20:11:40 +01:00
Anssi Kääriäinen 4e9a6c94e6 Removed extra enumerate() from Query.setup_joins() 2014-11-12 13:22:08 +02:00
Jozef Knaperek c56c42b5c0 Fixed #22967 -- Made Model._do_update consistent
Made _do_update behave more strictly according to its docs,
including a corner case when specific concurent updates are
executed and select_on_save is set.
2014-11-12 12:53:30 +02:00
Anssi Kääriäinen d647764a53 Improved Query.names_to_path docstring 2014-11-12 12:40:55 +02:00
Anssi Kääriäinen b3fd39f7c8 Simplified Query.build_lookup() 2014-11-11 08:14:29 +02:00
Thomas Chaumeny 88b2a20f04 Simplified MySQL storage engine detection using INFORMATION_SCHEMA.ENGINES table
Query the table introduced in MySQL 5.1; refs #23144.
2014-11-10 18:16:14 +01:00
Markus Holtermann c7c098cf97 Fixed #23770 -- Changed serialization strategy for floats with respect to NaN and Inf
Thanks to w0rp for the report
2014-11-06 15:30:30 +01:00
Veres Lajos a71a2ea756 Fixed typos using https://github.com/vlajos/misspell_fixer 2014-11-03 20:59:30 -05:00
Andy Chosak ceb1ffcc8d Fixed #23420 - broken warning for unbound naive datetime objects
Fixed issue with warning message displayed for unbound naive datetime
objects when USE_TZ is True. Adds unit test that demonstrates the issue
(discoverable when using a custom lookup in MySQL).
2014-11-03 15:51:48 +02:00
Markus Holtermann 715ccfde24 Fixed #23738 -- Allowed migrating from NULL to NOT NULL with the same default value
Thanks to Andrey Antukh for the report.
2014-10-31 13:30:30 -04:00
twidi fd061b6591 Fixed #23733 -- Fixed squashing migrations that depend on multiple apps. 2014-10-30 14:39:11 -04:00
Markus Holtermann 85086c8158 Fixed #23556 -- Raised a more meaningful error message when migrations refer to an unavailable node 2014-10-30 00:17:29 +01:00
Markus Holtermann 5c9c1e029d Fixed #23614 -- Changed the way the migration autodetector orders unique/index_together
Thanks to Naddiseo for the report and Tim Graham for the review
2014-10-29 13:05:42 -04:00
Berker Peksag c9178ef17a Limited lines to 119 characters in django/{contrib,db}.
Refs #23395.
2014-10-29 07:59:35 -04:00
Claude Paroz 713f23492a Required MySQLdb >= 1.2.5 for fractional seconds support
On MySQLdb < 1.2.5, MySQLdb returns None when fetching datetime/time
values with fractional seconds.
See https://github.com/farcepest/MySQLdb1/issues/24
2014-10-28 15:06:58 +01:00
Claude Paroz 22da5f8817 Fixed #19716 -- Added support for microseconds with MySQL 5.6.4 and up
Thanks erik@cederstrand.dk for the report and Tim Graham for the review.
2014-10-28 15:06:58 +01:00
Claude Paroz 9e746c13e8 Stopped stripping microseconds with MySQL backend
Refs #19716.
2014-10-28 15:06:57 +01:00
Collin Anderson ae7cb992bc Fixed #23721 -- check_related_objects without calling __iter__
Refs #14334
2014-10-28 10:13:50 +02:00
Thomas Chaumeny 00aa562884 Fixed #23493 -- Added bilateral attribute to Transform 2014-10-28 10:02:10 +02:00
Claude Paroz 5b8e37a69e Fixed typo in MySQL backend doctring
Thanks CHI Cheng for the report.
2014-10-27 14:01:12 +01:00
Mikhail Denisenko d4bc0bf435 Fixed #22879 -- Intercept errors coming from cursor.__next__() 2014-10-27 14:51:40 +02:00
Claude Paroz 7f089ac2e3 Fixed #23446 -- Officially recommended mysqlclient as MySQL driver
Thanks Corey Farwell for the report and Tim Graham for the review.
Thanks also to Inada Naoki for creating and maintaining mysqlclient.
2014-10-27 09:11:33 +01:00
Claude Paroz 45db842c9b Fixed #23652 -- Restored database name after destroying test database
Thanks Bjarkias for the report.
2014-10-24 17:04:43 +02:00
Claude Paroz e50e0ee27b Fixed #23618 -- Allowed apps with no models to still have migrations
Basically a4737bf6ae reapplied.
2014-10-24 15:10:39 +02:00
Tim Graham 92269b7b53 Fixed #23702 -- Fixed adding an explicit id field on SQLite.
Thanks gavinwahl for the report.
2014-10-23 12:24:34 -04:00
Tim Graham 41b337efa0 Fixed #23630 -- Made AlterModelTable rename auto-created M2M tables.
Thanks Naddiseo for the report, Andrew Godwin for guidance,
and Shai Berger for review.
2014-10-23 08:05:39 -04:00
Gabe Jackson 0e16c3e3cd Fixed #23396 -- Ensured ValueQuerySets are not checked by check_related_objects. 2014-10-21 10:02:51 -04:00
Tianyi Wang 5732424bee Fixed #23629 -- Allowed autodetector to detect changes in Meta.db_table.
Thanks Naddiseo for reporting.
2014-10-20 13:14:44 -04:00
Nicholas Serra 6c79d32977 Fixed #23684 -- Used correct package name for Pillow in Error hint. 2014-10-19 13:46:46 +07:00
Shai Berger 2e1ed5f33c Fixed #23649 -- Made Oracle test-db creation drop test-user earlier when needed
Checked database destruction for ORA-29857, which happens when objects of
some types are left over in an old test database (notably, such objects
are created by the GIS backend). When this happens, we can resolve the
issue by dropping the test-user (if we are allowed to).

An alternative approach, to just switch the order of creation (so that,
if the test user exists and can be dropped, it is always dropped before
the tablespace) was considered; but since the user creation depends on
the tablespace, this would necessitate separating the dropping of the user
from its creation -- a change I am reluctant to make.

Thanks Josh Smeaton and Tim Graham for reviews.
2014-10-17 04:46:15 +03:00
Thomas Chaumeny b962653060 Fixed #23664 -- Provided a consistent definition for OrderedSet.__bool__
This also defines QuerySet.__bool__ for consistency though this should not have any consequence as bool(qs) used to fallback on QuerySet.__len__ in Py3.
2014-10-16 14:16:24 +02:00
Claude Paroz 374c14b7fd Fixed #23659 -- Kept annotate() args ordering
Thanks Loic Bistuer and Simon Charette for the review.
2014-10-16 09:27:20 +02:00
Collin Anderson a6a8268d19 Fixed #23660 -- Moved sort_dependencies to core. 2014-10-16 03:04:13 +07:00
Marc Tamlyn 92a17eaae0 Fixed #23627 -- Allowed register_lookup to work as a decorator. 2014-10-09 18:44:58 +01:00
Markus Holtermann f633ba778d Fixed #23609 -- Fixed IntegrityError that prevented altering a NULL column into a NOT NULL one due to existing rows
Thanks to Simon Charette, Loic Bistuer and Tim Graham for the review.
2014-10-09 21:32:06 +07:00
Artem Rizhov ca61195827 Fixed #23555 -- Avoided suppressing IndexError in QuerySet.first() and .last() 2014-10-08 14:28:38 -04:00
Loic Bistuer ed37f7e979 Fixed #23611 -- update_or_create failing from a related manager
Added update_or_create to RelatedManager, ManyRelatedManager and
GenericRelatedObjectManager.
Added missing get_or_create to GenericRelatedObjectManager.
2014-10-08 03:27:31 +07:00
André Ericson 1e5e2a4707 Fixed #22064 -- Add check for related_name
Validates that related_name is a valid Python id or ends with a '+' and
it's not a keyword. Without a check it passed silently leading to
unpredictable problems.

Thanks Konrad Świat for the initial work.
2014-10-04 20:47:26 -03:00
Markus Holtermann 85f6d89313 Fixed #23426 -- Allowed parameters in migrations.RunSQL
Thanks tchaumeny and Loic for reviews.
2014-10-02 11:52:40 -04:00
Rudy Mutter a407b846b4 Fixed #23365 -- Added support for timezone-aware datetimes to migrations. 2014-09-29 20:45:43 -04:00
Thomas Chaumeny b2aad7b836 Replaced set([foo, ...]) by {foo, ...} literals. Refs PR 3282.
Thanks Collin Anderson for the review.
2014-09-29 00:01:38 +07:00
Shai Berger a54adcecff Fixed git blunder, refs #22738 2014-09-27 09:57:09 +03:00
Shai Berger c1ae0621ba Fixed #22738 -- made finer distinctions for when Boolean is not detected on Oracle
Thanks Claude Paroz for partial fix and Simon Charrette for review
2014-09-27 09:49:50 +03:00
Claude Paroz dbdae3a755 Fixed #22738 -- Abstracted boolean field type introspection
Thanks maxi for the report, Shai Berger for his help with the patch
and Tim Graham for the review.
2014-09-26 20:03:44 +02:00
Loic Bistuer b23d47412c Fixed #23560 -- Fixed MigrationWrite to handle builtin types without imports.
Thanks Tim Graham for the review.
2014-09-27 00:36:28 +07:00
Matt Robenolt ef5f9b6ae8 Fixed #23460 -- Added literal `%s` support to extra() QuerySets. 2014-09-26 13:01:27 -04:00
Claude Paroz d1ca70110f Factorized schema_editor() at BaseDatabaseWrapper level 2014-09-26 08:50:16 +02:00
Markus Holtermann 45bd7b3bd9 Fixed #23455 -- Forced related_name to be a unicode string during deconstruction. 2014-09-25 17:49:44 -04:00
Tim Graham 74e7f91e6d Fixed #23538 -- Added SchemaEditor for MySQL GIS.
Thanks Claude Paroz for suggestions and review.
2014-09-25 13:53:44 -04:00
Markus Holtermann 215aa4f53b Fixed #23415 -- Added fields for unmanaged and proxy model migrations.
Thanks sky-chen for the report.
2014-09-25 10:25:03 -04:00
Tim Graham d7ab2cefb7 Revert "Fixed #23474 -- Prevented migrating backwards from unapplying the wrong migrations."
This reverts commit abcf28a076.
2014-09-24 15:49:30 -04:00
Markus Holtermann b9a670b227 Fixed #23426 -- Don't require double percent sign in RunSQL without parameters 2014-09-24 07:20:57 -04:00
Tim Graham 0aca91cf7f Fixed flake8 warnings. 2014-09-24 06:32:42 -04:00
Shai Berger d128eac316 Changed Oracle test-user creation to grant privileges instead of roles
because the roles (specifically RESOURCE) are deprecated.
Also added optional support for creating views in tests, and made an
introspection test fail (rather than skip)  if a view cannot be created
due to lacking privileges.

Refs #18782

Thanks Tim Graham for review, and Josh Smeaton
2014-09-24 04:58:33 +03:00
Loic Bistuer e043aae9bb Fixed #23550 -- Normalized get_queryset() of RelatedObjectDescriptor
and ReverseSingleRelatedObjectDescriptor so they actually return QuerySet
instances.

Also ensured that SingleRelatedObjectDescriptor.get_queryset() accounts
for use_for_related_fields=True.

This cleanup lays the groundwork for #23533.

Thanks Anssi Kääriäinen for the review.
2014-09-24 02:03:12 +07:00
Claude Paroz 2a1bdf5ced Called table_names instead of get_table_list in migrations 2014-09-23 20:13:31 +02:00
Claude Paroz ed297061a6 Fixed #18782 -- Prevented sql_flush to flush views
Thanks rodolfo_3 for the report and the initial patch, and
Josh Smeaton, Shai Berger and Tim Graham for the reviews.
2014-09-23 20:13:31 +02:00
Claude Paroz b8cdc7dcc3 Made get_table_list return a TableInfo named tuple 2014-09-23 20:13:31 +02:00
Sergey Fedoseev 463952d940 Fixed #23503 -- Fixed renaming of model with self-referential m2m field. 2014-09-23 10:03:37 -04:00
Sergey Fedoseev 83cd18633f Fixed #23065 -- Quoted constraint names in SQL generated by migrations. 2014-09-23 09:25:31 -04:00
Sergey Fedoseev 0bea6c8749 Factored create_fk_sql, create_unique_sql, and delete_constraint_sql. 2014-09-23 09:24:32 -04:00
Thomas Chaumeny e008a10c2f Fixed #23443 -- Corrected erroneous FieldError message.
Thanks Tim Graham for the review.
2014-09-19 01:01:31 +07:00
Josh Smeaton 0eb5cde9da Fixed #21775 -- Allowed customization of datafile for Oracle tablespace 2014-09-17 09:55:33 -04:00
Baptiste Mispelon d63ac5b595 Fixed #23492 -- Restored F.__deepcopy__.
This reverts commit 3a66035107.
A regression test was also added.
2014-09-16 12:19:00 +02:00
Marc Tamlyn ed7821231b Fixed #19463 -- Added UUIDField
Uses native support in postgres, and char(32) on other backends.
2014-09-16 10:08:09 +01:00
valtron abcf28a076 Fixed #23474 -- Prevented migrating backwards from unapplying the wrong migrations. 2014-09-15 14:56:59 -04:00
Claude Paroz 6072f17d09 Factorized create_index_sql expression 2014-09-13 21:34:37 +02:00
Carl Meyer afa119918c Fixed #23484 -- Add comment in AppConfigStub clarifying app name vs app label. 2014-09-12 15:45:08 -06:00
Szilveszter Farkas 5e32605ce9 Fixed #23483 -- Prevented ImproperlyConfigured with dotted app names
Made sure the app labels stay unique for the AppConfigStubs, so
migrations wouldn't fail if two dotted app names has the same last part
(e.g. django.contrib.auth and vendor.auth)
2014-09-12 14:58:54 -06:00
Markus Bertheau 61f56e239f Corrected grammar in migrations error message. 2014-09-10 10:32:33 -04:00
Markus Holtermann 6d5958c7a3 Fixed #23452 -- Prevented infinite migrations for empty unique/index_together.
Thanks fwkroon for the report.
2014-09-10 07:54:16 -04:00
Tim Graham c32bc1a7a7 Fixed #11775 -- Made ABSOLUTE_URL_OVERRIDES work with models that don't define get_absolute_url().
Thanks jukvalim for the report and initial patch,
and Preston Timmons for review.
2014-09-09 11:05:31 -04:00
Markus Holtermann d4467ede77 Updated links to point to dev documentation. 2014-09-08 15:32:32 -04:00
Josh Smeaton 638d1393ee Fixed #23434 -- Coerce Oracle bool params to int 2014-09-08 10:11:20 -04:00
Andrew Pinkham 4680d25df2 Fixed #22951 -- Checked for types during deep_deconstruct migration serialization process.
Thanks Sam Hartsfield for the report.
2014-09-08 07:39:09 -04:00
Marc Tamlyn 14c8456ffe Fixed #23416 -- Make sure DatabaseCreation respects checks.
Migrations respected Field.db_parameters()['check'], but
DatabaseCreation was still using just Field.db_type().
2014-09-06 19:01:06 +01:00
Ben Reilly b878c73fc3 switch out recursive dfs for stack based approach, to avoid possibly hitting the recursion limit 2014-09-05 15:26:05 -07:00
Claude Paroz 885ff6845e Revert "Fixed #23384 -- Allowed overriding part of a dictionary-type setting"
This reverts commit 66757fee7e.
Discussions have led to think that this functionality does not
bring significant benefits to justify the added complexity.
Read also discussions on ticket #22734.
2014-09-05 20:06:02 +02:00
Tim Graham 1101467ce0 Limited lines to 119 characters in django/
refs #23395.
2014-09-05 09:22:16 -04:00
Marc Tamlyn e9103402c0 Fixed #18757, #14462, #21565 -- Reworked database-python type conversions
Complete rework of translating data values from database

Deprecation of SubfieldBase, removal of resolve_columns and
convert_values in favour of a more general converter based approach and
public API Field.from_db_value(). Now works seamlessly with aggregation,
.values() and raw queries.

Thanks to akaariai in particular for extensive advice and inspiration,
also to shaib, manfre and timograham for their reviews.
2014-09-03 20:36:03 +01:00
Raffaele Salmaso 1435cfbe8d Fixed #23302 -- Added --name/-n option to makemigrations command 2014-09-02 21:09:18 -04:00
Dave Hall e03b7940e5 Fixed #22918 -- Fixed SeparateDatabaseAndState crash 2014-09-02 08:06:44 -04:00
Akis Kesoglou 6613ea6e3f Fixed #23370 -- defer() + select_related() crashed with inherited models. 2014-08-30 07:14:44 -04:00
Claude Paroz 66757fee7e Fixed #23384 -- Allowed overriding part of a dictionary-type setting
This change is needed for upcoming changes where settings might be
grouped in a parent dictionary.
Thanks Tim Graham for the review.
2014-08-30 12:37:10 +02:00
Andrew Torpedov bc06d2c11c Fixed #23313 -- Corrected repr(RawQuery) with dict parameters. 2014-08-29 07:22:08 -04:00
Thomas Chaumeny 191d953c99 Factorize some code using ContextDecorator. 2014-08-28 11:58:16 -04:00
Jon Dufresne f0d3dd4f04 Fixed #23357 -- Added small int introspection support to MySQL backend.
In the MySQL backend, updated the can_introspect_small_integer feature
flag to True. In data_types_reverse, map FIELD_TYPE.SHORT to a
SmallIntegerField. Added test to verify introspecting SmallIntegerFields
and fixed existing tests influenced by this change.
2014-08-27 10:58:44 -04:00
Shai Berger 4c85a0d95f Made main user disconnect after creating test user/tablespaces on Oracle 2014-08-25 20:20:10 +03:00
Raffaele Salmaso abd640fbdf Fixed #23341 -- Added migration name to nonexistent migration error in makemigrations. 2014-08-23 19:18:03 -04:00
Shai Berger a6222af0ed Added docstring forgotten in 56252e7. 2014-08-22 05:37:36 +03:00
Shai Berger 56252e7f46 Fixed schema test for Oracle 11.2.0.1 which is used in Django Project's CI.
Refs #23073 Workaround.

Refs #22738 Repeats the mysql "offense". When the issue is solved, the
Oracle special case should be made to play with the solution (that is,
Oracle should be fixed the same way that mysql and the 3rd-party backneds
are).
2014-08-22 05:08:53 +03:00
Markus Holtermann 144cff3f51 Fixed #23322 -- Use resolved swappable model for dependency resolution during makemigrations 2014-08-20 16:04:21 -04:00
Andrew Godwin 9247da1032 Fixed #23315: Operational dependency fail with mixed create/add 2014-08-19 19:51:12 -07:00
Lee Sanghyuck 11d9cbe2f4 Fixed #23316 -- Added datetime.time serialization in migrations. 2014-08-19 13:31:46 -04:00
Claude Paroz 6295ea0027 Replaced HAS_SPATIAL_DB by testing database feature
Refs #22632. This should be the base for using more database
features to exclude specific backends in GIS tests.
Thanks Tim Graham for the review.
2014-08-19 17:57:01 +02:00
Andrew Godwin 4d2f9c38e8 Fixed #23288: deconstruct() ignoring related_name 2014-08-14 19:47:22 -07:00
zsoldosp 01801edd37 Fixed #22646: Added support for the MySQL ssl-ca option to dbshell. 2014-08-13 18:29:42 -04:00
Andrew Godwin 8f9862cd4d Fixed #23275: Unmanaged models kept by autodetector, ignored by ops 2014-08-12 12:49:20 -07:00
Anssi Kääriäinen f7dba61881 Avoided creation of deferred model from another deferred model
Also never create deferred model when no attrs are deferred.
2014-08-12 14:58:10 +03:00
Josh Smeaton 5b0375ec3e Fixed #23001 -- Fixed mixing defer and annotations 2014-08-12 14:58:10 +03:00
Anssi Kääriäinen dfadbdac6a Fixed #16426 -- deletion of 1000+ objects with relations on SQLite
SQLite doesn't work with more than 1000 parameters in a single query.
The deletion code could generate queries that try to get related
objects for more than 1000 objects thus breaking the limit. Django now
splits the related object fetching into batches with at most 1000
parameters.

The tests and patch include some work done by Trac alias NiGhTTraX in
ticket #21205.
2014-08-11 12:47:37 +03:00
Anubhav Joshi cdfdcf4b70 Fixed #23266 -- Prevented queries caused by type checking lookup values
Small modifications done by committer.
2014-08-11 09:51:57 +03:00
Rajiv Makhijani f0b358880a Fixed #23259 -- Corrected insertion order of extra() select_params
A regression caused queries to produce incorrect results for cases where
extra(select) is excluded by values() but included by extra(order_by)

The regression was caused by 2f35c6f10f.
2014-08-11 09:33:18 +03:00
Florian Apolloner 61d783f3d7 Made sqlite's remove_field behave like the base backend. 2014-08-10 13:31:06 +02:00
Claude Paroz dc462a8ed5 Removed unused migrate option 2014-08-09 17:13:00 +02:00
Andrew Godwin 27b6f28435 Fixed #23264: Schema backends honour db_constraint 2014-08-09 17:50:00 +10:00
Andrew Godwin 51673c146e Don't treat .pyc/pyo files as migrations. Refs #23237 among others. 2014-08-08 09:57:31 +10:00
Tim Graham f9f9f3ad60 Fixed flake8 warning. 2014-08-07 10:11:15 -04:00
Andrew Godwin 157c42a976 Use smart_text rather than naive forcing-to-unicode for state reading 2014-08-07 22:34:07 +10:00
Andrew Godwin 5257b85ab8 Fixed #23226: Model options appearing as bytes type in migrations 2014-08-07 12:13:37 +10:00
Andrew Godwin 8d93b21ec9 Moved index dropping after FK dropping to please MySQL and fix test 2014-08-07 11:59:11 +10:00
Andrew Godwin dfe86449c9 Fixed #23244: Error altering FK to non-FK in migrations 2014-08-07 11:52:31 +10:00
Alex Hill 938da36cb1 Fixed #21603 -- Fixed complex RawQuerySets queries on some versions of SQLite. 2014-08-06 08:41:34 -04:00
Tim Graham fcd42a4819 Removed code that assumed BooleanField could be null.
Such a field will no longer pass model validation.
2014-08-05 07:49:53 -04:00
Shai Berger 746f2a4bed Fixed #23061: Avoided setting a limit on a query for get with select_for_update on Oracle
Thanks Michael Miller for reporting the issue.
2014-08-05 03:12:08 +03:00
Stanislas Guerra 98e8da3709 Fixed #16311 -- Added a RelatedOnlyFieldListFilter class in admin.filters. 2014-08-04 09:39:02 -04:00
Mihail Milushev bf5382c6e5 Fixed #22234 -- Replaced OS-specific code with subprocess.call() in dbshell.
This fixes escaping of special characters on Windows.
2014-08-04 09:21:03 -04:00