summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-02-17 15:35:30 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-02-17 15:35:30 +0000
commit1aebdb231f395aa68bd1767ffd897189107e070a (patch)
tree1cc759428e88e925a3318519dac0dda566c5b36f
parenta3f67fecb27363c73f833cc72cefbff5e8754598 (diff)
downloadsqlalchemy-1aebdb231f395aa68bd1767ffd897189107e070a.tar.gz
get basic compilation working for [ticket:972]
-rw-r--r--lib/sqlalchemy/databases/informix.py7
-rw-r--r--test/dialect/informix.py20
2 files changed, 18 insertions, 9 deletions
diff --git a/lib/sqlalchemy/databases/informix.py b/lib/sqlalchemy/databases/informix.py
index 400a2761e..d91b1b9b8 100644
--- a/lib/sqlalchemy/databases/informix.py
+++ b/lib/sqlalchemy/databases/informix.py
@@ -368,11 +368,12 @@ class InfoDialect(default.DefaultDialect):
class InfoCompiler(compiler.DefaultCompiler):
"""Info compiler modifies the lexical structure of Select statements to work under
non-ANSI configured Oracle databases, if the use_ansi flag is False."""
- def __init__(self, dialect, statement, parameters=None, **kwargs):
+
+ def __init__(self, *args, **kwargs):
self.limit = 0
self.offset = 0
- compiler.DefaultCompiler.__init__( self , dialect , statement , parameters , **kwargs )
+ compiler.DefaultCompiler.__init__( self , *args, **kwargs )
def default_from(self):
return " from systables where tabname = 'systables' "
@@ -401,7 +402,7 @@ class InfoCompiler(compiler.DefaultCompiler):
# TODO: dont modify the original select, generate a new one
a = [ __label(c) for c in select._raw_columns ]
- for c in select.order_by_clause.clauses:
+ for c in select._order_by_clause.clauses:
if ( __label(c) not in a ) and getattr( c , 'name' , '' ) != 'oid':
select.append_column( c )
diff --git a/test/dialect/informix.py b/test/dialect/informix.py
index 4a2546f17..1fbbaa0cb 100644
--- a/test/dialect/informix.py
+++ b/test/dialect/informix.py
@@ -4,12 +4,20 @@ from sqlalchemy.databases import informix
from testlib import *
-class BasicTest(TestBase, AssertsExecutionResults):
- # A simple import of the database/ module should work on all systems.
- def test_import(self):
- # we got this far, right?
- return True
-
+class CompileTest(TestBase, AssertsCompiledSQL):
+ __dialect__ = informix.InfoDialect()
+
+ def test_statements(self):
+ meta =MetaData()
+ t1= Table('t1', meta, Column('col1', Integer, primary_key=True), Column('col2', String(50)))
+ t2= Table('t2', meta, Column('col1', Integer, primary_key=True), Column('col2', String(50)), Column('col3', Integer, ForeignKey('t1.col1')))
+
+ self.assert_compile(t1.select(), "SELECT t1.col1, t1.col2 FROM t1")
+
+ self.assert_compile(select([t1, t2]).select_from(t1.join(t2)), "SELECT t1.col1, t1.col2, t2.col1, t2.col2, t2.col3 FROM t1 JOIN t2 ON t1.col1 = t2.col3")
+ self.assert_compile(t1.update().values({t1.c.col1 : t1.c.col1 + 1}), 'UPDATE t1 SET col1=(t1.col1 + ?)')
+
+
if __name__ == "__main__":
testenv.main()