Class: ActiveRecord::ConnectionAdapters::SQLite3::SchemaDumper
Do not use. This class is for internal use only.
Constant Summary
Class Attribute Summary
| .chk_ignore_pattern |
Specify a custom regular expression matching check constraints which name should not be dumped to db/schema.rb. |
| .excl_ignore_pattern |
Specify a custom regular expression matching exclusion constraints which name should not be dumped to db/schema.rb. |
| .fk_ignore_pattern |
Specify a custom regular expression matching foreign keys which name should not be dumped to db/schema.rb. |
| .ignore_tables |
A list of tables which should not be dumped to the schema. |
| .unique_ignore_pattern |
Specify a custom regular expression matching unique constraints which name should not be dumped to db/schema.rb. |
Class Method Summary
Instance Attribute Summary
Instance Method Summary
|
#column_spec,
#column_spec_for_primary_key,
#default_primary_key?,
#explicit_primary_key_default?,
#prepare_column_options,
#schema_collation,
#schema_default,
#schema_expression,
#schema_limit,
#schema_precision,
#schema_scale,
#schema_type,
#schema_type_with_virtual
|
|
#dump,
#check_constraints_in_create,
#check_parts,
#define_params,
|
| #extensions |
|
|
#foreign_keys,
#format_colspec,
#format_index_parts,
#format_options,
|
| #formatted_version |
turns 20170404131909 into “2017_04_04_131909”. |
|
#header,
#ignored?,
#index_parts,
|
| #indexes |
Keep it for indexing materialized views. |
|
#indexes_in_create,
#relation_name,
#remove_prefix_and_suffix,
|
| #schemas |
|
|
#table,
#tables,
#trailer,
|
| #types |
|
| #virtual_tables |
virtual tables are only supported by SQLite. |
Constructor Details
This class inherits a constructor from ActiveRecord::SchemaDumper
Instance Attribute Details
#primary_key_has_autoincrement? ⇒ Boolean
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 29
def primary_key_has_autoincrement?
return false unless table_name
table_sql = @connection.query_value(<<~SQL, "SCHEMA")
SELECT sql FROM sqlite_master WHERE name = #{@connection.quote(table_name)} AND type = 'table'
UNION ALL
SELECT sql FROM sqlite_temp_master WHERE name = #{@connection.quote(table_name)} AND type = 'table'
SQL
table_sql.to_s.match?(/\bAUTOINCREMENT\b/i)
end
Instance Method Details
#default_primary_key?(column) ⇒ Boolean
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 21
def default_primary_key?(column)
schema_type(column) == :integer && primary_key_has_autoincrement?
end
#explicit_primary_key_default?(column) ⇒ Boolean
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 25
def explicit_primary_key_default?(column)
column.bigint? || (column.type == :integer && !primary_key_has_autoincrement?)
end
#extract_expression_for_virtual_column(column)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 53
def extract_expression_for_virtual_column(column)
column.default_function.inspect
end
#prepare_column_options(column)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 41
def prepare_column_options(column)
spec = super
if @connection.supports_virtual_columns? && column.virtual?
spec[:as] = extract_expression_for_virtual_column(column)
spec[:stored] = column.virtual_stored?
spec = { type: schema_type(column).inspect }.merge!(spec)
end
spec
end
#virtual_tables(stream)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb', line 8
def virtual_tables(stream)
virtual_tables = @connection.virtual_tables
if virtual_tables.any?
stream.puts
stream.puts " # Virtual tables defined in this database."
stream.puts " # Note that virtual tables may not work with other database engines. Be careful if changing database."
virtual_tables.sort.each do |table_name, options|
module_name, arguments = options
stream.puts " create_virtual_table #{table_name.inspect}, #{module_name.inspect}, #{arguments.split(", ").inspect}"
end
end
end