]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
use a text() for sqlite_where, not str
authorTobias Pfeiffer <tgp@preferred.jp>
Tue, 15 Nov 2022 09:47:34 +0000 (18:47 +0900)
committerTobias Pfeiffer <tgp@preferred.jp>
Tue, 15 Nov 2022 09:47:34 +0000 (18:47 +0900)
lib/sqlalchemy/dialects/sqlite/base.py
test/dialect/test_sqlite.py

index cda8c7687ea4f971dbbdaa8cfa17490ec28cc815..26b9c8afc6ddf21efac57549d9efbece15d508ba 100644 (file)
@@ -893,6 +893,7 @@ from .json import JSONPathType
 from ... import exc
 from ... import schema as sa_schema
 from ... import sql
+from ... import text
 from ... import types as sqltypes
 from ... import util
 from ...engine import default
@@ -2684,7 +2685,9 @@ class SQLiteDialect(default.DefaultDialect):
                 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"] = predicate
+                indexes[-1]["dialect_options"]["sqlite_where"] = text(
+                    predicate
+                )
 
         # loop thru unique indexes to get the column names.
         for idx in list(indexes):
index a5e24b382da13ad4a8b1ec40b44ce111a6183af3..9425ce1e4594a880a3823714bb98f2a9756c4016 100644 (file)
@@ -4,6 +4,7 @@
 import datetime
 import json
 import os
+from unittest.mock import ANY
 
 from sqlalchemy import and_
 from sqlalchemy import bindparam
@@ -2311,28 +2312,23 @@ class ConstraintReflectionTest(fixtures.TestBase):
             conn.exec_driver_sql(
                 "create unique index ix_partial on foo_with_partial_index (x) where y > 10"
             )
-            conn.exec_driver_sql(
-                "create unique index ix_no_partial on foo_with_partial_index (x)"
-            )
 
             inspector = inspect(conn)
+            indexes = inspector.get_indexes("foo_with_partial_index")
             eq_(
-                inspector.get_indexes("foo_with_partial_index"),
+                indexes,
                 [
-                    {
-                        "unique": 1,
-                        "name": "ix_no_partial",
-                        "column_names": ["x"],
-                        "dialect_options": {},
-                    },
                     {
                         "unique": 1,
                         "name": "ix_partial",
                         "column_names": ["x"],
-                        "dialect_options": {"sqlite_where": "y > 10"},
-                    },
+                        "dialect_options": {"sqlite_where": ANY},
+                    }
                 ],
             )
+            assert (
+                indexes[0]["dialect_options"]["sqlite_where"].text == "y > 10"
+            )
 
     def test_unique_constraint_named(self):
         inspector = inspect(testing.db)