]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Added missing compilation support for
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 12 Feb 2012 22:10:50 +0000 (17:10 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 12 Feb 2012 22:10:50 +0000 (17:10 -0500)
LONG [ticket:2401]
- broke out oracle tests for types that only require dialect

CHANGES
lib/sqlalchemy/dialects/oracle/base.py
test/dialect/test_oracle.py

diff --git a/CHANGES b/CHANGES
index bfc08bea2ceaff08bbde6db179a4fbaeaa1cd276..79f6cd468121de853c28acae46e9fd2eab06f17d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -65,6 +65,11 @@ CHANGES
     commit or rollback transaction with errors
     on engine.begin().
 
+- oracle
+
+  - Added missing compilation support for 
+    LONG [ticket:2401]
+
 0.7.5 (January 28, 2012)
 =====
 - orm
index 56838f8039cf5bbe878d816973c2433eb8a16f7a..5d55847b467d23806da7350bedd4a74f02867da6 100644 (file)
@@ -309,6 +309,9 @@ class OracleTypeCompiler(compiler.GenericTypeCompiler):
                 "",
         )
 
+    def visit_LONG(self, type_):
+        return "LONG"
+
     def visit_TIMESTAMP(self, type_):
         if type_.timezone:
             return "TIMESTAMP WITH TIME ZONE"
index f12b355932a6e35bb876edd65b9268da63bd7bdd..ad9220076e3a123693c291fc72685f8f9b64def9 100644 (file)
@@ -655,8 +655,7 @@ class ConstraintTest(fixtures.TestBase):
                     onupdate='CASCADE'))
         assert_raises(exc.SAWarning, bat.create)
 
-class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
-    __only_on__ = 'oracle'
+class DialectTypesTest(fixtures.TestBase, AssertsCompiledSQL):
     __dialect__ = oracle.OracleDialect()
 
     def test_no_clobs_for_string_params(self):
@@ -678,6 +677,59 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         b = bindparam("foo", u"hello world!")
         assert b.type.dialect_impl(dialect).get_dbapi_type(dbapi) == 'STRING'
 
+    def test_long(self):
+        self.assert_compile(oracle.LONG(), "LONG")
+
+    def test_type_adapt(self):
+        dialect = cx_oracle.dialect()
+
+        for start, test in [
+            (Date(), cx_oracle._OracleDate),
+            (oracle.OracleRaw(), cx_oracle._OracleRaw),
+            (String(), String),
+            (VARCHAR(), cx_oracle._OracleString),
+            (DATE(), DATE),
+            (String(50), cx_oracle._OracleString),
+            (Unicode(), cx_oracle._OracleNVarChar),
+            (Text(), cx_oracle._OracleText),
+            (UnicodeText(), cx_oracle._OracleUnicodeText),
+            (NCHAR(), cx_oracle._OracleNVarChar),
+            (oracle.RAW(50), cx_oracle._OracleRaw),
+        ]:
+            assert isinstance(start.dialect_impl(dialect), test), \
+                    "wanted %r got %r" % (test, start.dialect_impl(dialect))
+
+    def test_raw_compile(self):
+        self.assert_compile(oracle.RAW(), "RAW")
+        self.assert_compile(oracle.RAW(35), "RAW(35)")
+
+    def test_char_length(self):
+        self.assert_compile(VARCHAR(50),"VARCHAR(50 CHAR)")
+
+        oracle8dialect = oracle.dialect()
+        oracle8dialect.server_version_info = (8, 0)
+        self.assert_compile(VARCHAR(50),"VARCHAR(50)",dialect=oracle8dialect)
+
+        self.assert_compile(NVARCHAR(50),"NVARCHAR2(50)")
+        self.assert_compile(CHAR(50),"CHAR(50)")
+
+    def test_varchar_types(self):
+        dialect = oracle.dialect()
+        for typ, exp in [
+            (String(50), "VARCHAR2(50 CHAR)"),
+            (Unicode(50), "NVARCHAR2(50)"),
+            (NVARCHAR(50), "NVARCHAR2(50)"),
+            (VARCHAR(50), "VARCHAR(50 CHAR)"),
+            (oracle.NVARCHAR2(50), "NVARCHAR2(50)"),
+            (oracle.VARCHAR2(50), "VARCHAR2(50 CHAR)"),
+        ]:
+            self.assert_compile(typ, exp, dialect=dialect)
+
+class TypesTest(fixtures.TestBase):
+    __only_on__ = 'oracle'
+    __dialect__ = oracle.OracleDialect()
+
+
     @testing.fails_on('+zxjdbc', 'zxjdbc lacks the FIXED_CHAR dbapi type')
     def test_fixed_char(self):
         m = MetaData(testing.db)
@@ -708,25 +760,6 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         finally:
             t.drop()
 
-    def test_type_adapt(self):
-        dialect = cx_oracle.dialect()
-
-        for start, test in [
-            (Date(), cx_oracle._OracleDate),
-            (oracle.OracleRaw(), cx_oracle._OracleRaw),
-            (String(), String),
-            (VARCHAR(), cx_oracle._OracleString),
-            (DATE(), DATE),
-            (String(50), cx_oracle._OracleString),
-            (Unicode(), cx_oracle._OracleNVarChar),
-            (Text(), cx_oracle._OracleText),
-            (UnicodeText(), cx_oracle._OracleUnicodeText),
-            (NCHAR(), cx_oracle._OracleNVarChar),
-            (oracle.RAW(50), cx_oracle._OracleRaw),
-        ]:
-            assert isinstance(start.dialect_impl(dialect), test), \
-                    "wanted %r got %r" % (test, start.dialect_impl(dialect))
-
     @testing.requires.returning
     def test_int_not_float(self):
         m = MetaData(testing.db)
@@ -869,7 +902,8 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         foo.create()
 
         foo.insert().execute(
-            {'idata':5, 'ndata':decimal.Decimal("45.6"), 'ndata2':decimal.Decimal("45.0"), 
+            {'idata':5, 'ndata':decimal.Decimal("45.6"), 
+                    'ndata2':decimal.Decimal("45.0"), 
                     'nidata':decimal.Decimal('53'), 'fdata':45.68392},
         )
 
@@ -1019,10 +1053,6 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         for row in types_table.select().execute().fetchall():
             [row[k] for k in row.keys()]
 
-    def test_raw_compile(self):
-        self.assert_compile(oracle.RAW(), "RAW")
-        self.assert_compile(oracle.RAW(35), "RAW(35)")
-
     @testing.provide_metadata
     def test_raw_roundtrip(self):
         metadata = self.metadata
@@ -1061,16 +1091,8 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         eq_(res, data)
         assert isinstance(res, unicode)
 
-    def test_char_length(self):
-        self.assert_compile(VARCHAR(50),"VARCHAR(50 CHAR)")
-
-        oracle8dialect = oracle.dialect()
-        oracle8dialect.server_version_info = (8, 0)
-        self.assert_compile(VARCHAR(50),"VARCHAR(50)",dialect=oracle8dialect)
-
-        self.assert_compile(NVARCHAR(50),"NVARCHAR2(50)")
-        self.assert_compile(CHAR(50),"CHAR(50)")
 
+    def test_char_length(self):
         metadata = MetaData(testing.db)
         t1 = Table('t1', metadata,
               Column("c1", VARCHAR(50)),
@@ -1087,17 +1109,6 @@ class TypesTest(fixtures.TestBase, AssertsCompiledSQL):
         finally:
             t1.drop()
 
-    def test_varchar_types(self):
-        dialect = oracle.dialect()
-        for typ, exp in [
-            (String(50), "VARCHAR2(50 CHAR)"),
-            (Unicode(50), "NVARCHAR2(50)"),
-            (NVARCHAR(50), "NVARCHAR2(50)"),
-            (VARCHAR(50), "VARCHAR(50 CHAR)"),
-            (oracle.NVARCHAR2(50), "NVARCHAR2(50)"),
-            (oracle.VARCHAR2(50), "VARCHAR2(50 CHAR)"),
-        ]:
-            self.assert_compile(typ, exp, dialect=dialect)
 
     def test_longstring(self):
         metadata = MetaData(testing.db)