From 3a36cb08687aa337efca4dff12d20901d4d8029e Mon Sep 17 00:00:00 2001 From: gkemmey Date: Thu, 13 Sep 2018 16:00:51 -0400 Subject: SQLite3 adapter supports expression indexes --- .../cases/adapters/sqlite3/sqlite3_adapter_test.rb | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb') diff --git a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb index d1d4d545a3..320f6efd56 100644 --- a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +++ b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb @@ -345,6 +345,41 @@ module ActiveRecord end end + if ActiveRecord::Base.connection.supports_expression_index? + def test_expression_index + with_example_table do + @conn.add_index "ex", "abs(number)", name: "expression" + index = @conn.indexes("ex").find { |idx| idx.name == "expression" } + assert_equal %w{ abs(number) }, index.columns + end + end + + def test_expression_index_with_where + with_example_table do + @conn.add_index "ex", "id % 10, abs(number)", name: "expression", where: "id > 1000" + index = @conn.indexes("ex").find { |idx| idx.name == "expression" } + assert_equal ["id % 10", "abs(number)"], index.columns + assert_equal "id > 1000", index.where + end + end + + def test_complicated_expression + with_example_table do + @conn.add_index "ex", "id % 10, (CASE WHEN number > 0 THEN abs(number) END)", name: "expression" + index = @conn.indexes("ex").find { |idx| idx.name == "expression" } + assert_equal ["id % 10", "(CASE WHEN number > 0 THEN abs(number) END)"], index.columns + end + end + + def test_not_everything_an_expression + with_example_table do + @conn.add_index "ex", %w{ id abs(number) }, name: "expression" + index = @conn.indexes("ex").find { |idx| idx.name == "expression" } + assert_equal %w{ id abs(number) }.sort, index.columns.sort + end + end + end + def test_primary_key with_example_table do assert_equal "id", @conn.primary_key("ex") -- cgit v1.2.3