提交 f4e2807a 编写于 作者: R Ryuta Kamizono

Use `information_schema` to extract `generation_expression` for MariaDB

Since MariaDB 10.2.5, `information_schema` supports Virtual Columns.

Fixes #29670.
上级 c9b514cd
......@@ -53,7 +53,7 @@ def schema_collation(column)
end
def extract_expression_for_virtual_column(column)
if mariadb?
if mariadb? && version < "10.2.5"
create_table_info = create_table_info(column.table_name)
if %r/#{quote_column_name(column.name)} #{Regexp.quote(column.sql_type)}(?: COLLATE \w+)? AS \((?<expression>.+?)\) #{column.extra}/ =~ create_table_info
$~[:expression].inspect
......
......@@ -52,7 +52,7 @@ def test_change_table
def test_schema_dumping
output = dump_table_schema("virtual_columns")
assert_match(/t\.virtual\s+"upper_name",\s+type: :string,\s+as: "UPPER\(`name`\)"$/i, output)
assert_match(/t\.virtual\s+"upper_name",\s+type: :string,\s+as: "(?:UPPER|UCASE)\(`name`\)"$/i, output)
assert_match(/t\.virtual\s+"name_length",\s+type: :integer,\s+as: "LENGTH\(`name`\)",\s+stored: true$/i, output)
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册