Module: ArJdbc::MySQL
- Included in:
- ActiveRecord::ConnectionAdapters::MysqlAdapter
- Defined in:
- lib/arjdbc/mysql/column.rb,
lib/arjdbc/mysql/adapter.rb,
lib/arjdbc/mysql/explain_support.rb,
lib/arjdbc/mysql/schema_creation.rb
Defined Under Namespace
Modules: Column, ExplainSupport Classes: SchemaCreation
Constant Summary collapse
- NATIVE_DATABASE_TYPES =
{ :primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY", :string => { :name => "varchar", :limit => 255 }, :text => { :name => "text" }, :integer => { :name => "int", :limit => 4 }, :float => { :name => "float" }, # :double => { :name=>"double", :limit=>17 } # :real => { :name=>"real", :limit=>17 } :numeric => { :name => "numeric" }, # :limit => 65 :decimal => { :name => "decimal" }, # :limit => 65 :datetime => { :name => "datetime" }, # TIMESTAMP has varying properties depending on MySQL version (SQL mode) :timestamp => { :name => "datetime" }, :time => { :name => "time" }, :date => { :name => "date" }, :binary => { :name => "blob" }, :boolean => { :name => "tinyint", :limit => 1 }, # AR-JDBC added : :bit => { :name => "bit" }, # :limit => 1 :enum => { :name => "enum" }, :set => { :name => "set" }, # :limit => 64 :char => { :name => "char" }, # :limit => 255 }
- ADAPTER_NAME =
'MySQL'.freeze
- INDEX_TYPES =
[ :fulltext, :spatial ]
- INDEX_USINGS =
[ :btree, :hash ]
Class Method Summary collapse
- .arel_visitor_type(config = nil) ⇒ Object
- .column_selector ⇒ Object
-
.emulate_booleans ⇒ Object
deprecated
Deprecated.
Use #emulate_booleans? instead.
- .emulate_booleans=(emulate) ⇒ Object
-
.emulate_booleans? ⇒ Boolean
Boolean emulation can be disabled using (or using the adapter method) :.
- .jdbc_connection_class ⇒ Object
Instance Method Summary collapse
- #adapter_name ⇒ Object
- #add_column(table_name, column_name, type, options = {}) ⇒ Object
-
#add_column_position!(sql, options) ⇒ Object
unless const_defined? :SchemaCreation.
- #add_limit_offset!(sql, options) ⇒ Object
- #case_sensitive_equality_operator ⇒ Object
- #case_sensitive_modifier(node) ⇒ Object
- #change_column_default(table_name, column_name, default) ⇒ Object
-
#change_column_null(table_name, column_name, null, default = nil) ⇒ Object
unless const_defined? :SchemaCreation.
- #charset ⇒ Object
- #collation ⇒ Object
-
#columns(table_name, name = nil) ⇒ Object
Returns an array of
Columnobjects for the table specified. - #configure_connection ⇒ Object
- #create_database(name, options = {}) ⇒ Object
- #create_savepoint(name = current_savepoint_name(true)) ⇒ Object
- #create_table(name, options = {}) ⇒ Object
- #current_database ⇒ Object
- #disable_referential_integrity ⇒ Object
- #drop_database(name) ⇒ Object
- #empty_insert_statement_value ⇒ Object
-
#indexes(table_name, name = nil) ⇒ Object
Returns an array of indexes for the given table.
- #limited_update_conditions(where_sql, quoted_table_name, quoted_primary_key) ⇒ Object
- #native_database_types ⇒ Object
-
#pk_and_sequence_for(table) ⇒ Object
Returns a table's primary key and belonging sequence.
-
#primary_key(table) ⇒ Object
Returns just a table's primary key.
- #quote(value, column = nil) ⇒ Object
- #quote_column_name(name) ⇒ Object
- #quote_table_name(name) ⇒ Object
- #quoted_columns_for_index(column_names, options = {}) ⇒ Object protected
- #release_savepoint(name = current_savepoint_name) ⇒ Object
- #remove_index!(table_name, index_name) ⇒ Object
- #rename_column(table_name, column_name, new_column_name) ⇒ Object
- #rename_table(table_name, new_name) ⇒ Object
- #rollback_to_savepoint(name = current_savepoint_name) ⇒ Object
- #show_variable(var) ⇒ Object
-
#strict_mode? ⇒ Boolean
strict_mode is default since AR 4.0.
-
#structure_dump ⇒ Object
deprecated
Deprecated.
no longer used - handled with (AR built-in) Rake tasks
- #supports_bulk_alter? ⇒ Boolean
- #supports_index_sort_order? ⇒ Boolean
- #supports_migrations? ⇒ Boolean
- #supports_primary_key? ⇒ Boolean
- #supports_savepoints? ⇒ Boolean
- #supports_transaction_isolation?(level = nil) ⇒ Boolean
- #supports_views? ⇒ Boolean
- #translate_exception(exception, message) ⇒ Object protected
- #type_to_sql(type, limit = nil, precision = nil, scale = nil) ⇒ Object
- #update_sql(sql, name = nil) ⇒ Object
Class Method Details
.arel_visitor_type(config = nil) ⇒ Object
121 122 123 |
# File 'lib/arjdbc/mysql/adapter.rb', line 121 def self.arel_visitor_type(config = nil) ::Arel::Visitors::MySQL end |
.column_selector ⇒ Object
5 6 7 |
# File 'lib/arjdbc/mysql/column.rb', line 5 def self.column_selector [ /mysql/i, lambda { |config, column| column.extend(Column) } ] end |
.emulate_booleans ⇒ Object
Use #emulate_booleans? instead.
81 |
# File 'lib/arjdbc/mysql/adapter.rb', line 81 def self.emulate_booleans; @@emulate_booleans; end |
.emulate_booleans=(emulate) ⇒ Object
83 |
# File 'lib/arjdbc/mysql/adapter.rb', line 83 def self.emulate_booleans=(emulate); @@emulate_booleans = emulate; end |
.emulate_booleans? ⇒ Boolean
Boolean emulation can be disabled using (or using the adapter method) :
ArJdbc::MySQL.emulate_booleans = false
79 |
# File 'lib/arjdbc/mysql/adapter.rb', line 79 def self.emulate_booleans?; @@emulate_booleans; end |
.jdbc_connection_class ⇒ Object
13 14 15 |
# File 'lib/arjdbc/mysql/adapter.rb', line 13 def self.jdbc_connection_class ::ActiveRecord::ConnectionAdapters::MySQLJdbcConnection end |
Instance Method Details
#adapter_name ⇒ Object
117 118 119 |
# File 'lib/arjdbc/mysql/adapter.rb', line 117 def adapter_name ADAPTER_NAME end |
#add_column(table_name, column_name, type, options = {}) ⇒ Object
383 384 385 386 387 388 |
# File 'lib/arjdbc/mysql/adapter.rb', line 383 def add_column(table_name, column_name, type, = {}) add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" (add_column_sql, ) add_column_position!(add_column_sql, ) execute(add_column_sql) end |
#add_column_position!(sql, options) ⇒ Object
unless const_defined? :SchemaCreation
438 439 440 441 442 443 444 |
# File 'lib/arjdbc/mysql/adapter.rb', line 438 def add_column_position!(sql, ) if [:first] sql << " FIRST" elsif [:after] sql << " AFTER #{quote_column_name(options[:after])}" end end |
#add_limit_offset!(sql, options) ⇒ Object
Only used with (non-AREL) ActiveRecord 2.3.
448 449 450 451 452 453 454 455 456 457 458 |
# File 'lib/arjdbc/mysql/adapter.rb', line 448 def add_limit_offset!(sql, ) limit, offset = [:limit], [:offset] if limit && offset sql << " LIMIT #{offset.to_i}, #{sanitize_limit(limit)}" elsif limit sql << " LIMIT #{sanitize_limit(limit)}" elsif offset sql << " OFFSET #{offset.to_i}" end sql end |
#case_sensitive_equality_operator ⇒ Object
131 132 133 |
# File 'lib/arjdbc/mysql/adapter.rb', line 131 def case_sensitive_equality_operator "= BINARY" end |
#case_sensitive_modifier(node) ⇒ Object
135 136 137 |
# File 'lib/arjdbc/mysql/adapter.rb', line 135 def case_sensitive_modifier(node) Arel::Nodes::Bin.new(node) end |
#change_column_default(table_name, column_name, default) ⇒ Object
390 391 392 393 |
# File 'lib/arjdbc/mysql/adapter.rb', line 390 def change_column_default(table_name, column_name, default) column = column_for(table_name, column_name) change_column table_name, column_name, column.sql_type, :default => default end |
#change_column_null(table_name, column_name, null, default = nil) ⇒ Object
unless const_defined? :SchemaCreation
395 396 397 398 399 400 401 402 403 |
# File 'lib/arjdbc/mysql/adapter.rb', line 395 def change_column_null(table_name, column_name, null, default = nil) column = column_for(table_name, column_name) unless null || default.nil? execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL") end change_column table_name, column_name, column.sql_type, :null => null end |
#charset ⇒ Object
488 489 490 |
# File 'lib/arjdbc/mysql/adapter.rb', line 488 def charset show_variable("character_set_database") end |
#collation ⇒ Object
492 493 494 |
# File 'lib/arjdbc/mysql/adapter.rb', line 492 def collation show_variable("collation_database") end |
#columns(table_name, name = nil) ⇒ Object
Returns an array of Column objects for the table specified.
330 331 332 333 334 335 336 337 338 339 |
# File 'lib/arjdbc/mysql/adapter.rb', line 330 def columns(table_name, name = nil) sql = "SHOW FULL COLUMNS FROM #{quote_table_name(table_name)}" column = ::ActiveRecord::ConnectionAdapters::MysqlAdapter::Column columns = execute(sql, name || 'SCHEMA') columns.map! do |field| column.new(field['Field'], field['Default'], field['Type'], field['Null'] == "YES", field['Collation'], field['Extra']) end columns end |
#configure_connection ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/arjdbc/mysql/adapter.rb', line 31 def configure_connection variables = config[:variables] || {} # By default, MySQL 'where id is null' selects the last inserted id. Turn this off. variables[:sql_auto_is_null] = 0 # execute "SET SQL_AUTO_IS_NULL=0" # Increase timeout so the server doesn't disconnect us. wait_timeout = config[:wait_timeout] wait_timeout = 2147483 unless wait_timeout.is_a?(Fixnum) variables[:wait_timeout] = wait_timeout # Make MySQL reject illegal values rather than truncating or blanking them, see # http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_all_tables # If the user has provided another value for sql_mode, don't replace it. if strict_mode? && ! variables.has_key?(:sql_mode) variables[:sql_mode] = 'STRICT_ALL_TABLES' # SET SQL_MODE='STRICT_ALL_TABLES' end # NAMES does not have an equals sign, see # http://dev.mysql.com/doc/refman/5.0/en/set-statement.html#id944430 # (trailing comma because variable_assignments will always have content) encoding = "NAMES #{config[:encoding]}, " if config[:encoding] # Gather up all of the SET variables... variable_assignments = variables.map do |k, v| if v == ':default' || v == :default "@@SESSION.#{k.to_s} = DEFAULT" # Sets the value to the global or compile default elsif ! v.nil? "@@SESSION.#{k.to_s} = #{quote(v)}" end # or else nil; compact to clear nils out end.compact.join(', ') # ...and send them all in one query execute("SET #{encoding} #{variable_assignments}", :skip_logging) end |
#create_database(name, options = {}) ⇒ Object
348 349 350 351 352 353 354 |
# File 'lib/arjdbc/mysql/adapter.rb', line 348 def create_database(name, = {}) if [:collation] execute "CREATE DATABASE `#{name}` DEFAULT CHARACTER SET `#{options[:charset] || 'utf8'}` COLLATE `#{options[:collation]}`" else execute "CREATE DATABASE `#{name}` DEFAULT CHARACTER SET `#{options[:charset] || 'utf8'}`" end end |
#create_savepoint(name = current_savepoint_name(true)) ⇒ Object
218 219 220 |
# File 'lib/arjdbc/mysql/adapter.rb', line 218 def create_savepoint(name = current_savepoint_name(true)) log("SAVEPOINT #{name}", 'Savepoint') { super } end |
#create_table(name, options = {}) ⇒ Object
366 367 368 |
# File 'lib/arjdbc/mysql/adapter.rb', line 366 def create_table(name, = {}) super(name, {:options => "ENGINE=InnoDB DEFAULT CHARSET=utf8"}.merge()) end |
#current_database ⇒ Object
361 362 363 |
# File 'lib/arjdbc/mysql/adapter.rb', line 361 def current_database select_one("SELECT DATABASE() as db")["db"] end |
#disable_referential_integrity ⇒ Object
232 233 234 235 236 237 238 239 240 |
# File 'lib/arjdbc/mysql/adapter.rb', line 232 def disable_referential_integrity fk_checks = select_value("SELECT @@FOREIGN_KEY_CHECKS") begin update("SET FOREIGN_KEY_CHECKS = 0") yield ensure update("SET FOREIGN_KEY_CHECKS = #{fk_checks}") end end |
#drop_database(name) ⇒ Object
357 358 359 |
# File 'lib/arjdbc/mysql/adapter.rb', line 357 def drop_database(name) execute "DROP DATABASE IF EXISTS `#{name}`" end |
#empty_insert_statement_value ⇒ Object
528 529 530 |
# File 'lib/arjdbc/mysql/adapter.rb', line 528 def empty_insert_statement_value "VALUES ()" end |
#indexes(table_name, name = nil) ⇒ Object
Returns an array of indexes for the given table.
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
# File 'lib/arjdbc/mysql/adapter.rb', line 302 def indexes(table_name, name = nil) indexes = [] current_index = nil result = execute("SHOW KEYS FROM #{quote_table_name(table_name)}", name || 'SCHEMA') result.each do |row| key_name = row['Key_name'] if current_index != key_name next if key_name == 'PRIMARY' # skip the primary key current_index = key_name indexes << if self.class.const_defined?(:INDEX_TYPES) # AR 4.0 mysql_index_type = row['Index_type'].downcase.to_sym index_type = INDEX_TYPES.include?(mysql_index_type) ? mysql_index_type : nil index_using = INDEX_USINGS.include?(mysql_index_type) ? mysql_index_type : nil IndexDefinition.new(row['Table'], key_name, row['Non_unique'].to_i == 0, [], [], nil, nil, index_type, index_using) else IndexDefinition.new(row['Table'], key_name, row['Non_unique'].to_i == 0, [], []) end end indexes.last.columns << row["Column_name"] indexes.last.lengths << row["Sub_part"] end indexes end |
#limited_update_conditions(where_sql, quoted_table_name, quoted_primary_key) ⇒ Object
139 140 141 |
# File 'lib/arjdbc/mysql/adapter.rb', line 139 def limited_update_conditions(where_sql, quoted_table_name, quoted_primary_key) where_sql end |
#native_database_types ⇒ Object
110 111 112 |
# File 'lib/arjdbc/mysql/adapter.rb', line 110 def native_database_types NATIVE_DATABASE_TYPES end |
#pk_and_sequence_for(table) ⇒ Object
Not used, only here for potential compatibility with native adapter.
Returns a table's primary key and belonging sequence.
280 281 282 283 284 285 286 287 288 |
# File 'lib/arjdbc/mysql/adapter.rb', line 280 def pk_and_sequence_for(table) result = execute("SHOW CREATE TABLE #{quote_table_name(table)}", 'SCHEMA').first if result['Create Table'].to_s =~ /PRIMARY KEY\s+(?:USING\s+\w+\s+)?\((.+)\)/ keys = $1.split(","); keys.map! { |key| key.gsub(/[`"]/, "") } return keys.length == 1 ? [ keys.first, nil ] : nil else return nil end end |
#primary_key(table) ⇒ Object
Returns just a table's primary key.
271 272 273 274 275 |
# File 'lib/arjdbc/mysql/adapter.rb', line 271 def primary_key(table) #pk_and_sequence = pk_and_sequence_for(table) #pk_and_sequence && pk_and_sequence.first @connection.primary_keys(table).first end |
#quote(value, column = nil) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/arjdbc/mysql/adapter.rb', line 146 def quote(value, column = nil) return value.quoted_id if value.respond_to?(:quoted_id) return value if sql_literal?(value) return value.to_s if column && column.type == :primary_key if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary) "x'#{column.class.string_to_binary(value).unpack("H*")[0]}'" elsif value.kind_of?(BigDecimal) value.to_s("F") else super end end |
#quote_column_name(name) ⇒ Object
161 162 163 |
# File 'lib/arjdbc/mysql/adapter.rb', line 161 def quote_column_name(name) "`#{name.to_s.gsub('`', '``')}`" end |
#quote_table_name(name) ⇒ Object
166 167 168 |
# File 'lib/arjdbc/mysql/adapter.rb', line 166 def quote_table_name(name) quote_column_name(name).gsub('.', '`.`') end |
#quoted_columns_for_index(column_names, options = {}) ⇒ Object (protected)
533 534 535 536 537 538 539 540 541 542 543 544 |
# File 'lib/arjdbc/mysql/adapter.rb', line 533 def quoted_columns_for_index(column_names, = {}) length = [:length] if .is_a?(Hash) case length when Hash column_names.map { |name| length[name] ? "#{quote_column_name(name)}(#{length[name]})" : quote_column_name(name) } when Fixnum column_names.map { |name| "#{quote_column_name(name)}(#{length})" } else column_names.map { |name| quote_column_name(name) } end end |
#release_savepoint(name = current_savepoint_name) ⇒ Object
228 229 230 |
# File 'lib/arjdbc/mysql/adapter.rb', line 228 def release_savepoint(name = current_savepoint_name) log("RELEASE SAVEPOINT #{name}", 'Savepoint') { super } end |
#remove_index!(table_name, index_name) ⇒ Object
377 378 379 380 |
# File 'lib/arjdbc/mysql/adapter.rb', line 377 def remove_index!(table_name, index_name) # missing table_name quoting in AR-2.3 execute "DROP INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)}" end |
#rename_column(table_name, column_name, new_column_name) ⇒ Object
424 425 426 427 428 429 430 431 432 433 434 435 436 |
# File 'lib/arjdbc/mysql/adapter.rb', line 424 def rename_column(table_name, column_name, new_column_name) = {} if column = columns(table_name).find { |c| c.name == column_name.to_s } [:default] = column.default; [:null] = column.null else raise ActiveRecord::ActiveRecordError, "No such column: #{table_name}.#{column_name}" end current_type = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'")["Type"] rename_column_sql = "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(new_column_name)} #{current_type}" (rename_column_sql, ) execute(rename_column_sql) rename_column_indexes(table_name, column_name, new_column_name) if respond_to?(:rename_column_indexes) # AR-4.0 SchemaStatements end |
#rename_table(table_name, new_name) ⇒ Object
371 372 373 374 |
# File 'lib/arjdbc/mysql/adapter.rb', line 371 def rename_table(table_name, new_name) execute "RENAME TABLE #{quote_table_name(table_name)} TO #{quote_table_name(new_name)}" rename_table_indexes(table_name, new_name) if respond_to?(:rename_table_indexes) # AR-4.0 SchemaStatements end |
#rollback_to_savepoint(name = current_savepoint_name) ⇒ Object
223 224 225 |
# File 'lib/arjdbc/mysql/adapter.rb', line 223 def rollback_to_savepoint(name = current_savepoint_name) log("ROLLBACK TO SAVEPOINT #{name}", 'Savepoint') { super } end |
#show_variable(var) ⇒ Object
482 483 484 485 486 |
# File 'lib/arjdbc/mysql/adapter.rb', line 482 def show_variable(var) res = execute("show variables like '#{var}'") result_row = res.detect {|row| row["Variable_name"] == var } result_row && result_row["Value"] end |
#strict_mode? ⇒ Boolean
strict_mode is default since AR 4.0
67 68 69 |
# File 'lib/arjdbc/mysql/adapter.rb', line 67 def strict_mode? # strict_mode is default since AR 4.0 config.key?(:strict) ? config[:strict] : ::ActiveRecord::VERSION::MAJOR > 3 end |
#structure_dump ⇒ Object
no longer used - handled with (AR built-in) Rake tasks
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/arjdbc/mysql/adapter.rb', line 250 def structure_dump # NOTE: due AR (2.3-3.2) compatibility views are not included if supports_views? sql = "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'" else sql = "SHOW TABLES" end @connection.execute_query_raw(sql).map do |table| # e.g. { "Tables_in_arjdbc_test"=>"big_fields", "Table_type"=>"BASE TABLE" } table.delete('Table_type') table_name = table.to_a.first.last create_table = select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}") "#{create_table['Create Table']};\n\n" end.join end |
#supports_bulk_alter? ⇒ Boolean
181 182 183 |
# File 'lib/arjdbc/mysql/adapter.rb', line 181 def supports_bulk_alter? true end |
#supports_index_sort_order? ⇒ Boolean
186 187 188 189 190 |
# File 'lib/arjdbc/mysql/adapter.rb', line 186 def supports_index_sort_order? # Technically MySQL allows to create indexes with the sort order syntax # but at the moment (5.5) it doesn't yet implement them. true end |
#supports_migrations? ⇒ Boolean
171 172 173 |
# File 'lib/arjdbc/mysql/adapter.rb', line 171 def supports_migrations? true end |
#supports_primary_key? ⇒ Boolean
176 177 178 |
# File 'lib/arjdbc/mysql/adapter.rb', line 176 def supports_primary_key? true end |
#supports_savepoints? ⇒ Boolean
213 214 215 |
# File 'lib/arjdbc/mysql/adapter.rb', line 213 def supports_savepoints? true end |
#supports_transaction_isolation?(level = nil) ⇒ Boolean
193 194 195 196 197 198 |
# File 'lib/arjdbc/mysql/adapter.rb', line 193 def supports_transaction_isolation? # MySQL 4 technically support transaction isolation, but it is affected by # a bug where the transaction level gets persisted for the whole session: # http://bugs.mysql.com/bug.php?id=39170 version[0] && version[0] >= 5 end |
#supports_views? ⇒ Boolean
201 202 203 |
# File 'lib/arjdbc/mysql/adapter.rb', line 201 def supports_views? version[0] && version[0] >= 5 end |
#translate_exception(exception, message) ⇒ Object (protected)
547 548 549 550 551 552 553 554 555 556 557 558 |
# File 'lib/arjdbc/mysql/adapter.rb', line 547 def translate_exception(exception, ) return super unless exception.respond_to?(:errno) case exception.errno when 1062 ::ActiveRecord::RecordNotUnique.new(, exception) when 1452 ::ActiveRecord::InvalidForeignKey.new(, exception) else super end end |
#type_to_sql(type, limit = nil, precision = nil, scale = nil) ⇒ Object
496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 |
# File 'lib/arjdbc/mysql/adapter.rb', line 496 def type_to_sql(type, limit = nil, precision = nil, scale = nil) case type.to_s when 'binary' case limit when 0..0xfff; "varbinary(#{limit})" when nil; "blob" when 0x1000..0xffffffff; "blob(#{limit})" else raise(ActiveRecordError, "No binary type has character length #{limit}") end when 'integer' case limit when 1; 'tinyint' when 2; 'smallint' when 3; 'mediumint' when nil, 4, 11; 'int(11)' # compatibility with MySQL default when 5..8; 'bigint' else raise(ActiveRecordError, "No integer type has byte size #{limit}") end when 'text' case limit when 0..0xff; 'tinytext' when nil, 0x100..0xffff; 'text' when 0x10000..0xffffff; 'mediumtext' when 0x1000000..0xffffffff; 'longtext' else raise(ActiveRecordError, "No text type has character length #{limit}") end else super end end |
#update_sql(sql, name = nil) ⇒ Object
243 244 245 |
# File 'lib/arjdbc/mysql/adapter.rb', line 243 def update_sql(sql, name = nil) super end |