From: Mike Bayer Date: Sat, 22 Sep 2007 18:13:23 +0000 (+0000) Subject: fixed firebird visit_alias [ticket:779] X-Git-Tag: rel_0_4beta6~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4be3b2664d254093d843606d96aa5660fe1ba1d8;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fixed firebird visit_alias [ticket:779] --- diff --git a/CHANGES b/CHANGES index 6ecb23bc13..ca87687f43 100644 --- a/CHANGES +++ b/CHANGES @@ -59,7 +59,7 @@ CHANGES as it does in 0.3 since ~(x==y) compiles to "x != y", but still applies to operators like BETWEEN. -- Other tickets: [ticket:768], [ticket:728] +- Other tickets: [ticket:768], [ticket:728], [ticket:779] 0.4.0beta5 ---------- diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py index 5f258a0296..87908c74e2 100644 --- a/lib/sqlalchemy/databases/firebird.py +++ b/lib/sqlalchemy/databases/firebird.py @@ -297,9 +297,9 @@ class FBCompiler(compiler.DefaultCompiler): def visit_alias(self, alias, asfrom=False, **kwargs): # Override to not use the AS keyword which FB 1.5 does not like if asfrom: - return self.process(alias.original, asfrom=True) + " " + self.preparer.format_alias(alias) + return self.process(alias.original, asfrom=True, **kwargs) + " " + self.preparer.format_alias(alias, self._anonymize(alias.name)) else: - return self.process(alias.original, asfrom=True) + return self.process(alias.original, **kwargs) def visit_function(self, func): if func.clauses: diff --git a/test/dialect/firebird.py b/test/dialect/firebird.py index 87d9618fb1..9875073068 100644 --- a/test/dialect/firebird.py +++ b/test/dialect/firebird.py @@ -1,6 +1,7 @@ import testbase from sqlalchemy import * from sqlalchemy.databases import firebird +from sqlalchemy.sql import table, column from testlib import * class BasicTest(AssertMixin): @@ -8,3 +9,17 @@ class BasicTest(AssertMixin): def test_import(self): # we got this far, right? return True + + + +class CompileTest(SQLCompileTest): + __dialect__ = firebird.FBDialect() + + def test_alias(self): + t = table('sometable', column('col1'), column('col2')) + s = select([t.alias()]) + self.assert_compile(s, "SELECT sometable_1.col1, sometable_1.col2 FROM sometable sometable_1") + + +if __name__ == '__main__': + testbase.main() diff --git a/test/testlib/testing.py b/test/testlib/testing.py index 2052f9e975..1c80c7bb13 100644 --- a/test/testlib/testing.py +++ b/test/testlib/testing.py @@ -216,7 +216,7 @@ class SQLCompileTest(PersistTest): c = clause.compile(column_keys=keys, dialect=dialect) - print "\nSQL String:\n" + str(c) + repr(c.get_params()) + print "\nSQL String:\n" + str(c) + repr(c.params) cc = re.sub(r'\n', '', str(c)) @@ -224,9 +224,9 @@ class SQLCompileTest(PersistTest): if checkparams is not None: if isinstance(checkparams, list): - self.assert_(c.get_params().get_raw_list({}) == checkparams, "params dont match ") + self.assert_(c.params.get_raw_list({}) == checkparams, "params dont match ") else: - self.assert_(c.get_params().get_original_dict() == checkparams, "params dont match" + repr(c.get_params())) + self.assert_(c.params.get_original_dict() == checkparams, "params dont match" + repr(c.params)) class AssertMixin(PersistTest): """given a list-based structure of keys/properties which represent information within an object structure, and