aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-07-23 15:06:21 -0700
committerStan Hu <stanhu@gmail.com>2019-07-24 20:21:35 -0700
commitec0dc76c06a0b7afadab7ca5629a8d6a2f3d6370 (patch)
tree12e543cffe1cc26968d6263e8b32b95d3ca9aa9c /activerecord/test
parentd3327ca40eaea734b2302c7a9ffa0360033a7484 (diff)
downloadrails-ec0dc76c06a0b7afadab7ca5629a8d6a2f3d6370.tar.gz
rails-ec0dc76c06a0b7afadab7ca5629a8d6a2f3d6370.tar.bz2
rails-ec0dc76c06a0b7afadab7ca5629a8d6a2f3d6370.zip
Fix index_exists? for PostgreSQL expression indexes
Previously Rails expected indexes to be an array of columns, but for PostgreSQL a expression index can just be a string of text. Handle this by forcing `Index#columns` to be an Array inside `index_exists?`. Closes #36739
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
index d99593817a..830c0892d3 100644
--- a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
@@ -253,9 +253,11 @@ module ActiveRecord
def test_expression_index
with_example_table do
- @connection.add_index "ex", "mod(id, 10), abs(number)", name: "expression"
+ expr = "mod(id, 10), abs(number)"
+ @connection.add_index "ex", expr, name: "expression"
index = @connection.indexes("ex").find { |idx| idx.name == "expression" }
- assert_equal "mod(id, 10), abs(number)", index.columns
+ assert_equal expr, index.columns
+ assert_equal true, @connection.index_exists?("ex", expr, name: "expression")
end
end