Skip to content

Commit f244228

Browse files
committed
Organizing public/protected DATABASE STATEMENTS.
1 parent 366a97e commit f244228

File tree

2 files changed

+39
-47
lines changed

2 files changed

+39
-47
lines changed

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 38 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -468,58 +468,18 @@ def add_limit_offset!(sql, options)
468468
end
469469
end
470470

471-
# Appends a locking clause to an SQL statement.
472-
# This method *modifies* the +sql+ parameter.
473-
# # SELECT * FROM suppliers FOR UPDATE
474-
# add_lock! 'SELECT * FROM suppliers', :lock => true
475-
# add_lock! 'SELECT * FROM suppliers', :lock => ' WITH(HOLDLOCK, ROWLOCK)'
476-
# http://blog.sqlauthority.com/2007/04/27/sql-server-2005-locking-hints-and-examples/
477471
def add_lock!(sql, options)
472+
# http://blog.sqlauthority.com/2007/04/27/sql-server-2005-locking-hints-and-examples/
478473
case lock = options[:lock]
479-
when true then sql << "WITH(HOLDLOCK, ROWLOCK) "
480-
when String then sql << "#{lock} "
474+
when true then sql << ' WITH(HOLDLOCK, ROWLOCK) '
475+
when String then sql << " #{lock} "
481476
end
482477
end
483478

484479
def empty_insert_statement(table_name)
485-
"INSERT INTO #{table_name} DEFAULT VALUES"
480+
"INSERT INTO #{quote_table_name(table_name)} DEFAULT VALUES"
486481
end
487482

488-
def select(sql, name = nil, ignore_special_columns = false)
489-
repair_special_columns(sql) unless ignore_special_columns
490-
fields, rows = raw_select(sql,name)
491-
result = []
492-
for row in rows
493-
row_hash = {}
494-
fields.each_with_index do |f, i|
495-
row_hash[f] = row[i]
496-
end
497-
result << row_hash
498-
end
499-
result
500-
end
501-
502-
def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
503-
set_utf8_values!(sql)
504-
super || select_value("SELECT SCOPE_IDENTITY() AS Ident")
505-
end
506-
507-
def update_sql(sql, name = nil)
508-
set_utf8_values!(sql)
509-
auto_commiting = @connection["AutoCommit"]
510-
begin
511-
begin_db_transaction if auto_commiting
512-
execute(sql, name)
513-
affected_rows = select_value("SELECT @@ROWCOUNT AS AffectedRows")
514-
commit_db_transaction if auto_commiting
515-
affected_rows
516-
rescue
517-
rollback_db_transaction if auto_commiting
518-
raise
519-
end
520-
end
521-
522-
523483
# SCHEMA STATEMENTS ========================================#
524484

525485
def table_alias_length
@@ -792,7 +752,7 @@ def create_database(name)
792752
end
793753

794754
def current_database
795-
@connection.select_one("SELECT DB_NAME()")[0]
755+
select_value 'SELECT DB_NAME()'
796756
end
797757

798758
def remove_database_connections_and_rollback(name)
@@ -803,10 +763,42 @@ def remove_database_connections_and_rollback(name)
803763

804764

805765

806-
private
766+
protected
807767

808768
# DATABASE STATEMENTS ======================================
809769

770+
def select(sql, name = nil, ignore_special_columns = false)
771+
repair_special_columns(sql) unless ignore_special_columns
772+
fields, rows = raw_select(sql,name)
773+
rows.inject([]) do |results,row|
774+
row_hash = {}
775+
fields.each_with_index do |f, i|
776+
row_hash[f] = row[i]
777+
end
778+
results << row_hash
779+
end
780+
end
781+
782+
def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
783+
set_utf8_values!(sql)
784+
super || select_value("SELECT SCOPE_IDENTITY() AS Ident")
785+
end
786+
787+
def update_sql(sql, name = nil)
788+
set_utf8_values!(sql)
789+
auto_commiting = @connection["AutoCommit"]
790+
begin
791+
begin_db_transaction if auto_commiting
792+
execute(sql, name)
793+
affected_rows = select_value("SELECT @@ROWCOUNT AS AffectedRows")
794+
commit_db_transaction if auto_commiting
795+
affected_rows
796+
rescue
797+
rollback_db_transaction if auto_commiting
798+
raise
799+
end
800+
end
801+
810802
def raw_execute(sql, name = nil, &block)
811803
log(sql, name) do
812804
if block_given?

test/cases/adapter_test_sqlserver.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def setup
2121
end
2222

2323
should 'raise invalid statement error' do
24-
assert_raise(ActiveRecord::StatementInvalid) { Topic.connection.update_sql("UPDATE XXX") }
24+
assert_raise(ActiveRecord::StatementInvalid) { Topic.connection.update("UPDATE XXX") }
2525
end
2626

2727
should 'be our adapter_name' do

0 commit comments

Comments
 (0)