未验证 提交 7854e69c 编写于 作者: J Jeremy Daer

Merge pull request #23515 from kamipo/extract_arel_visitor

Extract `arel_visitor` and move up to the abstract adapter
......@@ -104,9 +104,15 @@ def initialize(connection, logger = nil, config = {}) # :nodoc:
@config = config
@pool = nil
@schema_cache = SchemaCache.new self
@visitor = nil
@prepared_statements = false
@quoted_column_names, @quoted_table_names = {}, {}
@visitor = arel_visitor
if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true })
@prepared_statements = true
@visitor.extend(DetermineIfPreparableVisitor)
else
@prepared_statements = false
end
end
class Version
......@@ -142,6 +148,10 @@ def collector
end
end
def arel_visitor # :nodoc:
(Arel::Visitors::VISITORS[@config[:adapter]] || Arel::Visitors::ToSql).new(self)
end
def valid_type?(type)
true
end
......
......@@ -55,15 +55,6 @@ def schema_creation
def initialize(connection, logger, connection_options, config)
super(connection, logger, config)
@visitor = Arel::Visitors::MySQL.new self
if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true })
@prepared_statements = true
@visitor.extend(DetermineIfPreparableVisitor)
else
@prepared_statements = false
end
if version < '5.0.0'
raise "Your version of MySQL (#{full_version.match(/^\d+\.\d+\.\d+/)[0]}) is too old. Active Record supports MySQL >= 5.0."
end
......
......@@ -203,14 +203,6 @@ def connection_active?
def initialize(connection, logger, connection_parameters, config)
super(connection, logger, config)
@visitor = Arel::Visitors::PostgreSQL.new self
if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true })
@prepared_statements = true
@visitor.extend(DetermineIfPreparableVisitor)
else
@prepared_statements = false
end
@connection_parameters = connection_parameters
# @local_tz is initialized as nil to avoid warnings when connect tries to use it
......
......@@ -85,15 +85,6 @@ def initialize(connection, logger, connection_options, config)
@active = nil
@statements = StatementPool.new(self.class.type_cast_config_to_integer(config.fetch(:statement_limit) { 1000 }))
@visitor = Arel::Visitors::SQLite.new self
if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true })
@prepared_statements = true
@visitor.extend(DetermineIfPreparableVisitor)
else
@prepared_statements = false
end
end
def supports_ddl_transactions?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册