class ActiveRecord::ConnectionAdapters::TidbAdapter
Constants
- ADAPTER_NAME
Public Class Methods
database_exists?(config)
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 99 def self.database_exists?(config) !ActiveRecord::Base.tidb_connection(config).nil? rescue ActiveRecord::NoDatabaseError false end
new(connection, logger, conn_params, config)
click to toggle source
Calls superclass method
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 84 def initialize(connection, logger, conn_params, config) super(connection, logger, conn_params, config) tidb_version_string = query_value('select version()') @tidb_version = tidb_version_string[/TiDB-v([0-9.]+)/, 1] end
Public Instance Methods
new_column_from_field(_table_name, field)
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 105 def new_column_from_field(_table_name, field) type_metadata = fetch_type_metadata(field[:Type], field[:Extra]) default = field[:Default] default_function = nil if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\([0-6]?\))?\z/i.match?(default) default_function = default default = nil elsif type_metadata.extra == 'DEFAULT_GENERATED' default = +"(#{default})" unless default.start_with?('(') default_function = default default = nil elsif default.to_s =~ /nextval/i default_function = default default = nil end MySQL::Column.new( field[:Field], default, type_metadata, field[:Null] == 'YES', default_function, collation: field[:Collation], comment: field[:Comment].presence ) end
supports_advisory_locks?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 52 def supports_advisory_locks? false end
supports_bulk_alter?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 48 def supports_bulk_alter? false end
supports_common_table_expressions?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 73 def supports_common_table_expressions? tidb_version >= '5.1.0' end
supports_expression_index?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 69 def supports_expression_index? false end
supports_foreign_keys?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 44 def supports_foreign_keys? false end
supports_index_sort_order?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 64 def supports_index_sort_order? # TODO: check TiDB version true end
supports_json?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 60 def supports_json? true end
supports_optimizer_hints?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 56 def supports_optimizer_hints? true end
supports_savepoints?()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 40 def supports_savepoints? false end
tidb_version()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 95 def tidb_version Version.new(tidb_version_string) end
tidb_version_string()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 91 def tidb_version_string @tidb_version end
transaction_isolation_levels()
click to toggle source
# File lib/active_record/connection_adapters/tidb_adapter.rb, line 77 def transaction_isolation_levels { read_committed: 'READ COMMITTED', repeatable_read: 'REPEATABLE READ' } end