mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1b68ead8f8
Before: ``` LOG: execute <unnamed>: SELECT t.oid, t.typname FROM pg_type as t WHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'bool') LOG: execute <unnamed>: SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype FROM pg_type as t LEFT JOIN pg_range as r ON oid = rngtypid WHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'text', 'varchar', 'char', 'name', 'bpchar', 'bool', 'bit', 'varbit', 'timestamptz', 'date', 'money', 'bytea', 'point', 'hstore', 'json', 'jsonb', 'cidr', 'inet', 'uuid', 'xml', 'tsvector', 'macaddr', 'citext', 'ltree', 'interval', 'path', 'line', 'polygon', 'circle', 'lseg', 'box', 'time', 'timestamp', 'numeric') OR t.typtype IN ('r', 'e', 'd') OR t.typinput::varchar = 'array_in' OR t.typelem != 0 LOG: statement: SHOW TIME ZONE LOG: statement: SELECT 1 LOG: execute <unnamed>: SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','m') -- (r)elation/table, (v)iew, (m)aterialized view AND c.relname = 'accounts' AND n.nspname = ANY (current_schemas(false)) ``` After: ``` LOG: execute <unnamed>: SELECT t.oid, t.typname FROM pg_type as t WHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'bool') LOG: execute <unnamed>: SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype FROM pg_type as t LEFT JOIN pg_range as r ON oid = rngtypid WHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'text', 'varchar', 'char', 'name', 'bpchar', 'bool', 'bit', 'varbit', 'timestamptz', 'date', 'money', 'bytea', 'point', 'hstore', 'json', 'jsonb', 'cidr', 'inet', 'uuid', 'xml', 'tsvector', 'macaddr', 'citext', 'ltree', 'interval', 'path', 'line', 'polygon', 'circle', 'lseg', 'box', 'time', 'timestamp', 'numeric') OR t.typtype IN ('r', 'e', 'd') OR t.typinput::varchar = 'array_in' OR t.typelem != 0 LOG: statement: SHOW TIME ZONE LOG: statement: SELECT 1 LOG: execute <unnamed>: SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','m') -- (r)elation/table, (v)iew, (m)aterialized view AND c.relname = 'accounts' AND n.nspname = ANY (current_schemas(false)) ```
78 lines
2.4 KiB
Ruby
78 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
ActiveRecord::Schema.define do
|
|
if subsecond_precision_supported?
|
|
create_table :datetime_defaults, force: true do |t|
|
|
t.datetime :modified_datetime, default: -> { "CURRENT_TIMESTAMP" }
|
|
t.datetime :precise_datetime, precision: 6, default: -> { "CURRENT_TIMESTAMP(6)" }
|
|
end
|
|
|
|
create_table :timestamp_defaults, force: true do |t|
|
|
t.timestamp :nullable_timestamp
|
|
t.timestamp :modified_timestamp, 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.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
|
|
|
|
create_table :enum_tests, id: false, force: true do |t|
|
|
t.column :enum_column, "ENUM('text','blob','tiny','medium','long','unsigned','bigint')"
|
|
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
|