Skip to content

Commit cd5f3bb

Browse files
committed
Add version condition
1 parent d6e2bc7 commit cd5f3bb

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

activerecord/test/cases/adapters/postgresql/virtual_column_test.rb

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,29 @@ class VirtualColumn < ActiveRecord::Base
1212

1313
def setup
1414
@connection = ActiveRecord::Base.lease_connection
15-
@connection.create_table :virtual_columns, force: true do |t|
16-
t.string :name
17-
t.virtual :upper_name, type: :string, as: "UPPER(name)", stored: true
18-
t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true
19-
t.virtual :name_octet_length, type: :integer, as: "OCTET_LENGTH(name)", stored: true
20-
t.integer :column1
21-
t.virtual :column2, type: :integer, as: "column1 + 1", stored: true
22-
t.virtual :column3, type: :integer, as: "column1 + 2", stored: false # only if PostgreSQL >= 18.0
23-
t.virtual :column4, type: :integer, as: "column1 + 3" # only if PostgreSQL >= 18.0
15+
if @connection.database_version >= 18_000
16+
@connection.create_table :virtual_columns, force: true do |t|
17+
t.string :name
18+
t.virtual :upper_name, type: :string, as: "UPPER(name)", stored: true
19+
t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true
20+
t.virtual :name_octet_length, type: :integer, as: "OCTET_LENGTH(name)", stored: true
21+
t.integer :column1
22+
t.virtual :column2, type: :integer, as: "column1 + 1", stored: true
23+
t.virtual :column3, type: :integer, as: "column1 + 2", stored: false # only if PostgreSQL >= 18.0
24+
t.virtual :column4, type: :integer, as: "column1 + 3" # only if PostgreSQL >= 18.0
25+
t.virtual :invalid_definition, type: :string, as: "LOWER(name)", stored: true # only if PostgreSQL >= 18.0
26+
end
27+
else
28+
@connection.create_table :virtual_columns, force: true do |t|
29+
t.string :name
30+
t.virtual :upper_name, type: :string, as: "UPPER(name)", stored: true
31+
t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true
32+
t.virtual :name_octet_length, type: :integer, as: "OCTET_LENGTH(name)", stored: true
33+
t.integer :column1
34+
t.virtual :column2, type: :integer, as: "column1 + 1", stored: true
35+
end
2436
end
37+
2538
VirtualColumn.create(name: "Rails")
2639
end
2740

@@ -108,8 +121,10 @@ def test_schema_dumping
108121
assert_match(/t\.virtual\s+"name_length",\s+type: :integer,\s+as: "length\(\(name\)::text\)", stored: true$/i, output)
109122
assert_match(/t\.virtual\s+"name_octet_length",\s+type: :integer,\s+as: "octet_length\(\(name\)::text\)", stored: true$/i, output)
110123
assert_match(/t\.virtual\s+"column2",\s+type: :integer,\s+as: "\(column1 \+ 1\)", stored: true$/i, output)
111-
assert_match(/t\.virtual\s+"column3",\s+type: :integer,\s+as: "\(column1 \+ 2\)", stored: false$/i, output)
112-
assert_match(/t\.virtual\s+"column4",\s+type: :integer,\s+as: "\(column1 \+ 3\)", stored: false$/i, output)
124+
if ActiveRecord::Base.lease_connection.database_version >= 18_000
125+
assert_match(/t\.virtual\s+"column3",\s+type: :integer,\s+as: "\(column1 \+ 2\)", stored: false$/i, output)
126+
assert_match(/t\.virtual\s+"column4",\s+type: :integer,\s+as: "\(column1 \+ 3\)", stored: false$/i, output)
127+
end
113128
end
114129

115130
def test_build_fixture_sql

0 commit comments

Comments
 (0)