Commit Graph

10093 Commits

Author SHA1 Message Date
David\ Beitey 3bd58fac7b Minor grammar fix for capitalisation in session docs 2015-08-28 13:57:54 +10:00
Mike Bayer ed535649d4 - The :class:.TypeDecorator type extender will now work in conjunction
with a :class:`.SchemaType` implementation, typically :class:`.Enum`
or :class:`.Boolean` with regards to ensuring that the per-table
events are propagated from the implementation type to the outer type.
These events are used
to ensure that the constraints or Postgresql types (e.g. ENUM)
are correctly created (and possibly dropped) along with the parent
table.
fixes #2919
2015-08-27 18:04:25 -04:00
Mike Bayer d459afa8db - reword and update documentation on passive_updates=False; as virtually
all DBs now support ON UPDATE CASCADE other than Oracle, there's no need
to try to reimplement more functionality here and users should be encouraged
to forego natural PKs unless their target platform supports them.
references #2666
2015-08-27 15:56:00 -04:00
Mike Bayer 410be197ef - add a postgresql-specific form of array_agg() that injects the
ARRAY type, references #3132
2015-08-27 11:22:05 -04:00
Mike Bayer e2209f7534 - consolidate "constraints.py" into the more general "ext.py",
for all assorted PG SQL extensions
2015-08-27 10:33:21 -04:00
Mike Bayer 5295a683f9 - add PG-specific aggregate_order_by(), references #3132 2015-08-27 10:32:21 -04:00
Mike Bayer 4d63b472f2 Merge branch 'ticket_3516' 2015-08-26 17:20:56 -04:00
Mike Bayer 7c4512cbeb - Added support for "set-aggregate" functions of the form
``<function> WITHIN GROUP (ORDER BY <criteria>)``, using the
method :class:`.FunctionElement.within_group`.  A series of common
set-aggregate functions with return types derived from the set have
been added. This includes functions like :class:`.percentile_cont`,
:class:`.dense_rank` and others.
fixes #1370
- make sure we use func.name for all _literal_as_binds in functions.py
so we get consistent naming behavior for parameters.
2015-08-26 17:19:27 -04:00
Mike Bayer cfae9c2eaf - Added support for the SQL-standard function :class:.array_agg,
which automatically returns an :class:`.Array` of the correct type
and supports index / slice operations.   As arrays are only
supported on Postgresql at the moment, only actually works on
Postgresql. fixes #3132
2015-08-26 15:15:55 -04:00
Mike Bayer 7024745a14 - build out a new base type for Array, as well as new any/all operators
- any/all work for Array as well as subqueries, accepted by MySQL
- Postgresql ARRAY now subclasses Array
- fixes #3516
2015-08-25 18:24:46 -04:00
Mike Bayer 0127ac668e - re-document and fully cross link all of configure_mappers(),
mapper_configured(), after_configured(), and before_configured().
2015-08-24 21:52:33 -04:00
Mike Bayer d57e5edbcd - Fixed two issues in the "history_meta" example where history tracking
could encounter empty history, and where a column keyed to an alternate
attribute name would fail to track properly.  Fixes courtesy
Alex Fraser.
2015-08-24 10:54:09 -04:00
Mike Bayer 03e47a8255 - repair the inspection hook in sqltypes to not be fooled
by mock and other __getattr__ impostors
2015-08-22 16:01:23 -04:00
Mike Bayer 8712ef2f81 - Added new checks for the common error case of passing mapped classes
or mapped instances into contexts where they are interpreted as
SQL bound parameters; a new exception is raised for this.
fixes #3321
2015-08-22 12:47:13 -04:00
Mike Bayer e0a8030048 - rework the "controlling DDL sequences" documentation to
refer mostly to the DDL object; this system is primarily useful
in that case, and not for built-in objects.  Reference that
the built-in case is not really viable right now. References #3442.
2015-08-21 16:36:15 -04:00
Mike Bayer acda2e7d0b - some cleanups in compiler.py 2015-08-18 17:25:05 -04:00
Mike Bayer 871330c379 - forgot to implement py3k logic for JSON.NULL 2015-08-18 16:36:56 -04:00
Mike Bayer b653fedca5 - fix the postgresql_jsonb requirement to include the 9.4 requirement
- new test for json col['x']['y']['z'] seems to fail pre PG 9.4,
fails on comparisons for non-compatible data instead of not matching
- no need to call SpecPredicate(db) directly in exclusion functions,
by using Predicate.as_predicate() the spec strings can have version
comparisons
2015-08-18 13:30:21 -04:00
Mike Bayer 3f8f1f16bd - as the Concatenable mixin was changed to support calling down to
"super" instead of hardcoding to "self.type" for the default return
value, the base Comparator was returning other_comparator.type.   It's
not clear what the rationale for this was, though in theory the
base Comparator should possibly even throw an exception if the two
types aren't the same (or of the same affinity?) .
- mysql.SET was broken on this because the bitwise version adds "0"
to the value to force an integer within column_expression, we are doing type_coerces here
now in any case so that there is no type ambiguity for this
operation
2015-08-18 12:40:18 -04:00
Mike Bayer ba1e959e53 - document workaround type for ARRAY of ENUM, fixes #3467 2015-08-18 11:33:56 -04:00
Mike Bayer d14a4b480c - merge of ticket_3514 None-handling branch
- Fixes to the ORM and to the postgresql JSON type regarding the
``None`` constant in conjunction with the Postgresql :class:`.JSON` type.  When
the :paramref:`.JSON.none_as_null` flag is left at its default
value of ``False``, the ORM will now correctly insert the Json
"'null'" string into the column whenever the value on the ORM
object is set to the value ``None`` or when the value ``None``
is used with :meth:`.Session.bulk_insert_mappings`,
**including** if the column has a default or server default on it.  This
makes use of a new type-level flag "evaluates_none" which is implemented
by the JSON type based on the none_as_null flag. fixes #3514
- Added a new constant :attr:`.postgresql.JSON.NULL`, indicating
that the JSON NULL value should be used for a value
regardless of other settings. part of fixes #3514
2015-08-17 17:12:16 -04:00
Mike Bayer ceeb033054 - merge of ticket_3499 indexed access branch
- The "hashable" flag on special datatypes such as :class:`.postgresql.ARRAY`,
:class:`.postgresql.JSON` and :class:`.postgresql.HSTORE` is now
set to False, which allows these types to be fetchable in ORM
queries that include entities within the row.  fixes #3499
- The Postgresql :class:`.postgresql.ARRAY` type now supports multidimensional
indexed access, e.g. expressions such as ``somecol[5][6]`` without
any need for explicit casts or type coercions, provided
that the :paramref:`.postgresql.ARRAY.dimensions` parameter is set to the
desired number of dimensions. fixes #3487
- The return type for the :class:`.postgresql.JSON` and :class:`.postgresql.JSONB`
when using indexed access has been fixed to work like Postgresql itself,
and returns an expression that itself is of type :class:`.postgresql.JSON`
or :class:`.postgresql.JSONB`.  Previously, the accessor would return
:class:`.NullType` which disallowed subsequent JSON-like operators to be
used. part of fixes #3503
- The :class:`.postgresql.JSON`, :class:`.postgresql.JSONB` and
:class:`.postgresql.HSTORE` datatypes now allow full control over the
return type from an indexed textual access operation, either ``column[someindex].astext``
for a JSON type or ``column[someindex]`` for an HSTORE type,
via the :paramref:`.postgresql.JSON.astext_type` and
:paramref:`.postgresql.HSTORE.text_type` parameters. also part of fixes #3503
- The :attr:`.postgresql.JSON.Comparator.astext` modifier no longer
calls upon :meth:`.ColumnElement.cast` implicitly, as PG's JSON/JSONB
types allow cross-casting between each other as well.  Code that
makes use of :meth:`.ColumnElement.cast` on JSON indexed access,
e.g. ``col[someindex].cast(Integer)``, will need to be changed
to call :attr:`.postgresql.JSON.Comparator.astext` explicitly.  This is
part of the refactor in references #3503 for consistency in operator
use.
2015-08-17 17:07:10 -04:00
Mike Bayer 10cacef2c0 - correct this, need brackets 2015-08-15 13:54:59 -04:00
Mike Bayer e1129b2d3e - make these failure cases more specific to catch Oracle.
Would be nice to fix Oracle here
2015-08-15 13:53:38 -04:00
Mike Bayer b00b430e87 - add tests for InstanceEvents.init, InstanceEvents.init_failure
- ensure that kwargs can be modified in-place within InstanceEvents.init
and that these take effect for the __init__ method.
- improve documentation for these and related events, including
that kwargs can be modified in-place.
2015-08-14 15:34:01 -04:00
Donald Stufft 39517d1046 Tell Wheel to generate platform and interpreter specific wheels
By telling wheel that we have extension modules, even though we
have none, wheel will create a Wheel which is platform and
interpreter specific. This will ensure that the pure Python wheels
on PyPy do not trigger installs on CPython without the C speedups.
2015-08-13 14:57:53 -04:00
Mike Bayer 44420423de - we can again use setuptools.find_packages since we require setuptools
- clean up other things we aren't using anymore
2015-08-13 14:48:18 -04:00
Mike Bayer 88749550f6 - The behavior of the :func:.union construct and related constructs
such as :meth:`.Query.union` now handle the case where the embedded
SELECT statements need to be parenthesized due to the fact that they
include LIMIT, OFFSET and/or ORDER BY.   These queries **do not work
on SQLite**, and will fail on that backend as they did before, but
should now work on all other backends.
fixes #2528
2015-08-12 14:26:11 -04:00
Mike Bayer 5198b1de31 - Fixed 1.0 regression where the "noload" loader strategy would fail
to function for a many-to-one relationship.  The loader used an
API to place "None" into the dictionary which no longer actually
writes a value; this is a side effect of 🎫`3061`.
- remove InstanceState._initialize() totally, it's used nowhere
else and no longer does what it says it does
- fill in fowards-port version ids throughout the changes for 1.0.9
2015-08-11 13:05:17 -04:00
Mike Bayer 669a42c604 - pep8 test/orm/test_mapper 2015-08-11 12:48:38 -04:00
Mike Bayer a7d7941d3e - Fixed two issues regarding Sybase reflection, allowing tables
without primary keys to be reflected as well as ensured that
a SQL statement involved in foreign key detection is pre-fetched up
front to avoid driver issues upon nested queries.  Fixes here
courtesy Eugene Zapolsky; note that we cannot currently test
Sybase to locally verify these changes.
fixes #3508  fixes #3509
2015-08-10 10:07:17 -04:00
mike bayer e99dbe141d Merge pull request #192 from halfcrazy/patch-1
fix typo int->into
2015-08-09 10:22:41 -04:00
halfcrazy 51870ddaef fix typo int->into 2015-08-09 12:00:17 +08:00
mike bayer 838ce5bbad Merge pull request #191 from leorochael/leorochael-remove_dead_variable
Remove useless code
2015-08-06 17:44:33 -04:00
Leonardo Rochael Almeida 69fcabb335 Remove useless code
`to_unicode` variable was created but was not used.
2015-08-06 18:26:45 -03:00
Mike Bayer 292f5bec1c - add a note clarifying query.with_labels(), fixes #3506 2015-08-03 17:46:34 -04:00
Mike Bayer dd6110eed3 - Fixed issue where the SQL Server dialect would reflect a string-
or other variable-length column type with unbounded length
by assigning the token ``"max"`` to the
length attribute of the string.   While using the ``"max"`` token
explicitly is supported by the SQL Server dialect, it isn't part
of the normal contract of the base string types, and instead the
length should just be left as None.   The dialect now assigns the
length to None on reflection of the type so that the type behaves
normally in other contexts.
fixes #3504
2015-07-30 10:34:36 -04:00
Mike Bayer d8efa2257e - Fixed support for cx_Oracle version 5.2, which was tripping
up SQLAlchemy's version detection under Python 3 and inadvertently
not using the correct unicode mode for Python 3.  This would cause
issues such as bound variables mis-interpreted as NULL and rows
silently not being returned.
fixes #3491
2015-07-29 17:40:47 -04:00
Mike Bayer 2e52f87763 - fix typo in suffix_with() docs, fixes #3502 2015-07-29 16:54:02 -04:00
Mike Bayer 4f51fa947f - work to bridge between core/ORM tutorials regarding the text() construct 2015-07-26 16:36:23 -04:00
Mike Bayer 7d268d4bcb - remove "completely raw", whatever that is 2015-07-26 16:29:30 -04:00
Mike Bayer 2997d3910d - typo 2015-07-26 16:22:35 -04:00
Mike Bayer d73ffaafe6 - add an example of text.columns
- correct the scalar() example output
2015-07-26 16:09:25 -04:00
Mike Bayer 5ab9ab7940 - remove "distutils-only" mode, use setuptools only
- add first-class "pytest" runner to setup.py, fixes #3489
- remove references to setuptools Feature and mark that "--without-cextensions"
 is removed, fixes #3500
2015-07-24 18:52:25 -04:00
Mike Bayer 3180f15837 - Organize the tree for 1.1 2015-07-24 18:27:45 -04:00
Mike Bayer 9e092e3394 - An adjustment to the new Postgresql feature of reflecting storage
options and USING of 🎫`3455` released in 1.0.6,
to disable the feature for Postgresql versions < 8.2 where the
``reloptions`` column is not provided; this allows Amazon Redshift
to again work as it is based on an 8.0.x version of Postgresql.
Fix courtesy Pete Hollobon.
references #3455
2015-07-24 12:24:18 -04:00
Mike Bayer 552f1f135f 1.0.8 rel_1_0_8 2015-07-22 20:00:13 -04:00
Mike Bayer 9140a2f6af - categorize this correctly 2015-07-22 19:59:09 -04:00
Mike Bayer 4096ad0f09 - Fixed critical issue whereby the pool "checkout" event handler
may be called against a stale connection without the "connect"
event handler having been called, in the case where the pool
attempted to reconnect after being invalidated and failed; the stale
connection would remain present and would be used on a subsequent
attempt.  This issue has a greater impact in the 1.0 series subsequent
to 1.0.2, as it also delivers a blanked-out ``.info`` dictionary to
the event handler; prior to 1.0.2 the ``.info`` dictionary is still
the previous one.
fixes #3497
2015-07-22 18:03:36 -04:00
Mike Bayer a6e83b204f 0.9.10 release date
(cherry picked from commit e71cf56a83)
2015-07-22 13:53:28 -04:00