mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Make internal methods to private
This commit is contained in:
parent
40ba03adaa
commit
e4108fc619
12 changed files with 181 additions and 185 deletions
|
@ -61,17 +61,6 @@ module ActiveRecord
|
||||||
lookup_cast_type(column.sql_type)
|
lookup_cast_type(column.sql_type)
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_type_metadata(sql_type)
|
|
||||||
cast_type = lookup_cast_type(sql_type)
|
|
||||||
SqlTypeMetadata.new(
|
|
||||||
sql_type: sql_type,
|
|
||||||
type: cast_type.type,
|
|
||||||
limit: cast_type.limit,
|
|
||||||
precision: cast_type.precision,
|
|
||||||
scale: cast_type.scale,
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Quotes a string, escaping any ' (single quote) and \ (backslash)
|
# Quotes a string, escaping any ' (single quote) and \ (backslash)
|
||||||
# characters.
|
# characters.
|
||||||
def quote_string(s)
|
def quote_string(s)
|
||||||
|
@ -161,6 +150,10 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def lookup_cast_type(sql_type)
|
||||||
|
type_map.lookup(sql_type)
|
||||||
|
end
|
||||||
|
|
||||||
def id_value_for_database(value)
|
def id_value_for_database(value)
|
||||||
if primary_key = value.class.primary_key
|
if primary_key = value.class.primary_key
|
||||||
value.instance_variable_get(:@attributes)[primary_key].value_for_database
|
value.instance_variable_get(:@attributes)[primary_key].value_for_database
|
||||||
|
|
|
@ -133,5 +133,6 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
SchemaCreation = AbstractAdapter::SchemaCreation # :nodoc:
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -976,16 +976,6 @@ module ActiveRecord
|
||||||
foreign_key_for(from_table, options_or_to_table).present?
|
foreign_key_for(from_table, options_or_to_table).present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def foreign_key_for(from_table, options_or_to_table = {}) # :nodoc:
|
|
||||||
return unless supports_foreign_keys?
|
|
||||||
foreign_keys(from_table).detect { |fk| fk.defined_for? options_or_to_table }
|
|
||||||
end
|
|
||||||
|
|
||||||
def foreign_key_for!(from_table, options_or_to_table = {}) # :nodoc:
|
|
||||||
foreign_key_for(from_table, options_or_to_table) || \
|
|
||||||
raise(ArgumentError, "Table '#{from_table}' has no foreign key for #{options_or_to_table}")
|
|
||||||
end
|
|
||||||
|
|
||||||
def foreign_key_column_for(table_name) # :nodoc:
|
def foreign_key_column_for(table_name) # :nodoc:
|
||||||
prefix = Base.table_name_prefix
|
prefix = Base.table_name_prefix
|
||||||
suffix = Base.table_name_suffix
|
suffix = Base.table_name_suffix
|
||||||
|
@ -1005,19 +995,6 @@ module ActiveRecord
|
||||||
insert_versions_sql(versions)
|
insert_versions_sql(versions)
|
||||||
end
|
end
|
||||||
|
|
||||||
def insert_versions_sql(versions) # :nodoc:
|
|
||||||
sm_table = quote_table_name(ActiveRecord::SchemaMigration.table_name)
|
|
||||||
|
|
||||||
if versions.is_a?(Array)
|
|
||||||
sql = "INSERT INTO #{sm_table} (version) VALUES\n"
|
|
||||||
sql << versions.map { |v| "(#{quote(v)})" }.join(",\n")
|
|
||||||
sql << ";\n\n"
|
|
||||||
sql
|
|
||||||
else
|
|
||||||
"INSERT INTO #{sm_table} (version) VALUES (#{quote(versions)});"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def initialize_schema_migrations_table # :nodoc:
|
def initialize_schema_migrations_table # :nodoc:
|
||||||
ActiveRecord::SchemaMigration.create_table
|
ActiveRecord::SchemaMigration.create_table
|
||||||
end
|
end
|
||||||
|
@ -1263,6 +1240,10 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def schema_creation
|
||||||
|
SchemaCreation.new(self)
|
||||||
|
end
|
||||||
|
|
||||||
def create_table_definition(*args)
|
def create_table_definition(*args)
|
||||||
TableDefinition.new(*args)
|
TableDefinition.new(*args)
|
||||||
end
|
end
|
||||||
|
@ -1271,6 +1252,17 @@ module ActiveRecord
|
||||||
AlterTable.new create_table_definition(name)
|
AlterTable.new create_table_definition(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fetch_type_metadata(sql_type)
|
||||||
|
cast_type = lookup_cast_type(sql_type)
|
||||||
|
SqlTypeMetadata.new(
|
||||||
|
sql_type: sql_type,
|
||||||
|
type: cast_type.type,
|
||||||
|
limit: cast_type.limit,
|
||||||
|
precision: cast_type.precision,
|
||||||
|
scale: cast_type.scale,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def index_column_names(column_names)
|
def index_column_names(column_names)
|
||||||
if column_names.is_a?(String) && /\W/.match?(column_names)
|
if column_names.is_a?(String) && /\W/.match?(column_names)
|
||||||
column_names
|
column_names
|
||||||
|
@ -1295,6 +1287,24 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def foreign_key_for(from_table, options_or_to_table = {})
|
||||||
|
return unless supports_foreign_keys?
|
||||||
|
foreign_keys(from_table).detect { |fk| fk.defined_for? options_or_to_table }
|
||||||
|
end
|
||||||
|
|
||||||
|
def foreign_key_for!(from_table, options_or_to_table = {})
|
||||||
|
foreign_key_for(from_table, options_or_to_table) || \
|
||||||
|
raise(ArgumentError, "Table '#{from_table}' has no foreign key for #{options_or_to_table}")
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_foreign_key_action(specifier)
|
||||||
|
case specifier
|
||||||
|
when "CASCADE"; :cascade
|
||||||
|
when "SET NULL"; :nullify
|
||||||
|
when "RESTRICT"; :restrict
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def validate_index_length!(table_name, new_name, internal = false)
|
def validate_index_length!(table_name, new_name, internal = false)
|
||||||
max_index_length = internal ? index_name_length : allowed_index_name_length
|
max_index_length = internal ? index_name_length : allowed_index_name_length
|
||||||
|
|
||||||
|
@ -1315,6 +1325,19 @@ module ActiveRecord
|
||||||
options.is_a?(Hash) && options.key?(:name) && options.except(:name, :algorithm).empty?
|
options.is_a?(Hash) && options.key?(:name) && options.except(:name, :algorithm).empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def insert_versions_sql(versions)
|
||||||
|
sm_table = quote_table_name(ActiveRecord::SchemaMigration.table_name)
|
||||||
|
|
||||||
|
if versions.is_a?(Array)
|
||||||
|
sql = "INSERT INTO #{sm_table} (version) VALUES\n"
|
||||||
|
sql << versions.map { |v| "(#{quote(v)})" }.join(",\n")
|
||||||
|
sql << ";\n\n"
|
||||||
|
sql
|
||||||
|
else
|
||||||
|
"INSERT INTO #{sm_table} (version) VALUES (#{quote(versions)});"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def data_source_sql(name = nil, type: nil)
|
def data_source_sql(name = nil, type: nil)
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
end
|
end
|
||||||
|
|
|
@ -74,7 +74,7 @@ module ActiveRecord
|
||||||
SIMPLE_INT = /\A\d+\z/
|
SIMPLE_INT = /\A\d+\z/
|
||||||
|
|
||||||
attr_accessor :visitor, :pool
|
attr_accessor :visitor, :pool
|
||||||
attr_reader :schema_cache, :owner, :logger
|
attr_reader :schema_cache, :owner, :logger, :prepared_statements
|
||||||
alias :in_use? :owner
|
alias :in_use? :owner
|
||||||
|
|
||||||
def self.type_cast_config_to_integer(config)
|
def self.type_cast_config_to_integer(config)
|
||||||
|
@ -93,8 +93,6 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :prepared_statements
|
|
||||||
|
|
||||||
def initialize(connection, logger = nil, config = {}) # :nodoc:
|
def initialize(connection, logger = nil, config = {}) # :nodoc:
|
||||||
super()
|
super()
|
||||||
|
|
||||||
|
@ -142,26 +140,10 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def collector
|
|
||||||
if prepared_statements
|
|
||||||
SQLString.new
|
|
||||||
else
|
|
||||||
BindCollector.new
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def arel_visitor # :nodoc:
|
|
||||||
Arel::Visitors::ToSql.new(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def valid_type?(type) # :nodoc:
|
def valid_type?(type) # :nodoc:
|
||||||
!native_database_types[type].nil?
|
!native_database_types[type].nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def schema_creation
|
|
||||||
SchemaCreation.new self
|
|
||||||
end
|
|
||||||
|
|
||||||
# this method must only be called while holding connection pool's mutex
|
# this method must only be called while holding connection pool's mutex
|
||||||
def lease
|
def lease
|
||||||
if in_use?
|
if in_use?
|
||||||
|
@ -475,14 +457,6 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_column(name, default, sql_type_metadata, null, table_name, default_function = nil, collation = nil) # :nodoc:
|
|
||||||
Column.new(name, default, sql_type_metadata, null, table_name, default_function, collation)
|
|
||||||
end
|
|
||||||
|
|
||||||
def lookup_cast_type(sql_type) # :nodoc:
|
|
||||||
type_map.lookup(sql_type)
|
|
||||||
end
|
|
||||||
|
|
||||||
def column_name_for_operation(operation, node) # :nodoc:
|
def column_name_for_operation(operation, node) # :nodoc:
|
||||||
visitor.accept(node, collector).value
|
visitor.accept(node, collector).value
|
||||||
end
|
end
|
||||||
|
@ -629,6 +603,18 @@ module ActiveRecord
|
||||||
columns(table_name).detect { |c| c.name == column_name } ||
|
columns(table_name).detect { |c| c.name == column_name } ||
|
||||||
raise(ActiveRecordError, "No such column: #{table_name}.#{column_name}")
|
raise(ActiveRecordError, "No such column: #{table_name}.#{column_name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def collector
|
||||||
|
if prepared_statements
|
||||||
|
SQLString.new
|
||||||
|
else
|
||||||
|
BindCollector.new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def arel_visitor
|
||||||
|
Arel::Visitors::ToSql.new(self)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,14 +22,6 @@ module ActiveRecord
|
||||||
MySQL::Table.new(table_name, base)
|
MySQL::Table.new(table_name, base)
|
||||||
end
|
end
|
||||||
|
|
||||||
def schema_creation # :nodoc:
|
|
||||||
MySQL::SchemaCreation.new(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def arel_visitor # :nodoc:
|
|
||||||
Arel::Visitors::MySQL.new(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# :singleton-method:
|
# :singleton-method:
|
||||||
# By default, the Mysql2Adapter will consider all columns of type <tt>tinyint(1)</tt>
|
# By default, the Mysql2Adapter will consider all columns of type <tt>tinyint(1)</tt>
|
||||||
|
@ -171,10 +163,6 @@ module ActiveRecord
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_column(*args) #:nodoc:
|
|
||||||
MySQL::Column.new(*args)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Must return the MySQL error number from the exception, if the exception has an
|
# Must return the MySQL error number from the exception, if the exception has an
|
||||||
# error number.
|
# error number.
|
||||||
def error_number(exception) # :nodoc:
|
def error_number(exception) # :nodoc:
|
||||||
|
@ -346,16 +334,6 @@ module ActiveRecord
|
||||||
indexes
|
indexes
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_column_from_field(table_name, field) # :nodoc:
|
|
||||||
type_metadata = fetch_type_metadata(field[:Type], field[:Extra])
|
|
||||||
if type_metadata.type == :datetime && field[:Default] == "CURRENT_TIMESTAMP"
|
|
||||||
default, default_function = nil, field[:Default]
|
|
||||||
else
|
|
||||||
default, default_function = field[:Default], nil
|
|
||||||
end
|
|
||||||
new_column(field[:Field], default, type_metadata, field[:Null] == "YES", table_name, default_function, field[:Collation], comment: field[:Comment].presence)
|
|
||||||
end
|
|
||||||
|
|
||||||
def table_comment(table_name) # :nodoc:
|
def table_comment(table_name) # :nodoc:
|
||||||
scope = quoted_scope(table_name)
|
scope = quoted_scope(table_name)
|
||||||
|
|
||||||
|
@ -658,10 +636,6 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_type_metadata(sql_type, extra = "")
|
|
||||||
MySQL::TypeMetadata.new(super(sql_type), extra: extra)
|
|
||||||
end
|
|
||||||
|
|
||||||
def add_index_length(quoted_columns, **options)
|
def add_index_length(quoted_columns, **options)
|
||||||
if length = options[:length]
|
if length = options[:length]
|
||||||
case length
|
case length
|
||||||
|
@ -864,19 +838,12 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_foreign_key_action(specifier) # :nodoc:
|
|
||||||
case specifier
|
|
||||||
when "CASCADE"; :cascade
|
|
||||||
when "SET NULL"; :nullify
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def create_table_info(table_name) # :nodoc:
|
def create_table_info(table_name) # :nodoc:
|
||||||
select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
|
select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_table_definition(*args) # :nodoc:
|
def arel_visitor
|
||||||
MySQL::TableDefinition.new(*args)
|
Arel::Visitors::MySQL.new(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
def mismatched_foreign_key(message)
|
def mismatched_foreign_key(message)
|
||||||
|
|
|
@ -3,6 +3,42 @@ module ActiveRecord
|
||||||
module MySQL
|
module MySQL
|
||||||
module SchemaStatements # :nodoc:
|
module SchemaStatements # :nodoc:
|
||||||
private
|
private
|
||||||
|
def schema_creation
|
||||||
|
MySQL::SchemaCreation.new(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_table_definition(*args)
|
||||||
|
MySQL::TableDefinition.new(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new_column_from_field(table_name, field)
|
||||||
|
type_metadata = fetch_type_metadata(field[:Type], field[:Extra])
|
||||||
|
if type_metadata.type == :datetime && field[:Default] == "CURRENT_TIMESTAMP"
|
||||||
|
default, default_function = nil, field[:Default]
|
||||||
|
else
|
||||||
|
default, default_function = field[:Default], nil
|
||||||
|
end
|
||||||
|
|
||||||
|
MySQL::Column.new(
|
||||||
|
field[:Field],
|
||||||
|
default,
|
||||||
|
type_metadata,
|
||||||
|
field[:Null] == "YES",
|
||||||
|
table_name,
|
||||||
|
default_function,
|
||||||
|
field[:Collation],
|
||||||
|
comment: field[:Comment].presence
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def fetch_type_metadata(sql_type, extra = "")
|
||||||
|
MySQL::TypeMetadata.new(super(sql_type), extra: extra)
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_foreign_key_action(specifier)
|
||||||
|
super unless specifier == "RESTRICT"
|
||||||
|
end
|
||||||
|
|
||||||
def data_source_sql(name = nil, type: nil)
|
def data_source_sql(name = nil, type: nil)
|
||||||
scope = quoted_scope(name, type: type)
|
scope = quoted_scope(name, type: type)
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,9 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def lookup_cast_type(sql_type)
|
||||||
|
super(select_value("SELECT #{quote(sql_type)}::regtype::oid", "SCHEMA").to_i)
|
||||||
|
end
|
||||||
|
|
||||||
def _quote(value)
|
def _quote(value)
|
||||||
case value
|
case value
|
||||||
|
|
|
@ -144,25 +144,6 @@ module ActiveRecord
|
||||||
end.compact
|
end.compact
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_column_from_field(table_name, field) # :nondoc:
|
|
||||||
column_name, type, default, notnull, oid, fmod, collation, comment = field
|
|
||||||
oid = oid.to_i
|
|
||||||
fmod = fmod.to_i
|
|
||||||
type_metadata = fetch_type_metadata(column_name, type, oid, fmod)
|
|
||||||
default_value = extract_value_from_default(default)
|
|
||||||
default_function = extract_default_function(default_value, default)
|
|
||||||
PostgreSQLColumn.new(
|
|
||||||
column_name,
|
|
||||||
default_value,
|
|
||||||
type_metadata,
|
|
||||||
!notnull,
|
|
||||||
table_name,
|
|
||||||
default_function,
|
|
||||||
collation,
|
|
||||||
comment: comment.presence
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def table_options(table_name) # :nodoc:
|
def table_options(table_name) # :nodoc:
|
||||||
if comment = table_comment(table_name)
|
if comment = table_comment(table_name)
|
||||||
{ comment: comment }
|
{ comment: comment }
|
||||||
|
@ -538,14 +519,6 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_foreign_key_action(specifier) # :nodoc:
|
|
||||||
case specifier
|
|
||||||
when "c"; :cascade
|
|
||||||
when "n"; :nullify
|
|
||||||
when "r"; :restrict
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Maps logical Rails types to PostgreSQL-specific data types.
|
# Maps logical Rails types to PostgreSQL-specific data types.
|
||||||
def type_to_sql(type, limit: nil, precision: nil, scale: nil, array: nil, **) # :nodoc:
|
def type_to_sql(type, limit: nil, precision: nil, scale: nil, array: nil, **) # :nodoc:
|
||||||
sql = \
|
sql = \
|
||||||
|
@ -593,19 +566,53 @@ module ActiveRecord
|
||||||
[super, *order_columns].join(", ")
|
[super, *order_columns].join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_type_metadata(column_name, sql_type, oid, fmod)
|
|
||||||
cast_type = get_oid_type(oid, fmod, column_name, sql_type)
|
|
||||||
simple_type = SqlTypeMetadata.new(
|
|
||||||
sql_type: sql_type,
|
|
||||||
type: cast_type.type,
|
|
||||||
limit: cast_type.limit,
|
|
||||||
precision: cast_type.precision,
|
|
||||||
scale: cast_type.scale,
|
|
||||||
)
|
|
||||||
PostgreSQLTypeMetadata.new(simple_type, oid: oid, fmod: fmod)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def schema_creation
|
||||||
|
PostgreSQL::SchemaCreation.new(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_table_definition(*args)
|
||||||
|
PostgreSQL::TableDefinition.new(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new_column_from_field(table_name, field)
|
||||||
|
column_name, type, default, notnull, oid, fmod, collation, comment = field
|
||||||
|
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
|
||||||
|
default_value = extract_value_from_default(default)
|
||||||
|
default_function = extract_default_function(default_value, default)
|
||||||
|
|
||||||
|
PostgreSQLColumn.new(
|
||||||
|
column_name,
|
||||||
|
default_value,
|
||||||
|
type_metadata,
|
||||||
|
!notnull,
|
||||||
|
table_name,
|
||||||
|
default_function,
|
||||||
|
collation,
|
||||||
|
comment: comment.presence
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def fetch_type_metadata(column_name, sql_type, oid, fmod)
|
||||||
|
cast_type = get_oid_type(oid, fmod, column_name, sql_type)
|
||||||
|
simple_type = SqlTypeMetadata.new(
|
||||||
|
sql_type: sql_type,
|
||||||
|
type: cast_type.type,
|
||||||
|
limit: cast_type.limit,
|
||||||
|
precision: cast_type.precision,
|
||||||
|
scale: cast_type.scale,
|
||||||
|
)
|
||||||
|
PostgreSQLTypeMetadata.new(simple_type, oid: oid, fmod: fmod)
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_foreign_key_action(specifier)
|
||||||
|
case specifier
|
||||||
|
when "c"; :cascade
|
||||||
|
when "n"; :nullify
|
||||||
|
when "r"; :restrict
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def data_source_sql(name = nil, type: nil)
|
def data_source_sql(name = nil, type: nil)
|
||||||
scope = quoted_scope(name, type: type)
|
scope = quoted_scope(name, type: type)
|
||||||
scope[:type] ||= "'r','v','m'" # (r)elation/table, (v)iew, (m)aterialized view
|
scope[:type] ||= "'r','v','m'" # (r)elation/table, (v)iew, (m)aterialized view
|
||||||
|
|
|
@ -121,14 +121,6 @@ module ActiveRecord
|
||||||
include PostgreSQL::DatabaseStatements
|
include PostgreSQL::DatabaseStatements
|
||||||
include PostgreSQL::ColumnDumper
|
include PostgreSQL::ColumnDumper
|
||||||
|
|
||||||
def schema_creation # :nodoc:
|
|
||||||
PostgreSQL::SchemaCreation.new self
|
|
||||||
end
|
|
||||||
|
|
||||||
def arel_visitor # :nodoc:
|
|
||||||
Arel::Visitors::PostgreSQL.new(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Returns true, since this connection adapter supports prepared statement
|
# Returns true, since this connection adapter supports prepared statement
|
||||||
# caching.
|
# caching.
|
||||||
def supports_statement_cache?
|
def supports_statement_cache?
|
||||||
|
@ -376,11 +368,6 @@ module ActiveRecord
|
||||||
PostgreSQL::Table.new(table_name, base)
|
PostgreSQL::Table.new(table_name, base)
|
||||||
end
|
end
|
||||||
|
|
||||||
def lookup_cast_type(sql_type) # :nodoc:
|
|
||||||
oid = execute("SELECT #{quote(sql_type)}::regtype::oid", "SCHEMA").first["oid"].to_i
|
|
||||||
super(oid)
|
|
||||||
end
|
|
||||||
|
|
||||||
def column_name_for_operation(operation, node) # :nodoc:
|
def column_name_for_operation(operation, node) # :nodoc:
|
||||||
OPERATION_ALIASES.fetch(operation) { operation.downcase }
|
OPERATION_ALIASES.fetch(operation) { operation.downcase }
|
||||||
end
|
end
|
||||||
|
@ -777,8 +764,8 @@ module ActiveRecord
|
||||||
$1.strip if $1
|
$1.strip if $1
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_table_definition(*args)
|
def arel_visitor
|
||||||
PostgreSQL::TableDefinition.new(*args)
|
Arel::Visitors::PostgreSQL.new(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
def can_perform_case_insensitive_comparison_for?(column)
|
def can_perform_case_insensitive_comparison_for?(column)
|
||||||
|
|
|
@ -3,6 +3,31 @@ module ActiveRecord
|
||||||
module SQLite3
|
module SQLite3
|
||||||
module SchemaStatements # :nodoc:
|
module SchemaStatements # :nodoc:
|
||||||
private
|
private
|
||||||
|
def schema_creation
|
||||||
|
SQLite3::SchemaCreation.new(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_table_definition(*args)
|
||||||
|
SQLite3::TableDefinition.new(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new_column_from_field(table_name, field)
|
||||||
|
default = \
|
||||||
|
case field["dflt_value"]
|
||||||
|
when /^null$/i
|
||||||
|
nil
|
||||||
|
when /^'(.*)'$/m
|
||||||
|
$1.gsub("''", "'")
|
||||||
|
when /^"(.*)"$/m
|
||||||
|
$1.gsub('""', '"')
|
||||||
|
else
|
||||||
|
field["dflt_value"]
|
||||||
|
end
|
||||||
|
|
||||||
|
type_metadata = fetch_type_metadata(field["type"])
|
||||||
|
Column.new(field["name"], default, type_metadata, field["notnull"].to_i == 0, table_name, nil, field["collation"])
|
||||||
|
end
|
||||||
|
|
||||||
def data_source_sql(name = nil, type: nil)
|
def data_source_sql(name = nil, type: nil)
|
||||||
scope = quoted_scope(name, type: type)
|
scope = quoted_scope(name, type: type)
|
||||||
scope[:type] ||= "'table','view'"
|
scope[:type] ||= "'table','view'"
|
||||||
|
|
|
@ -84,14 +84,6 @@ module ActiveRecord
|
||||||
SQLite3::Table.new(table_name, base)
|
SQLite3::Table.new(table_name, base)
|
||||||
end
|
end
|
||||||
|
|
||||||
def schema_creation # :nodoc:
|
|
||||||
SQLite3::SchemaCreation.new self
|
|
||||||
end
|
|
||||||
|
|
||||||
def arel_visitor # :nodoc:
|
|
||||||
Arel::Visitors::SQLite.new(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def initialize(connection, logger, connection_options, config)
|
def initialize(connection, logger, connection_options, config)
|
||||||
super(connection, logger, config)
|
super(connection, logger, config)
|
||||||
|
|
||||||
|
@ -267,22 +259,6 @@ module ActiveRecord
|
||||||
|
|
||||||
# SCHEMA STATEMENTS ========================================
|
# SCHEMA STATEMENTS ========================================
|
||||||
|
|
||||||
def new_column_from_field(table_name, field) # :nondoc:
|
|
||||||
case field["dflt_value"]
|
|
||||||
when /^null$/i
|
|
||||||
field["dflt_value"] = nil
|
|
||||||
when /^'(.*)'$/m
|
|
||||||
field["dflt_value"] = $1.gsub("''", "'")
|
|
||||||
when /^"(.*)"$/m
|
|
||||||
field["dflt_value"] = $1.gsub('""', '"')
|
|
||||||
end
|
|
||||||
|
|
||||||
collation = field["collation"]
|
|
||||||
sql_type = field["type"]
|
|
||||||
type_metadata = fetch_type_metadata(sql_type)
|
|
||||||
new_column(field["name"], field["dflt_value"], type_metadata, field["notnull"].to_i == 0, table_name, nil, collation)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Returns an array of indexes for the given table.
|
# Returns an array of indexes for the given table.
|
||||||
def indexes(table_name, name = nil) #:nodoc:
|
def indexes(table_name, name = nil) #:nodoc:
|
||||||
if name
|
if name
|
||||||
|
@ -559,16 +535,8 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_table_definition(*args)
|
def arel_visitor
|
||||||
SQLite3::TableDefinition.new(*args)
|
Arel::Visitors::SQLite.new(self)
|
||||||
end
|
|
||||||
|
|
||||||
def extract_foreign_key_action(specifier)
|
|
||||||
case specifier
|
|
||||||
when "CASCADE"; :cascade
|
|
||||||
when "SET NULL"; :nullify
|
|
||||||
when "RESTRICT"; :restrict
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def configure_connection
|
def configure_connection
|
||||||
|
|
|
@ -8,7 +8,7 @@ module ActiveRecord
|
||||||
def @adapter.native_database_types
|
def @adapter.native_database_types
|
||||||
{ string: "varchar" }
|
{ string: "varchar" }
|
||||||
end
|
end
|
||||||
@viz = @adapter.schema_creation
|
@viz = @adapter.send(:schema_creation)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Avoid column definitions in create table statements like:
|
# Avoid column definitions in create table statements like:
|
||||||
|
|
Loading…
Reference in a new issue