activerecord-sqlserver-adapter 4.2.6 → 4.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/Gemfile +9 -0
  4. data/README.md +40 -26
  5. data/VERSION +1 -0
  6. data/activerecord-sqlserver-adapter.gemspec +0 -10
  7. data/appveyor.yml +15 -3
  8. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +3 -3
  9. data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +35 -11
  10. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +4 -16
  11. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +12 -2
  12. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +8 -0
  13. data/lib/active_record/connection_adapters/sqlserver/type.rb +3 -1
  14. data/lib/active_record/connection_adapters/sqlserver/type/date.rb +9 -0
  15. data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +18 -12
  16. data/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +17 -0
  17. data/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +31 -0
  18. data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +6 -6
  19. data/lib/active_record/connection_adapters/sqlserver/type/time.rb +13 -29
  20. data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +72 -0
  21. data/lib/active_record/connection_adapters/sqlserver/utils.rb +12 -12
  22. data/lib/active_record/connection_adapters/sqlserver/version.rb +1 -1
  23. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +41 -5
  24. data/lib/active_record/sqlserver_base.rb +2 -4
  25. data/lib/arel/visitors/sqlserver.rb +19 -0
  26. data/test/cases/adapter_test_sqlserver.rb +24 -0
  27. data/test/cases/coerced_tests.rb +14 -0
  28. data/test/cases/column_test_sqlserver.rb +120 -47
  29. data/test/cases/connection_test_sqlserver.rb +3 -3
  30. data/test/cases/fully_qualified_identifier_test_sqlserver.rb +76 -0
  31. data/test/cases/helper_sqlserver.rb +24 -16
  32. data/test/cases/migration_test_sqlserver.rb +0 -5
  33. data/test/cases/rake_test_sqlserver.rb +29 -10
  34. data/test/cases/schema_dumper_test_sqlserver.rb +28 -11
  35. data/test/cases/transaction_test_sqlserver.rb +2 -2
  36. data/test/cases/utils_test_sqlserver.rb +44 -14
  37. data/test/config.yml +2 -0
  38. data/test/debug.rb +14 -0
  39. data/test/schema/datatypes/2012.sql +8 -18
  40. data/test/schema/sqlserver_specific_schema.rb +14 -12
  41. data/test/support/connection_reflection.rb +37 -0
  42. metadata +13 -143
  43. data/lib/active_record/connection_adapters/sqlserver/type/quoter.rb +0 -32
@@ -24,11 +24,18 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase
24
24
  assert_line :float, type: 'float', limit: nil, precision: nil, scale: nil, default: '123.00000001'
25
25
  assert_line :real, type: 'real', limit: nil, precision: nil, scale: nil, default: %r{123.4[45]}
26
26
  # Date and Time
27
- assert_line :date, type: 'date', limit: nil, precision: nil, scale: nil, default: "'0001-01-01'"
28
- assert_line :datetime, type: 'datetime', limit: nil, precision: nil, scale: nil, default: "'1753-01-01 00:00:00'"
29
- assert_line :smalldatetime, type: 'datetime', limit: nil, precision: nil, scale: nil, default: "'1901-01-01 15:45:00'"
27
+ assert_line :date, type: 'date', limit: nil, precision: nil, scale: nil, default: "\"01-01-0001\""
28
+ assert_line :datetime, type: 'datetime', limit: nil, precision: nil, scale: nil, default: "\"01-01-1753 00:00:00.123\""
29
+ if connection_dblib_73?
30
+ assert_line :datetime2_7, type: 'datetime2', limit: nil, precision: '7', scale: nil, default: "\"12-31-9999 23:59:59.9999999\""
31
+ assert_line :datetime2_3, type: 'datetime2', limit: nil, precision: '3', scale: nil, default: nil
32
+ assert_line :datetime2_1, type: 'datetime2', limit: nil, precision: '1', scale: nil, default: nil
33
+ end
34
+ assert_line :smalldatetime, type: 'smalldatetime',limit: nil, precision: nil, scale: nil, default: "\"01-01-1901 15:45:00\""
35
+ if connection_dblib_73?
36
+ assert_line :time_7, type: 'time', limit: nil, precision: '7', scale: nil, default: "\"04:20:00.2883215\""
30
37
  assert_line :time_2, type: 'time', limit: nil, precision: '2', scale: nil, default: nil
31
- assert_line :time_7, type: 'time', limit: nil, precision: nil, scale: nil, default: nil
38
+ end
32
39
  # Character Strings
33
40
  assert_line :char_10, type: 'char', limit: '10', precision: nil, scale: nil, default: "\"1234567890\""
34
41
  assert_line :varchar_50, type: 'varchar', limit: '50', precision: nil, scale: nil, default: "\"test varchar_50\""
@@ -73,12 +80,14 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase
73
80
  assert_line :text_col, type: 'text', limit: '2147483647', precision: nil, scale: nil, default: nil
74
81
  assert_line :datetime_col, type: 'datetime', limit: nil, precision: nil, scale: nil, default: nil
75
82
  assert_line :timestamp_col, type: 'datetime', limit: nil, precision: nil, scale: nil, default: nil
76
- assert_line :time_col, type: 'time', limit: nil, precision: nil, scale: nil, default: nil
83
+ assert_line :time_col, type: 'time', limit: nil, precision: '7', scale: nil, default: nil
77
84
  assert_line :date_col, type: 'date', limit: nil, precision: nil, scale: nil, default: nil
78
85
  assert_line :binary_col, type: 'binary', limit: '2147483647', precision: nil, scale: nil, default: nil
79
86
  # Our type methods.
80
87
  columns['real_col'].sql_type.must_equal 'real'
81
88
  columns['money_col'].sql_type.must_equal 'money'
89
+ columns['datetime2_col'].sql_type.must_equal 'datetime2(7)'
90
+ columns['datetimeoffset'].sql_type.must_equal 'datetimeoffset(7)'
82
91
  columns['smallmoney_col'].sql_type.must_equal 'smallmoney'
83
92
  columns['char_col'].sql_type.must_equal 'char(1)'
84
93
  columns['varchar_col'].sql_type.must_equal 'varchar(8000)'
@@ -91,6 +100,7 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase
91
100
  columns['sstimestamp_col'].sql_type.must_equal 'timestamp'
92
101
  assert_line :real_col, type: 'real', limit: nil, precision: nil, scale: nil, default: nil
93
102
  assert_line :money_col, type: 'money', limit: nil, precision: '19', scale: '4', default: nil
103
+ assert_line :datetime2_col, type: 'datetime2', limit: nil, precision: '7', scale: nil, default: nil
94
104
  assert_line :smallmoney_col, type: 'smallmoney', limit: nil, precision: '10', scale: '4', default: nil
95
105
  assert_line :char_col, type: 'char', limit: '1', precision: nil, scale: nil, default: nil
96
106
  assert_line :varchar_col, type: 'varchar', limit: '8000', precision: nil, scale: nil, default: nil
@@ -145,12 +155,19 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase
145
155
  def assert_line(column_name, options={})
146
156
  line = line(column_name)
147
157
  assert line, "Count not find line with column name: #{column_name.inspect} in schema:\n#{schema}"
148
- line.type_method.must_equal options[:type], "Type of #{options[:type].inspect} not found in:\n #{line}" if options.key?(:type)
149
- line.limit.must_equal options[:limit], "Limit of #{options[:limit].inspect} not found in:\n #{line}" if options.key?(:limit)
150
- line.precision.must_equal options[:precision], "Precision of #{options[:precision].inspect} not found in:\n #{line}" if options.key?(:precision)
151
- line.scale.must_equal options[:scale], "Scale of #{options[:scale].inspect} not found in:\n #{line}" if options.key?(:scale)
152
- line.default.must_equal options[:default], "Default of #{options[:default].inspect} not found in:\n #{line}" if options.key?(:default) && options[:default].is_a?(String)
153
- line.default.must_match options[:default], "Default of #{options[:default].inspect} not found in:\n #{line}" if options.key?(:default) && options[:default].is_a?(Regexp)
158
+ [:type, :limit, :precision, :scale, :default].each do |key|
159
+ next unless options.key?(key)
160
+ actual = key == :type ? line.send(:type_method) : line.send(key)
161
+ expected = options[key]
162
+ message = "#{key.to_s.titleize} of #{expected.inspect} not found in:\n#{line}"
163
+ if expected.nil?
164
+ actual.must_be_nil message
165
+ elsif expected.is_a?(Regexp)
166
+ actual.must_match expected, message
167
+ else
168
+ actual.must_equal expected, message
169
+ end
170
+ end
154
171
  end
155
172
 
156
173
  class SchemaLine
@@ -35,14 +35,14 @@ class TransactionTestSQLServer < ActiveRecord::TestCase
35
35
  begin
36
36
  in_level = nil
37
37
  begin_level = connection.user_options_isolation_level
38
- begin_level.must_match %r{read committed}
38
+ begin_level.must_match %r{read committed}i
39
39
  Ship.transaction(isolation: :serializable) do
40
40
  Ship.create! name: 'Black Pearl'
41
41
  in_level = connection.user_options_isolation_level
42
42
  end
43
43
  after_level = connection.user_options_isolation_level
44
44
  in_level.must_match %r{serializable}i
45
- after_level.must_match %r{read committed}
45
+ after_level.must_match %r{read committed}i
46
46
  ensure
47
47
  connection.set_transaction_isolation_level 'READ COMMITTED'
48
48
  end
@@ -10,6 +10,10 @@ class UtilsTestSQLServer < ActiveRecord::TestCase
10
10
  SQLServer::Utils.unquote_string("I''ll store this in C:\\Users").must_equal "I'll store this in C:\\Users"
11
11
  end
12
12
 
13
+ it '.quoted_raw' do
14
+ SQLServer::Utils.quoted_raw("some.Name").must_equal "[some.Name]"
15
+ end
16
+
13
17
  describe '.extract_identifiers constructor and thus SQLServer::Utils::Name value object' do
14
18
 
15
19
  let(:valid_names) { valid_names_unquoted + valid_names_quoted }
@@ -42,7 +46,7 @@ class UtilsTestSQLServer < ActiveRecord::TestCase
42
46
 
43
47
  it 'extracts and returns #object identifier unquoted by default or quoted as needed' do
44
48
  valid_names.each do |n|
45
- name = SQLServer::Utils.extract_identifiers(n)
49
+ name = extract_identifiers(n)
46
50
  name.object.must_equal 'object', "With #{n.inspect} for #object"
47
51
  name.object_quoted.must_equal '[object]', "With #{n.inspect} for #object_quoted"
48
52
  end
@@ -53,12 +57,12 @@ class UtilsTestSQLServer < ActiveRecord::TestCase
53
57
  it "extracts and returns #{part} identifier unquoted by default or quoted as needed" do
54
58
  present, blank = send(:"#{part}_names")
55
59
  present.each do |n|
56
- name = SQLServer::Utils.extract_identifiers(n)
60
+ name = extract_identifiers(n)
57
61
  name.send(:"#{part}").must_equal "#{part}", "With #{n.inspect} for ##{part} method"
58
62
  name.send(:"#{part}_quoted").must_equal "[#{part}]", "With #{n.inspect} for ##{part}_quoted method"
59
63
  end
60
64
  blank.each do |n|
61
- name = SQLServer::Utils.extract_identifiers(n)
65
+ name = extract_identifiers(n)
62
66
  name.send(:"#{part}").must_be_nil "With #{n.inspect} for ##{part} method"
63
67
  name.send(:"#{part}_quoted").must_be_nil "With #{n.inspect} for ##{part}_quoted method"
64
68
  end
@@ -67,33 +71,59 @@ class UtilsTestSQLServer < ActiveRecord::TestCase
67
71
  end
68
72
 
69
73
  it 'does not blow up on nil or blank string name' do
70
- SQLServer::Utils.extract_identifiers(nil).object.must_be_nil
71
- SQLServer::Utils.extract_identifiers(' ').object.must_be_nil
74
+ extract_identifiers(nil).object.must_be_nil
75
+ extract_identifiers(' ').object.must_be_nil
72
76
  end
73
77
 
74
78
  it 'has a #quoted that returns a fully quoted name with all identifiers as orginially passed in' do
75
- SQLServer::Utils.extract_identifiers('object').quoted.must_equal '[object]'
76
- SQLServer::Utils.extract_identifiers('server.database..object').quoted.must_equal '[server].[database]..[object]'
77
- SQLServer::Utils.extract_identifiers('[server]...[object]').quoted.must_equal '[server]...[object]'
79
+ extract_identifiers('object').quoted.must_equal '[object]'
80
+ extract_identifiers('server.database..object').quoted.must_equal '[server].[database]..[object]'
81
+ extract_identifiers('[server]...[object]').quoted.must_equal '[server]...[object]'
78
82
  end
79
83
 
80
84
  it 'can take a symbol argument' do
81
- SQLServer::Utils.extract_identifiers(:object).object.must_equal 'object'
85
+ extract_identifiers(:object).object.must_equal 'object'
82
86
  end
83
87
 
84
88
  it 'allows identifiers with periods to work' do
85
- SQLServer::Utils.extract_identifiers('[obj.name]').quoted.must_equal '[obj.name]'
86
- SQLServer::Utils.extract_identifiers('[obj.name].[foo]').quoted.must_equal '[obj.name].[foo]'
89
+ extract_identifiers('[obj.name]').quoted.must_equal '[obj.name]'
90
+ extract_identifiers('[obj.name].[foo]').quoted.must_equal '[obj.name].[foo]'
91
+ end
92
+
93
+ it 'should indicate if a name is fully qualitified' do
94
+ extract_identifiers('object').fully_qualified?.must_equal false
95
+ extract_identifiers('schema.object').fully_qualified?.must_equal false
96
+ extract_identifiers('database.schema.object').fully_qualified?.must_equal false
97
+ extract_identifiers('database.object').fully_qualified?.must_equal false
98
+ extract_identifiers('server...object').fully_qualified?.must_equal false
99
+ extract_identifiers('server.database..object').fully_qualified?.must_equal false
100
+ extract_identifiers('server.database.schema.object').fully_qualified?.must_equal true
101
+ extract_identifiers('server.database.schema.').fully_qualified?.must_equal true
102
+ extract_identifiers('[obj.name]').fully_qualified?.must_equal false
103
+ extract_identifiers('[schema].[obj.name]').fully_qualified?.must_equal false
104
+ extract_identifiers('[database].[schema].[obj.name]').fully_qualified?.must_equal false
105
+ extract_identifiers('[database].[obj.name]').fully_qualified?.must_equal false
106
+ extract_identifiers('[server.name]...[obj.name]').fully_qualified?.must_equal false
107
+ extract_identifiers('[server.name].[database]..[obj.name]').fully_qualified?.must_equal false
108
+ extract_identifiers('[server.name].[database].[schema].[obj.name]').fully_qualified?.must_equal true
109
+ extract_identifiers('[server.name].[database].[schema].').fully_qualified?.must_equal true
87
110
  end
88
111
 
89
112
  it 'can return fully qualified quoted table name' do
90
- name = SQLServer::Utils.extract_identifiers('[server.name].[database].[schema].[object]')
113
+ name = extract_identifiers('[my.server].db.schema.')
114
+ name.fully_qualified_database_quoted.must_equal '[my.server].[db]'
115
+ name = extract_identifiers('[server.name].[database].[schema].[object]')
91
116
  name.fully_qualified_database_quoted.must_equal '[server.name].[database]'
92
-
93
- name = SQLServer::Utils.extract_identifiers('server.database.schema.object')
117
+ name = extract_identifiers('server.database.schema.object')
94
118
  name.fully_qualified_database_quoted.must_equal '[server].[database]'
95
119
  end
96
120
 
97
121
  end
98
122
 
123
+ private
124
+
125
+ def extract_identifiers(name)
126
+ SQLServer::Utils.extract_identifiers(name)
127
+ end
128
+
99
129
  end
@@ -20,6 +20,7 @@ connections:
20
20
  dataserver: <%= ENV['ACTIVERECORD_UNITTEST_DATASERVER'] %>
21
21
  tds_version: <%= ENV['ACTIVERECORD_UNITTEST_TDSVERSION'] %>
22
22
  azure: <%= !ENV['ACTIVERECORD_UNITTEST_AZURE'].nil? %>
23
+ timeout: <%= ENV['ACTIVERECORD_UNITTEST_AZURE'].present? ? 20 : nil %>
23
24
  arunit2:
24
25
  <<: *default_connection_info
25
26
  database: activerecord_unittest2
@@ -27,6 +28,7 @@ connections:
27
28
  dataserver: <%= ENV['ACTIVERECORD_UNITTEST_DATASERVER'] %>
28
29
  tds_version: <%= ENV['ACTIVERECORD_UNITTEST_TDSVERSION'] %>
29
30
  azure: <%= !ENV['ACTIVERECORD_UNITTEST_AZURE'].nil? %>
31
+ timeout: <%= ENV['ACTIVERECORD_UNITTEST_AZURE'].present? ? 20 : nil %>
30
32
 
31
33
  odbc:
32
34
  arunit:
@@ -0,0 +1,14 @@
1
+ # require 'rails/all'
2
+ require 'tiny_tds'
3
+
4
+ c = TinyTds::Client.new(
5
+ host: ENV['CI_AZURE_HOST'],
6
+ username: 'rails',
7
+ password: ENV['CI_AZURE_PASS'],
8
+ database: 'activerecord_unittest',
9
+ azure: true,
10
+ tds_version: '7.3'
11
+ )
12
+
13
+ puts c.execute("SELECT 1 AS [one]").each
14
+ c.close
@@ -24,10 +24,16 @@ CREATE TABLE [sst_datatypes] (
24
24
  [real] [real] NULL DEFAULT 123.45,
25
25
  -- Date and Time
26
26
  [date] [date] NULL DEFAULT '0001-01-01',
27
- [datetime] [datetime] NULL DEFAULT '1753-01-01T00:00:00.000',
27
+ [datetime] [datetime] NULL DEFAULT '1753-01-01T00:00:00.123',
28
+ [datetime2_7] [datetime2](7) NULL DEFAULT '9999-12-31 23:59:59.9999999',
29
+ [datetime2_3] [datetime2](3) NULL,
30
+ [datetime2_1] [datetime2](1) NULL,
31
+ [datetimeoffset_7] [datetimeoffset](7) NULL DEFAULT '1984-01-24 04:20:00.1234567 -08:00',
32
+ [datetimeoffset_3] [datetimeoffset](3) NULL,
33
+ [datetimeoffset_1] [datetimeoffset](1) NULL,
28
34
  [smalldatetime] [smalldatetime] NULL DEFAULT '1901-01-01T15:45:00.000Z',
35
+ [time_7] [time](7) NULL DEFAULT '04:20:00.2883215',
29
36
  [time_2] [time](2) NULL,
30
- [time_7] [time](7) NULL,
31
37
  -- Character Strings
32
38
  [char_10] [char](10) NULL DEFAULT '1234567890',
33
39
  [varchar_50] [varchar](50) NULL DEFAULT 'test varchar_50',
@@ -46,19 +52,3 @@ CREATE TABLE [sst_datatypes] (
46
52
  [uniqueidentifier] [uniqueidentifier] NULL DEFAULT NEWID(),
47
53
  [timestamp] [timestamp] NULL,
48
54
  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
49
-
50
- -- Date and Time (TODO)
51
- -- --------------------
52
- -- [datetime2_7] [datetime2](7) NULL,
53
- -- [datetimeoffset_2] [datetimeoffset](2) NULL,
54
- -- [datetimeoffset_7] [datetimeoffset](7) NULL,
55
- --
56
- -- INSERT INTO [sst_datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01T00:00:00.0000000Z' )
57
- -- INSERT INTO [sst_datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24T04:20:00.0000000-08:00' )
58
- -- INSERT INTO [sst_datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31T23:59:59.9999999Z' )
59
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.0000000-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
60
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
61
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
62
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.0000000-08:00' ) -- 1984-01-24 04:20:00.0000000 -08:00
63
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
64
- -- INSERT INTO [sst_datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
@@ -19,18 +19,20 @@ ActiveRecord::Schema.define do
19
19
  t.date :date_col
20
20
  t.binary :binary_col
21
21
  # Our type methods.
22
- t.real :real_col
23
- t.money :money_col
24
- t.smallmoney :smallmoney_col
25
- t.char :char_col
26
- t.varchar :varchar_col
27
- t.text_basic :text_basic_col
28
- t.nchar :nchar_col
29
- t.ntext :ntext_col
30
- t.binary_basic :binary_basic_col
31
- t.varbinary :varbinary_col
32
- t.uuid :uuid_col
33
- t.ss_timestamp :sstimestamp_col
22
+ t.real :real_col
23
+ t.money :money_col
24
+ t.datetime2 :datetime2_col
25
+ t.datetimeoffset :datetimeoffset
26
+ t.smallmoney :smallmoney_col
27
+ t.char :char_col
28
+ t.varchar :varchar_col
29
+ t.text_basic :text_basic_col
30
+ t.nchar :nchar_col
31
+ t.ntext :ntext_col
32
+ t.binary_basic :binary_basic_col
33
+ t.varbinary :varbinary_col
34
+ t.uuid :uuid_col
35
+ t.ss_timestamp :sstimestamp_col
34
36
  end
35
37
 
36
38
  # Edge Cases
@@ -0,0 +1,37 @@
1
+ module ARTest
2
+ module SQLServer
3
+ module ConnectionReflection
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included { extend ConnectionReflection }
8
+
9
+ def connection
10
+ ActiveRecord::Base.connection
11
+ end
12
+
13
+ def connection_options
14
+ connection.instance_variable_get :@connection_options
15
+ end
16
+
17
+ def connection_dblib?
18
+ connection_options[:mode] == :dblib
19
+ end
20
+
21
+ def connection_dblib_73?
22
+ return false unless connection_dblib?
23
+ rc = connection.raw_connection
24
+ rc.respond_to?(:tds_73?) && rc.tds_73?
25
+ end
26
+
27
+ def connection_odbc?
28
+ connection_options[:mode] == :odbc
29
+ end
30
+
31
+ def connection_sqlserver_azure?
32
+ connection.sqlserver_azure?
33
+ end
34
+
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-sqlserver-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.6
4
+ version: 4.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2015-11-23 00:00:00.000000000 Z
17
+ date: 2016-02-29 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activerecord
@@ -30,146 +30,6 @@ dependencies:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 4.2.1
33
- - !ruby/object:Gem::Dependency
34
- name: bundler
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: guard
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: guard-minitest
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
- - !ruby/object:Gem::Dependency
76
- name: minitest
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "<"
80
- - !ruby/object:Gem::Version
81
- version: 5.3.4
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "<"
87
- - !ruby/object:Gem::Version
88
- version: 5.3.4
89
- - !ruby/object:Gem::Dependency
90
- name: minitest-focus
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: minitest-spec-rails
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: mocha
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- - !ruby/object:Gem::Dependency
132
- name: nokogiri
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- - !ruby/object:Gem::Dependency
146
- name: byebug
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: rake
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: '0'
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '0'
173
33
  description: ActiveRecord SQL Server Adapter. SQL Server 2012 and upward.
174
34
  email:
175
35
  - ken@metaskills.net
@@ -187,6 +47,7 @@ files:
187
47
  - README.md
188
48
  - RUNNING_UNIT_TESTS.md
189
49
  - Rakefile
50
+ - VERSION
190
51
  - activerecord-sqlserver-adapter.gemspec
191
52
  - appveyor.yml
192
53
  - lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb
@@ -214,11 +75,12 @@ files:
214
75
  - lib/active_record/connection_adapters/sqlserver/type/char.rb
215
76
  - lib/active_record/connection_adapters/sqlserver/type/date.rb
216
77
  - lib/active_record/connection_adapters/sqlserver/type/datetime.rb
78
+ - lib/active_record/connection_adapters/sqlserver/type/datetime2.rb
79
+ - lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb
217
80
  - lib/active_record/connection_adapters/sqlserver/type/decimal.rb
218
81
  - lib/active_record/connection_adapters/sqlserver/type/float.rb
219
82
  - lib/active_record/connection_adapters/sqlserver/type/integer.rb
220
83
  - lib/active_record/connection_adapters/sqlserver/type/money.rb
221
- - lib/active_record/connection_adapters/sqlserver/type/quoter.rb
222
84
  - lib/active_record/connection_adapters/sqlserver/type/real.rb
223
85
  - lib/active_record/connection_adapters/sqlserver/type/small_integer.rb
224
86
  - lib/active_record/connection_adapters/sqlserver/type/small_money.rb
@@ -226,6 +88,7 @@ files:
226
88
  - lib/active_record/connection_adapters/sqlserver/type/string.rb
227
89
  - lib/active_record/connection_adapters/sqlserver/type/text.rb
228
90
  - lib/active_record/connection_adapters/sqlserver/type/time.rb
91
+ - lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb
229
92
  - lib/active_record/connection_adapters/sqlserver/type/timestamp.rb
230
93
  - lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb
231
94
  - lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb
@@ -255,6 +118,7 @@ files:
255
118
  - test/cases/connection_test_sqlserver.rb
256
119
  - test/cases/execute_procedure_test_sqlserver.rb
257
120
  - test/cases/fetch_test_sqlserver.rb
121
+ - test/cases/fully_qualified_identifier_test_sqlserver.rb
258
122
  - test/cases/helper_sqlserver.rb
259
123
  - test/cases/migration_test_sqlserver.rb
260
124
  - test/cases/order_test_sqlserver.rb
@@ -269,6 +133,7 @@ files:
269
133
  - test/cases/utils_test_sqlserver.rb
270
134
  - test/cases/uuid_test_sqlserver.rb
271
135
  - test/config.yml
136
+ - test/debug.rb
272
137
  - test/fixtures/1px.gif
273
138
  - test/migrations/transaction_table/1_table_will_never_be_created.rb
274
139
  - test/models/sqlserver/customers_view.rb
@@ -296,6 +161,7 @@ files:
296
161
  - test/schema/datatypes/2012.sql
297
162
  - test/schema/sqlserver_specific_schema.rb
298
163
  - test/support/coerceable_test_sqlserver.rb
164
+ - test/support/connection_reflection.rb
299
165
  - test/support/load_schema_sqlserver.rb
300
166
  - test/support/minitest_sqlserver.rb
301
167
  - test/support/paths_sqlserver.rb
@@ -334,6 +200,7 @@ test_files:
334
200
  - test/cases/connection_test_sqlserver.rb
335
201
  - test/cases/execute_procedure_test_sqlserver.rb
336
202
  - test/cases/fetch_test_sqlserver.rb
203
+ - test/cases/fully_qualified_identifier_test_sqlserver.rb
337
204
  - test/cases/helper_sqlserver.rb
338
205
  - test/cases/migration_test_sqlserver.rb
339
206
  - test/cases/order_test_sqlserver.rb
@@ -348,6 +215,7 @@ test_files:
348
215
  - test/cases/utils_test_sqlserver.rb
349
216
  - test/cases/uuid_test_sqlserver.rb
350
217
  - test/config.yml
218
+ - test/debug.rb
351
219
  - test/fixtures/1px.gif
352
220
  - test/migrations/transaction_table/1_table_will_never_be_created.rb
353
221
  - test/models/sqlserver/customers_view.rb
@@ -375,8 +243,10 @@ test_files:
375
243
  - test/schema/datatypes/2012.sql
376
244
  - test/schema/sqlserver_specific_schema.rb
377
245
  - test/support/coerceable_test_sqlserver.rb
246
+ - test/support/connection_reflection.rb
378
247
  - test/support/load_schema_sqlserver.rb
379
248
  - test/support/minitest_sqlserver.rb
380
249
  - test/support/paths_sqlserver.rb
381
250
  - test/support/rake_helpers.rb
382
251
  - test/support/sql_counter_sqlserver.rb
252
+ has_rdoc: