1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activerecord/test/schema/mysql2_specific_schema.rb
Roberto Miranda c2a6f618d2 Set precision 6 by default for datetime
💇‍♀️

Set precision 6 by detauls for datime columns when using sqlite3_adapter

 Set precision 6 by detauls for datime columns when using postgresql_adapter

Update activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

Co-authored-by: Zachary Scott <zzakscott@gmail.com>

Update tests precision

Add datetime precision by using the migration compatibility layer

Add default precision when adding new column for a table

Fix compatibility tests

Add changelog entry

Update postgres test cases

Custom type does not support precision

Typo ⌨️

Fix specific mysql2 schema

💇‍♀️
2021-06-25 09:23:01 +01:00

82 lines
2.5 KiB
Ruby

# frozen_string_literal: true
ActiveRecord::Schema.define do
if supports_datetime_with_precision?
create_table :datetime_defaults, force: true do |t|
t.datetime :modified_datetime, precision: nil, default: -> { "CURRENT_TIMESTAMP" }
t.datetime :precise_datetime, default: -> { "CURRENT_TIMESTAMP(6)" }
end
create_table :timestamp_defaults, force: true do |t|
t.timestamp :nullable_timestamp
t.timestamp :modified_timestamp, precision: nil, default: -> { "CURRENT_TIMESTAMP" }
t.timestamp :precise_timestamp, precision: 6, default: -> { "CURRENT_TIMESTAMP(6)" }
end
end
create_table :defaults, force: true do |t|
t.date :fixed_date, default: "2004-01-01"
t.datetime :fixed_time, default: "2004-01-01 00:00:00"
t.column :char1, "char(1)", default: "Y"
t.string :char2, limit: 50, default: "a varchar field"
if supports_default_expression?
t.binary :uuid, limit: 36, default: -> { "(uuid())" }
end
end
create_table :binary_fields, force: true do |t|
t.binary :var_binary, limit: 255
t.binary :var_binary_large, limit: 4095
t.tinyblob :tiny_blob
t.blob :normal_blob
t.mediumblob :medium_blob
t.longblob :long_blob
t.tinytext :tiny_text
t.text :normal_text
t.mediumtext :medium_text
t.longtext :long_text
t.binary :tiny_blob_2, size: :tiny
t.binary :medium_blob_2, size: :medium
t.binary :long_blob_2, size: :long
t.text :tiny_text_2, size: :tiny
t.text :medium_text_2, size: :medium
t.text :long_text_2, size: :long
t.index :var_binary
end
create_table :key_tests, force: true do |t|
t.string :awesome
t.string :pizza
t.string :snacks
t.index :awesome, type: :fulltext, name: "index_key_tests_on_awesome"
t.index :pizza, using: :btree, name: "index_key_tests_on_pizza"
t.index :snacks, name: "index_key_tests_on_snack"
end
create_table :collation_tests, id: false, force: true do |t|
t.string :string_cs_column, limit: 1, collation: "utf8mb4_bin"
t.string :string_ci_column, limit: 1, collation: "utf8mb4_general_ci"
t.binary :binary_column, limit: 1
end
execute "DROP PROCEDURE IF EXISTS ten"
execute <<~SQL
CREATE PROCEDURE ten() SQL SECURITY INVOKER
BEGIN
SELECT 10;
END
SQL
execute "DROP PROCEDURE IF EXISTS topics"
execute <<~SQL
CREATE PROCEDURE topics(IN num INT) SQL SECURITY INVOKER
BEGIN
SELECT * FROM topics LIMIT num;
END
SQL
end