]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
add exception handling
authorTobias Pfeiffer <tgp@preferred.jp>
Wed, 16 Nov 2022 08:17:26 +0000 (17:17 +0900)
committerTobias Pfeiffer <tgp@preferred.jp>
Wed, 16 Nov 2022 08:17:26 +0000 (17:17 +0900)
lib/sqlalchemy/dialects/sqlite/base.py

index d6defa41df60f8fcdd27d8a3cc05fb71c822f675..000ae8b41a3a474b0bf7b5b9c4045d416381b76e 100644 (file)
@@ -2684,11 +2684,21 @@ class SQLiteDialect(default.DefaultDialect):
                     "AND type = 'index'" % {"schema": schema_expr}
                 )
                 rs = connection.exec_driver_sql(s, (row[1],))
-                index_sql = rs.scalar()
-                predicate = partial_pred_re.search(index_sql).group(1)
-                indexes[-1]["dialect_options"]["sqlite_where"] = text(
-                    predicate
-                )
+                try:
+                    # in theory the code below shouldn't happen because
+                    # we know this is a partial index, so the definition
+                    # sql should be there and match the regex
+                    index_sql = rs.scalar()
+                    predicate = partial_pred_re.search(index_sql).group(1)
+                    indexes[-1]["dialect_options"]["sqlite_where"] = text(
+                        predicate
+                    )
+                except Exception:
+                    util.warn(
+                        "Failed to look up filter predicate of "
+                        "partial index %s" % row[1]
+                    )
+                    indexes.pop()
 
         # loop thru unique indexes to get the column names.
         for idx in list(indexes):