From 2f379e490d60f037ebcc53bb7dd676511ca1d4e5 Mon Sep 17 00:00:00 2001 From: Kai Groner Date: Mon, 26 Jan 2015 14:48:23 -0500 Subject: [PATCH] Test for partial index support in sqlite dialects. (cherry picked from commit 4a42bd5a2cba23782df7b6f98cadb7382d22498e) --- test/dialect/test_sqlite.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py index 72a7ee152d..43e9e2b1f5 100644 --- a/test/dialect/test_sqlite.py +++ b/test/dialect/test_sqlite.py @@ -8,7 +8,7 @@ from sqlalchemy.testing import eq_, assert_raises, \ assert_raises_message, is_ from sqlalchemy import Table, select, bindparam, Column,\ MetaData, func, extract, ForeignKey, text, DefaultClause, and_, \ - create_engine, UniqueConstraint + create_engine, UniqueConstraint, Index from sqlalchemy.types import Integer, String, Boolean, DateTime, Date, Time from sqlalchemy import types as sqltypes from sqlalchemy import event, inspect @@ -753,6 +753,27 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL): ")" ) + def test_create_partial_index(self): + m = MetaData() + tbl = Table('testtbl', m, Column('data', Integer)) + idx = Index('test_idx1', tbl.c.data, + sqlite_where=and_(tbl.c.data > 5, tbl.c.data < 10)) + + # test quoting and all that + + idx2 = Index('test_idx2', tbl.c.data, + sqlite_where=and_(tbl.c.data > 'a', tbl.c.data + < "b's")) + self.assert_compile(schema.CreateIndex(idx), + 'CREATE INDEX test_idx1 ON testtbl (data) ' + 'WHERE data > 5 AND data < 10', + dialect=sqlite.dialect()) + self.assert_compile(schema.CreateIndex(idx2), + "CREATE INDEX test_idx2 ON testtbl (data) " + "WHERE data > 'a' AND data < 'b''s'", + dialect=sqlite.dialect()) + + class InsertTest(fixtures.TestBase, AssertsExecutionResults): -- 2.47.3