@@ -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