]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
- compiler visit_label() checks a flag "within_order_by" and will render its own...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 3 Aug 2008 21:19:32 +0000 (21:19 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 3 Aug 2008 21:19:32 +0000 (21:19 +0000)
commitedf6b16fae38b4c103ed2827ee5448fec2fdcb1a
tree2d02c785663acab948e3ab8cf65e50ba738e60b6
parent8df49e7194f272573f043343e601c4ee4beb0f70
- compiler visit_label() checks a flag "within_order_by" and will render its own name
and not its contained expression, if the dialect reports true for supports_simple_order_by_label.
the flag is not propagated forwards, meant to closely mimic the syntax Postgres expects which is
that only a simple name can be in the ORDER BY, not a more complex expression or function call
with the label name embedded (mysql and sqlite support more complex expressions).

This further sets the standard for propigation of **kwargs within compiler, that we can't just send
**kwargs along blindly to each XXX.process() call; whenever a **kwarg needs to propagate through,
most methods will have to be aware of it and know when they should send it on forward and when not.
This was actually already the case with result_map as well.

The supports_simple_order_by dialect flag defaults to True but is conservatively explicitly set to
False on all dialects except SQLite/MySQL/Postgres to start.

[ticket:1068]
13 files changed:
CHANGES
lib/sqlalchemy/databases/access.py
lib/sqlalchemy/databases/firebird.py
lib/sqlalchemy/databases/informix.py
lib/sqlalchemy/databases/maxdb.py
lib/sqlalchemy/databases/mssql.py
lib/sqlalchemy/databases/oracle.py
lib/sqlalchemy/databases/postgres.py
lib/sqlalchemy/databases/sybase.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/sql/compiler.py
test/sql/query.py
test/sql/select.py