@@ -258,6 +258,7 @@ def exec_update(sql, name, binds) # :nodoc:
258258 do_exec ( sql , name , binds , :update )
259259 end
260260
261+ # TODO is it really useful to have do_exec now ?!
261262 def do_exec ( sql , name , binds , type )
262263 sql = to_sql ( sql , binds )
263264 log ( sql , name || 'SQL' ) do
@@ -443,17 +444,36 @@ def last_inserted_id(result)
443444 result
444445 end
445446
447+ # Helper to handle 3.x/4.0 uniformly override #table_definition as :
448+ #
449+ # def table_definition(*args)
450+ # new_table_definition(TableDefinition, *args)
451+ # end
452+ #
453+ def new_table_definition ( table_definition , *args )
454+ table_definition . new ( self ) # args ignored only used for 4.0
455+ end
456+ private :new_table_definition
457+
446458 # if adapter overrides #table_definition it works on 3.x as well as 4.0
447459 if ActiveRecord ::VERSION ::MAJOR > 3
448460
461+ # aliasing #create_table_definition as #table_definition :
449462 alias table_definition create_table_definition
450463
451- def create_table_definition
452- table_definition
464+ # TableDefinition.new native_database_types, name, temporary, options
465+ def create_table_definition ( name , temporary , options )
466+ table_definition ( name , temporary , options )
453467 end
454-
468+
469+ # arguments expected: (name, temporary, options)
470+ def new_table_definition ( table_definition , *args )
471+ table_definition . new native_database_types , *args
455472 end
473+ private :new_table_definition
456474
475+ end
476+
457477 private
458478
459479 # #deprecated no longer used
0 commit comments