Skip to content

Commit e88c19f

Browse files
committed
Schema dumping for the win!
1 parent 1a91099 commit e88c19f

19 files changed

+149
-119
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
* New `ActiveRecord::Type` objects. See `active_record/connection_adapters/sqlserver/type` dir.
77
* New `SQLServer::Utils::Name` object for decomposing and quoting SQL Server names/identifiers.
8+
* Support for most all SQL Server types in schema statements and dumping.
89

910
#### Changed
1011

@@ -22,7 +23,7 @@
2223
#### Removed
2324

2425
* SQL Server versions < 2012 which do not support OFFSET and FETCH. http://bit.ly/1B5Bwsd
25-
* The `enable_default_unicode_types` option. Default to national types all the time. Use SQL type name in migrations if needed.
26+
* The `enable_default_unicode_types` option. Default to national types all the time.
2627
* Native type configs for older DB support. Includes the following with new default value:
2728
* native_string_database_type => `nvarchar`
2829
* native_text_database_type => `nvarchar(max)`

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -163,25 +163,29 @@ def views
163163
def initialize_native_database_types
164164
{
165165
primary_key: 'int NOT NULL IDENTITY(1,1) PRIMARY KEY',
166-
string: { name: 'nvarchar', limit: 255 },
167-
text: { name: 'nvarchar(max)' },
168166
integer: { name: 'int', limit: 4 },
169-
float: { name: 'float', limit: 8 },
167+
boolean: { name: 'bit' },
170168
decimal: { name: 'decimal' },
169+
money: { name: 'money' },
170+
smallmoney: { name: 'smallmoney' },
171+
float: { name: 'float', limit: 8 },
172+
real: { name: 'real' },
173+
date: { name: 'date' },
171174
datetime: { name: 'datetime' },
172175
timestamp: { name: 'datetime' },
173176
time: { name: 'time' },
174-
date: { name: 'date' },
175-
binary: { name: 'varbinary(max)' },
176-
boolean: { name: 'bit' },
177-
uuid: { name: 'uniqueidentifier' },
178-
# These are custom types that may move somewhere else for good schema_dumper.rb hacking to output them.
179177
char: { name: 'char' },
178+
varchar: { name: 'varchar' },
180179
varchar_max: { name: 'varchar(max)' },
180+
text_basic: { name: 'text' },
181181
nchar: { name: 'nchar' },
182-
nvarchar: { name: 'nvarchar', limit: 255 },
183-
nvarchar_max: { name: 'nvarchar(max)' },
182+
string: { name: 'nvarchar', limit: 255 },
183+
text: { name: 'nvarchar(max)' },
184184
ntext: { name: 'ntext' },
185+
binary_basic: { name: 'binary' },
186+
varbinary: { name: 'varbinary' },
187+
binary: { name: 'varbinary(max)' },
188+
uuid: { name: 'uniqueidentifier' },
185189
ss_timestamp: { name: 'timestamp' }
186190
}
187191
end

lib/active_record/connection_adapters/sqlserver/type.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
require 'active_record/connection_adapters/sqlserver/type/small_money.rb'
1414
# Approximate Numerics
1515
require 'active_record/connection_adapters/sqlserver/type/float.rb'
16+
require 'active_record/connection_adapters/sqlserver/type/real.rb'
1617
# Date and Time
1718
require 'active_record/connection_adapters/sqlserver/type/date.rb'
1819
require 'active_record/connection_adapters/sqlserver/type/datetime.rb'

lib/active_record/connection_adapters/sqlserver/type/binary.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class Binary < ActiveRecord::Type::Binary
66

7+
def type
8+
:binary_basic
9+
end
710

811
end
912
end

lib/active_record/connection_adapters/sqlserver/type/char.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class Char < String
66

7+
def type
8+
:char
9+
end
710

811
end
912
end

lib/active_record/connection_adapters/sqlserver/type/small_money.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ def initialize(options = {})
1010
@scale = 4
1111
end
1212

13+
def type
14+
:smallmoney
15+
end
16+
1317
end
1418
end
1519
end

lib/active_record/connection_adapters/sqlserver/type/text.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class Text < VarcharMax
66

7+
def type
8+
:text_basic
9+
end
710

811
end
912
end

lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class UnicodeChar < UnicodeString
66

7+
def type
8+
:nchar
9+
end
710

811
end
912
end

lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class UnicodeText < UnicodeVarcharMax
66

7+
def type
8+
:ntext
9+
end
710

811
end
912
end

lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module SQLServer
44
module Type
55
class UnicodeVarchar < UnicodeChar
66

7+
def type
8+
:string
9+
end
710

811
end
912
end

0 commit comments

Comments
 (0)