Skip to content

Commit ea8f5dc

Browse files
committed
Start organizing SCHEMA STATEMENTS. Simplify #tables method using #select_values. Simplify #add_column.
1 parent f244228 commit ea8f5dc

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -295,25 +295,6 @@ def supports_ddl_transactions?
295295
true
296296
end
297297

298-
def native_database_types
299-
txt = sqlserver_2005? ? "varchar(max)" : "text"
300-
bin = sqlserver_2005? ? "varbinary(max)" : "image"
301-
{
302-
:primary_key => "int NOT NULL IDENTITY(1, 1) PRIMARY KEY",
303-
:string => { :name => "varchar", :limit => 255 },
304-
:text => { :name => txt },
305-
:integer => { :name => "int" },
306-
:float => { :name => "float", :limit => 8 },
307-
:decimal => { :name => "decimal" },
308-
:datetime => { :name => "datetime" },
309-
:timestamp => { :name => "datetime" },
310-
:time => { :name => "datetime" },
311-
:date => { :name => "datetime" },
312-
:binary => { :name => bin },
313-
:boolean => { :name => "bit"}
314-
}
315-
end
316-
317298
def database_version
318299
select_value "SELECT @@version"
319300
end
@@ -482,18 +463,31 @@ def empty_insert_statement(table_name)
482463

483464
# SCHEMA STATEMENTS ========================================#
484465

466+
def native_database_types
467+
txt = sqlserver_2005? ? "varchar(max)" : "text"
468+
bin = sqlserver_2005? ? "varbinary(max)" : "image"
469+
{
470+
:primary_key => "int NOT NULL IDENTITY(1, 1) PRIMARY KEY",
471+
:string => { :name => "varchar", :limit => 255 },
472+
:text => { :name => txt },
473+
:integer => { :name => "int" },
474+
:float => { :name => "float", :limit => 8 },
475+
:decimal => { :name => "decimal" },
476+
:datetime => { :name => "datetime" },
477+
:timestamp => { :name => "datetime" },
478+
:time => { :name => "datetime" },
479+
:date => { :name => "datetime" },
480+
:binary => { :name => bin },
481+
:boolean => { :name => "bit"}
482+
}
483+
end
484+
485485
def table_alias_length
486486
128
487487
end
488488

489489
def tables(name = nil)
490-
execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'", name) do |sth|
491-
result = sth.inject([]) do |tables, field|
492-
table_name = field[0]
493-
tables << table_name unless table_name == 'dtproperties'
494-
tables
495-
end
496-
end
490+
select_values "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'"
497491
end
498492

499493
def columns(table_name, name = nil)
@@ -510,21 +504,17 @@ def create_table(table_name, options = {})
510504
remove_sqlserver_columns_cache_for(table_name)
511505
end
512506

507+
def rename_table(table_name, new_name)
508+
execute "EXEC sp_rename '#{table_name}', '#{new_name}'"
509+
end
510+
513511
def drop_table(table_name, options = {})
514512
super
515513
remove_sqlserver_columns_cache_for(table_name)
516514
end
517515

518-
def rename_table(table_name, new_name)
519-
execute "EXEC sp_rename '#{table_name}', '#{new_name}'"
520-
end
521-
522516
def add_column(table_name, column_name, type, options = {})
523-
add_column_sql = "ALTER TABLE #{table_name} ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}"
524-
add_column_options!(add_column_sql, options)
525-
# TODO: Add support to mimic date columns, using constraints to mark them as such in the database
526-
# add_column_sql << " CONSTRAINT ck__#{table_name}__#{column_name}__date_only CHECK ( CONVERT(CHAR(12), #{quote_column_name(column_name)}, 14)='00:00:00:000' )" if type == :date
527-
execute(add_column_sql)
517+
super
528518
remove_sqlserver_columns_cache_for(table_name)
529519
end
530520

0 commit comments

Comments
 (0)