]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- PG Index reflection won't fail when an index with
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Feb 2009 00:22:01 +0000 (00:22 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Feb 2009 00:22:01 +0000 (00:22 +0000)
multiple expressions is encountered.

CHANGES
lib/sqlalchemy/databases/postgres.py
test/dialect/postgres.py

diff --git a/CHANGES b/CHANGES
index bc3ce8df601ad51f713316f8638568831ab56694..4ffa3a86a3b95880daa542d6c15e818f6cd3099f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -32,7 +32,11 @@ CHANGES
       creates an arbitrarily large number of engines
       or dialects.   There is a small performance penalty
       which will be resolved in 0.6.  [ticket:1299]
-      
+
+- postgres
+    - Index reflection won't fail when an index with 
+      multiple expressions is encountered.
+    
 0.5.2
 ======
 
index 155b478aff9a604eaa3ab1bd2c6c6c5f2e7cee31..8caadfaf8b5bfc3e073ea52e1a5bef1ef3d5b639 100644 (file)
@@ -638,10 +638,11 @@ class PGDialect(default.DefaultDialect):
         for row in c.fetchall():
             idx_name, unique, expr, prd, col = row
 
-            if expr and not idx_name == sv_idx_name:
-                util.warn(
-                  "Skipped unsupported reflection of expression-based index %s"
-                  % idx_name)
+            if expr:
+                if not idx_name == sv_idx_name:
+                    util.warn(
+                      "Skipped unsupported reflection of expression-based index %s"
+                      % idx_name)
                 sv_idx_name = idx_name
                 continue
             if prd and not idx_name == sv_idx_name:
index 206a28003dfaf2f4e55ecd09627d0ddde5b184e2..4b1ab91788a04e4f700f10e284cf9427b6081009 100644 (file)
@@ -631,15 +631,23 @@ class MiscTest(TestBase, AssertsExecutionResults):
         m1 = MetaData(testing.db)
         t1 = Table('party', m1,
             Column('id', String(10), nullable=False),
-            Column('name', String(20), index=True)
+            Column('name', String(20), index=True), 
+            Column('aname', String(20))
             )
         m1.create_all()
+        
         testing.db.execute("""
           create index idx1 on party ((id || name))
         """, None) 
         testing.db.execute("""
           create unique index idx2 on party (id) where name = 'test'
         """, None)
+        
+        testing.db.execute("""
+            create index idx3 on party using btree
+                (lower(name::text), lower(aname::text))
+        """)
+        
         try:
             m2 = MetaData(testing.db)
 
@@ -655,6 +663,7 @@ class MiscTest(TestBase, AssertsExecutionResults):
             # Make sure indexes are in the order we expect them in
             tmp = [(idx.name, idx) for idx in t2.indexes]
             tmp.sort()
+            
             r1, r2 = [idx[1] for idx in tmp]
 
             assert r1.name == 'idx2'