@@ -231,10 +231,10 @@ def quoted_date(value)
231231 # REFERENTIAL INTEGRITY ====================================#
232232
233233 def disable_referential_integrity ( &block )
234- execute "EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'"
234+ do_execute "EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'"
235235 yield
236236 ensure
237- execute "EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'"
237+ do_execute "EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'"
238238 end
239239
240240 # CONNECTION MANAGEMENT ====================================#
@@ -279,15 +279,15 @@ def execute(sql, name = nil, &block)
279279 end
280280
281281 def begin_db_transaction
282- execute "BEGIN TRANSACTION"
282+ do_execute "BEGIN TRANSACTION"
283283 end
284284
285285 def commit_db_transaction
286- execute "COMMIT TRANSACTION"
286+ do_execute "COMMIT TRANSACTION"
287287 end
288288
289289 def rollback_db_transaction
290- execute "ROLLBACK TRANSACTION" rescue nil
290+ do_execute "ROLLBACK TRANSACTION" rescue nil
291291 end
292292
293293 def add_limit_offset! ( sql , options )
@@ -435,7 +435,7 @@ def create_table(table_name, options = {})
435435 end
436436
437437 def rename_table ( table_name , new_name )
438- execute "EXEC sp_rename '#{ table_name } ', '#{ new_name } '"
438+ do_execute "EXEC sp_rename '#{ table_name } ', '#{ new_name } '"
439439 end
440440
441441 def drop_table ( table_name , options = { } )
@@ -453,7 +453,7 @@ def remove_column(table_name, *column_names)
453453 remove_check_constraints ( table_name , column_name )
454454 remove_default_constraint ( table_name , column_name )
455455 remove_indexes ( table_name , column_name )
456- execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP COLUMN #{ quote_column_name ( column_name ) } "
456+ do_execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP COLUMN #{ quote_column_name ( column_name ) } "
457457 end
458458 remove_sqlserver_columns_cache_for ( table_name )
459459 end
@@ -467,24 +467,24 @@ def change_column(table_name, column_name, type, options = {})
467467 remove_default_constraint ( table_name , column_name )
468468 sql_commands << "ALTER TABLE #{ quote_table_name ( table_name ) } ADD CONSTRAINT #{ default_name ( table_name , column_name ) } DEFAULT #{ quote ( options [ :default ] ) } FOR #{ quote_column_name ( column_name ) } "
469469 end
470- sql_commands . each { |c | execute ( c ) }
470+ sql_commands . each { |c | do_execute ( c ) }
471471 remove_sqlserver_columns_cache_for ( table_name )
472472 end
473473
474474 def change_column_default ( table_name , column_name , default )
475475 remove_default_constraint ( table_name , column_name )
476- execute "ALTER TABLE #{ quote_table_name ( table_name ) } ADD CONSTRAINT #{ default_name ( table_name , column_name ) } DEFAULT #{ quote ( default ) } FOR #{ quote_column_name ( column_name ) } "
476+ do_execute "ALTER TABLE #{ quote_table_name ( table_name ) } ADD CONSTRAINT #{ default_name ( table_name , column_name ) } DEFAULT #{ quote ( default ) } FOR #{ quote_column_name ( column_name ) } "
477477 remove_sqlserver_columns_cache_for ( table_name )
478478 end
479479
480480 def rename_column ( table_name , column_name , new_column_name )
481481 column_for ( table_name , column_name )
482- execute "EXEC sp_rename '#{ table_name } .#{ column_name } ', '#{ new_column_name } ', 'COLUMN'"
482+ do_execute "EXEC sp_rename '#{ table_name } .#{ column_name } ', '#{ new_column_name } ', 'COLUMN'"
483483 remove_sqlserver_columns_cache_for ( table_name )
484484 end
485485
486486 def remove_index ( table_name , options = { } )
487- execute "DROP INDEX #{ table_name } .#{ quote_column_name ( index_name ( table_name , options ) ) } "
487+ do_execute "DROP INDEX #{ table_name } .#{ quote_column_name ( index_name ( table_name , options ) ) } "
488488 end
489489
490490 def type_to_sql ( type , limit = nil , precision = nil , scale = nil )
@@ -513,11 +513,11 @@ def add_order_by_for_association_limiting!(sql, options)
513513 def change_column_null ( table_name , column_name , null , default = nil )
514514 column = column_for ( table_name , column_name )
515515 unless null || default . nil?
516- execute ( "UPDATE #{ quote_table_name ( table_name ) } SET #{ quote_column_name ( column_name ) } =#{ quote ( default ) } WHERE #{ quote_column_name ( column_name ) } IS NULL" )
516+ do_execute ( "UPDATE #{ quote_table_name ( table_name ) } SET #{ quote_column_name ( column_name ) } =#{ quote ( default ) } WHERE #{ quote_column_name ( column_name ) } IS NULL" )
517517 end
518518 sql = "ALTER TABLE #{ table_name } ALTER COLUMN #{ quote_column_name ( column_name ) } #{ type_to_sql column . type , column . limit , column . precision , column . scale } "
519519 sql << " NOT NULL" unless null
520- execute sql
520+ do_execute sql
521521 end
522522
523523 def pk_and_sequence_for ( table_name )
@@ -530,19 +530,19 @@ def pk_and_sequence_for(table_name)
530530 def recreate_database ( name )
531531 existing_database = current_database . to_s
532532 if name . to_s == existing_database
533- execute 'USE master'
533+ do_execute 'USE master'
534534 end
535535 drop_database ( name )
536536 create_database ( name )
537537 ensure
538- execute "USE #{ existing_database } " if name . to_s == existing_database
538+ do_execute "USE #{ existing_database } " if name . to_s == existing_database
539539 end
540540
541541 def drop_database ( name )
542542 retry_count = 0
543543 max_retries = 1
544544 begin
545- execute "DROP DATABASE #{ name } "
545+ do_execute "DROP DATABASE #{ name } "
546546 rescue ActiveRecord ::StatementInvalid => err
547547 # Remove existing connections and rollback any transactions if we received the message
548548 # 'Cannot drop the database 'test' because it is currently in use'
@@ -558,7 +558,7 @@ def drop_database(name)
558558 end
559559
560560 def create_database ( name )
561- execute "CREATE DATABASE #{ name } "
561+ do_execute "CREATE DATABASE #{ name } "
562562 end
563563
564564 def current_database
@@ -568,7 +568,7 @@ def current_database
568568 def remove_database_connections_and_rollback ( name )
569569 # This should disconnect all other users and rollback any transactions for SQL 2000 and 2005
570570 # http://sqlserver2000.databases.aspfaq.com/how-do-i-drop-a-sql-server-database.html
571- execute "ALTER DATABASE #{ name } SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
571+ do_execute "ALTER DATABASE #{ name } SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
572572 end
573573
574574
@@ -610,6 +610,12 @@ def raw_execute(sql, name = nil, &block)
610610 end
611611 end
612612
613+ def do_execute ( sql , name = nil )
614+ log ( sql , name || 'EXECUTE' ) do
615+ raw_connection . do ( sql )
616+ end
617+ end
618+
613619 def raw_select ( sql , name = nil )
614620 handle = raw_execute ( sql , name )
615621 fields = handle . column_names
@@ -653,14 +659,14 @@ def add_limit_offset_for_association_limiting!(sql, options)
653659 def remove_check_constraints ( table_name , column_name )
654660 constraints = select_values ( "SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where TABLE_NAME = '#{ quote_string ( table_name ) } ' and COLUMN_NAME = '#{ quote_string ( column_name ) } '" )
655661 constraints . each do |constraint |
656- execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP CONSTRAINT #{ quote_column_name ( constraint ) } "
662+ do_execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP CONSTRAINT #{ quote_column_name ( constraint ) } "
657663 end
658664 end
659665
660666 def remove_default_constraint ( table_name , column_name )
661667 constraints = select_values ( "SELECT def.name FROM sysobjects def, syscolumns col, sysobjects tab WHERE col.cdefault = def.id AND col.name = '#{ quote_string ( column_name ) } ' AND tab.name = '#{ quote_string ( table_name ) } ' AND col.id = tab.id" )
662668 constraints . each do |constraint |
663- execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP CONSTRAINT #{ quote_column_name ( constraint ) } "
669+ do_execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP CONSTRAINT #{ quote_column_name ( constraint ) } "
664670 end
665671 end
666672
@@ -685,7 +691,7 @@ def with_identity_insert_enabled(table_name, &block)
685691
686692 def set_identity_insert ( table_name , enable = true )
687693 sql = "SET IDENTITY_INSERT #{ table_name } #{ enable ? 'ON' : 'OFF' } "
688- log ( sql , 'IDENTITY_INSERT' ) { execute ( sql ) }
694+ do_execute ( sql , 'IDENTITY_INSERT' )
689695 rescue Exception => e
690696 raise ActiveRecordError , "IDENTITY_INSERT could not be turned #{ enable ? 'ON' : 'OFF' } for table #{ table_name } "
691697 end
0 commit comments