activerecord-jdbcsqlserver-adapter 50.0.0 → 52.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.travis.yml +4 -5
- data/CHANGELOG.md +22 -101
- data/{Dockerfile → Dockerfile.ci} +0 -0
- data/Gemfile +1 -3
- data/README.md +5 -9
- data/VERSION +1 -1
- data/activerecord-jdbcsqlserver-adapter.gemspec +2 -2
- data/appveyor.yml +1 -1
- data/docker-compose.ci.yml +7 -5
- data/lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb +3 -1
- data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +3 -1
- data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +51 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +18 -20
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb +5 -3
- data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +43 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb +26 -0
- data/lib/active_record/connection_adapters/sqlserver/database_limits.rb +13 -2
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +94 -28
- data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +1 -0
- data/lib/active_record/connection_adapters/sqlserver/jdbc_overrides.rb +5 -25
- data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +24 -1
- data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +23 -2
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +110 -74
- data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +15 -7
- data/lib/active_record/connection_adapters/sqlserver/transaction.rb +3 -4
- data/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +0 -4
- data/lib/active_record/connection_adapters/sqlserver/type/data.rb +5 -0
- data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +3 -6
- data/lib/active_record/connection_adapters/sqlserver/type/json.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver/type/string.rb +7 -0
- data/lib/active_record/connection_adapters/sqlserver/type/time.rb +1 -0
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +47 -24
- data/lib/active_record/tasks/sqlserver_database_tasks.rb +5 -3
- data/lib/activerecord-jdbcsqlserver-adapter.rb +4 -1
- data/lib/arel/visitors/sqlserver.rb +17 -4
- data/lib/arel_sqlserver.rb +0 -1
- data/lib/jdbc_mssql_driver_loader.rb +22 -0
- data/test/bin/install-freetds.sh +18 -0
- data/test/bin/setup.sh +19 -0
- data/test/cases/adapter_test_sqlserver.rb +43 -39
- data/test/cases/change_column_null_test_sqlserver.rb +42 -0
- data/test/cases/coerced_tests.rb +419 -39
- data/test/cases/column_test_sqlserver.rb +496 -462
- data/test/cases/connection_test_sqlserver.rb +2 -2
- data/test/cases/fetch_test_sqlserver.rb +5 -5
- data/test/cases/helper_sqlserver.rb +12 -1
- data/test/cases/json_test_sqlserver.rb +6 -6
- data/test/cases/migration_test_sqlserver.rb +13 -3
- data/test/cases/order_test_sqlserver.rb +19 -19
- data/test/cases/pessimistic_locking_test_sqlserver.rb +37 -20
- data/test/cases/rake_test_sqlserver.rb +20 -20
- data/test/cases/schema_dumper_test_sqlserver.rb +44 -43
- data/test/cases/schema_test_sqlserver.rb +2 -2
- data/test/cases/showplan_test_sqlserver.rb +25 -10
- data/test/cases/specific_schema_test_sqlserver.rb +11 -17
- data/test/cases/transaction_test_sqlserver.rb +9 -9
- data/test/cases/trigger_test_sqlserver.rb +31 -0
- data/test/cases/utils_test_sqlserver.rb +36 -36
- data/test/cases/uuid_test_sqlserver.rb +8 -8
- data/test/config.yml +2 -2
- data/test/migrations/create_clients_and_change_column_null.rb +23 -0
- data/test/models/sqlserver/trigger.rb +7 -0
- data/test/models/sqlserver/trigger_history.rb +3 -0
- data/test/schema/datatypes/2012.sql +1 -0
- data/test/schema/sqlserver_specific_schema.rb +47 -5
- data/test/support/core_ext/query_cache.rb +29 -0
- data/test/support/sql_counter_sqlserver.rb +1 -1
- metadata +32 -15
- data/RAILS5-TODO.md +0 -5
- data/test/models/sqlserver/dot_table_name.rb +0 -3
@@ -35,6 +35,7 @@ CREATE TABLE [sst_datatypes] (
|
|
35
35
|
[smalldatetime] [smalldatetime] NULL DEFAULT '1901-01-01T15:45:00.000Z',
|
36
36
|
[time_7] [time](7) NULL DEFAULT '04:20:00.2883215',
|
37
37
|
[time_2] [time](2) NULL,
|
38
|
+
[time_default] [time] NULL DEFAULT '15:03:42.0621978',
|
38
39
|
-- Character Strings
|
39
40
|
[char_10] [char](10) NULL DEFAULT '1234567890',
|
40
41
|
[varchar_50] [varchar](50) NULL DEFAULT 'test varchar_50',
|
@@ -64,10 +64,6 @@ ActiveRecord::Schema.define do
|
|
64
64
|
t.uuid :uuid_nil_default, default: nil
|
65
65
|
end
|
66
66
|
|
67
|
-
create_table '[some.Name]', force: true do |t|
|
68
|
-
t.varchar :name
|
69
|
-
end
|
70
|
-
|
71
67
|
create_table 'sst_my$strange_table', force: true do |t|
|
72
68
|
t.string :name
|
73
69
|
end
|
@@ -148,12 +144,20 @@ ActiveRecord::Schema.define do
|
|
148
144
|
|
149
145
|
# Constraints
|
150
146
|
|
151
|
-
create_table(:sst_has_fks, force: true)
|
147
|
+
create_table(:sst_has_fks, force: true) do |t|
|
148
|
+
t.column(:fk_id, :bigint, null: false)
|
149
|
+
t.column(:fk_id2, :bigint)
|
150
|
+
end
|
151
|
+
|
152
152
|
create_table(:sst_has_pks, force: true) { }
|
153
153
|
execute <<-ADDFKSQL
|
154
154
|
ALTER TABLE sst_has_fks
|
155
155
|
ADD CONSTRAINT FK__sst_has_fks_id
|
156
156
|
FOREIGN KEY ([fk_id])
|
157
|
+
REFERENCES [sst_has_pks] ([id]),
|
158
|
+
|
159
|
+
CONSTRAINT FK__sst_has_fks_id2
|
160
|
+
FOREIGN KEY ([fk_id2])
|
157
161
|
REFERENCES [sst_has_pks] ([id])
|
158
162
|
ADDFKSQL
|
159
163
|
|
@@ -181,6 +185,44 @@ ActiveRecord::Schema.define do
|
|
181
185
|
FROM sst_string_defaults
|
182
186
|
STRINGDEFAULTSBIGVIEW
|
183
187
|
|
188
|
+
# Trigger
|
189
|
+
|
190
|
+
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_table_with_trigger') DROP TABLE sst_table_with_trigger"
|
191
|
+
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_table_with_trigger_history') DROP TABLE sst_table_with_trigger_history"
|
192
|
+
execute <<-SQL
|
193
|
+
CREATE TABLE sst_table_with_trigger(
|
194
|
+
id bigint IDENTITY NOT NULL PRIMARY KEY,
|
195
|
+
event_name nvarchar(255)
|
196
|
+
)
|
197
|
+
CREATE TABLE sst_table_with_trigger_history(
|
198
|
+
id bigint IDENTITY NOT NULL PRIMARY KEY,
|
199
|
+
id_source nvarchar(36),
|
200
|
+
event_name nvarchar(255)
|
201
|
+
)
|
202
|
+
SQL
|
203
|
+
execute <<-SQL
|
204
|
+
CREATE TRIGGER sst_table_with_trigger_t ON sst_table_with_trigger
|
205
|
+
FOR INSERT
|
206
|
+
AS
|
207
|
+
INSERT INTO sst_table_with_trigger_history (id_source, event_name)
|
208
|
+
SELECT id AS id_source, event_name FROM INSERTED
|
209
|
+
SQL
|
210
|
+
|
211
|
+
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_table_with_uuid_trigger') DROP TABLE sst_table_with_uuid_trigger"
|
212
|
+
execute <<-SQL
|
213
|
+
CREATE TABLE sst_table_with_uuid_trigger(
|
214
|
+
id uniqueidentifier DEFAULT NEWID() PRIMARY KEY,
|
215
|
+
event_name nvarchar(255)
|
216
|
+
)
|
217
|
+
SQL
|
218
|
+
execute <<-SQL
|
219
|
+
CREATE TRIGGER sst_table_with_uuid_trigger_t ON sst_table_with_uuid_trigger
|
220
|
+
FOR INSERT
|
221
|
+
AS
|
222
|
+
INSERT INTO sst_table_with_trigger_history (id_source, event_name)
|
223
|
+
SELECT id AS id_source, event_name FROM INSERTED
|
224
|
+
SQL
|
225
|
+
|
184
226
|
# Another schema.
|
185
227
|
|
186
228
|
create_table :sst_schema_columns, force: true do |t|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'active_record/connection_adapters/sqlserver_adapter'
|
2
|
+
|
3
|
+
module SqlIgnoredCache
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
IGNORED_SQL = [
|
7
|
+
/INFORMATION_SCHEMA\.(TABLES|VIEWS|COLUMNS|KEY_COLUMN_USAGE)/im,
|
8
|
+
/SELECT @@version/,
|
9
|
+
/SELECT @@TRANCOUNT/,
|
10
|
+
/(BEGIN|COMMIT|ROLLBACK|SAVE) TRANSACTION/,
|
11
|
+
/SELECT CAST\(.* AS .*\) AS value/,
|
12
|
+
/SELECT DATABASEPROPERTYEX/im
|
13
|
+
]
|
14
|
+
|
15
|
+
# We don't want to coerce every ActiveRecord test that relies on `query_cache`
|
16
|
+
# just because we do more queries than the other adapters.
|
17
|
+
#
|
18
|
+
# Removing internal queries from the cache will make AR tests pass without
|
19
|
+
# compromising cache outside tests.
|
20
|
+
def cache_sql(sql, name, binds)
|
21
|
+
result = super
|
22
|
+
@query_cache.delete_if { |k, v| k =~ Regexp.union(IGNORED_SQL) }
|
23
|
+
result
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
ActiveSupport.on_load(:active_record) do
|
28
|
+
ActiveRecord::ConnectionAdapters::SQLServerAdapter.prepend(SqlIgnoredCache)
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbcsqlserver-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 52.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken Collins
|
@@ -15,42 +15,42 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date:
|
18
|
+
date: 2021-01-05 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
requirement: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 5.
|
25
|
+
version: 5.2.0
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 5.
|
28
|
+
version: 5.2.3
|
29
29
|
name: activerecord
|
30
|
-
prerelease: false
|
31
30
|
type: :runtime
|
31
|
+
prerelease: false
|
32
32
|
version_requirements: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
34
|
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 5.
|
36
|
+
version: 5.2.0
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 5.
|
39
|
+
version: 5.2.3
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
requirement: !ruby/object:Gem::Requirement
|
42
42
|
requirements:
|
43
43
|
- - "~>"
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
45
|
+
version: '52.7'
|
46
46
|
name: activerecord-jdbc-adapter
|
47
|
-
prerelease: false
|
48
47
|
type: :runtime
|
48
|
+
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '52.7'
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
@@ -58,8 +58,8 @@ dependencies:
|
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: 0.6.0
|
60
60
|
name: jdbc-mssql
|
61
|
-
prerelease: false
|
62
61
|
type: :runtime
|
62
|
+
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
@@ -78,11 +78,10 @@ files:
|
|
78
78
|
- ".travis.yml"
|
79
79
|
- CHANGELOG.md
|
80
80
|
- CODE_OF_CONDUCT.md
|
81
|
-
- Dockerfile
|
81
|
+
- Dockerfile.ci
|
82
82
|
- Gemfile
|
83
83
|
- Guardfile
|
84
84
|
- MIT-LICENSE
|
85
|
-
- RAILS5-TODO.md
|
86
85
|
- README.md
|
87
86
|
- RUNNING_UNIT_TESTS.md
|
88
87
|
- Rakefile
|
@@ -92,9 +91,12 @@ files:
|
|
92
91
|
- docker-compose.ci.yml
|
93
92
|
- lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb
|
94
93
|
- lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb
|
94
|
+
- lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
|
95
95
|
- lib/active_record/connection_adapters/sqlserver/core_ext/date_time.rb
|
96
96
|
- lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb
|
97
97
|
- lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
|
98
|
+
- lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb
|
99
|
+
- lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb
|
98
100
|
- lib/active_record/connection_adapters/sqlserver/database_limits.rb
|
99
101
|
- lib/active_record/connection_adapters/sqlserver/database_statements.rb
|
100
102
|
- lib/active_record/connection_adapters/sqlserver/database_tasks.rb
|
@@ -156,10 +158,14 @@ files:
|
|
156
158
|
- lib/activerecord-sqlserver-adapter.rb
|
157
159
|
- lib/arel/visitors/sqlserver.rb
|
158
160
|
- lib/arel_sqlserver.rb
|
161
|
+
- lib/jdbc_mssql_driver_loader.rb
|
159
162
|
- test/appveyor/dbsetup.ps1
|
160
163
|
- test/appveyor/dbsetup.sql
|
164
|
+
- test/bin/install-freetds.sh
|
165
|
+
- test/bin/setup.sh
|
161
166
|
- test/bin/wait-for.sh
|
162
167
|
- test/cases/adapter_test_sqlserver.rb
|
168
|
+
- test/cases/change_column_null_test_sqlserver.rb
|
163
169
|
- test/cases/coerced_tests.rb
|
164
170
|
- test/cases/column_test_sqlserver.rb
|
165
171
|
- test/cases/connection_test_sqlserver.rb
|
@@ -179,18 +185,19 @@ files:
|
|
179
185
|
- test/cases/showplan_test_sqlserver.rb
|
180
186
|
- test/cases/specific_schema_test_sqlserver.rb
|
181
187
|
- test/cases/transaction_test_sqlserver.rb
|
188
|
+
- test/cases/trigger_test_sqlserver.rb
|
182
189
|
- test/cases/utils_test_sqlserver.rb
|
183
190
|
- test/cases/uuid_test_sqlserver.rb
|
184
191
|
- test/config.yml
|
185
192
|
- test/debug.rb
|
186
193
|
- test/fixtures/1px.gif
|
194
|
+
- test/migrations/create_clients_and_change_column_null.rb
|
187
195
|
- test/migrations/transaction_table/1_table_will_never_be_created.rb
|
188
196
|
- test/models/sqlserver/booking.rb
|
189
197
|
- test/models/sqlserver/customers_view.rb
|
190
198
|
- test/models/sqlserver/datatype.rb
|
191
199
|
- test/models/sqlserver/datatype_migration.rb
|
192
200
|
- test/models/sqlserver/dollar_table_name.rb
|
193
|
-
- test/models/sqlserver/dot_table_name.rb
|
194
201
|
- test/models/sqlserver/edge_schema.rb
|
195
202
|
- test/models/sqlserver/fk_has_fk.rb
|
196
203
|
- test/models/sqlserver/fk_has_pk.rb
|
@@ -206,6 +213,8 @@ files:
|
|
206
213
|
- test/models/sqlserver/string_defaults_big_view.rb
|
207
214
|
- test/models/sqlserver/string_defaults_view.rb
|
208
215
|
- test/models/sqlserver/tinyint_pk.rb
|
216
|
+
- test/models/sqlserver/trigger.rb
|
217
|
+
- test/models/sqlserver/trigger_history.rb
|
209
218
|
- test/models/sqlserver/upper.rb
|
210
219
|
- test/models/sqlserver/uppered.rb
|
211
220
|
- test/models/sqlserver/uuid.rb
|
@@ -214,6 +223,7 @@ files:
|
|
214
223
|
- test/schema/sqlserver_specific_schema.rb
|
215
224
|
- test/support/coerceable_test_sqlserver.rb
|
216
225
|
- test/support/connection_reflection.rb
|
226
|
+
- test/support/core_ext/query_cache.rb
|
217
227
|
- test/support/load_schema_sqlserver.rb
|
218
228
|
- test/support/minitest_sqlserver.rb
|
219
229
|
- test/support/paths_sqlserver.rb
|
@@ -246,8 +256,11 @@ summary: ActiveRecord JDBC SQL Server Adapter.
|
|
246
256
|
test_files:
|
247
257
|
- test/appveyor/dbsetup.ps1
|
248
258
|
- test/appveyor/dbsetup.sql
|
259
|
+
- test/bin/install-freetds.sh
|
260
|
+
- test/bin/setup.sh
|
249
261
|
- test/bin/wait-for.sh
|
250
262
|
- test/cases/adapter_test_sqlserver.rb
|
263
|
+
- test/cases/change_column_null_test_sqlserver.rb
|
251
264
|
- test/cases/coerced_tests.rb
|
252
265
|
- test/cases/column_test_sqlserver.rb
|
253
266
|
- test/cases/connection_test_sqlserver.rb
|
@@ -267,18 +280,19 @@ test_files:
|
|
267
280
|
- test/cases/showplan_test_sqlserver.rb
|
268
281
|
- test/cases/specific_schema_test_sqlserver.rb
|
269
282
|
- test/cases/transaction_test_sqlserver.rb
|
283
|
+
- test/cases/trigger_test_sqlserver.rb
|
270
284
|
- test/cases/utils_test_sqlserver.rb
|
271
285
|
- test/cases/uuid_test_sqlserver.rb
|
272
286
|
- test/config.yml
|
273
287
|
- test/debug.rb
|
274
288
|
- test/fixtures/1px.gif
|
289
|
+
- test/migrations/create_clients_and_change_column_null.rb
|
275
290
|
- test/migrations/transaction_table/1_table_will_never_be_created.rb
|
276
291
|
- test/models/sqlserver/booking.rb
|
277
292
|
- test/models/sqlserver/customers_view.rb
|
278
293
|
- test/models/sqlserver/datatype.rb
|
279
294
|
- test/models/sqlserver/datatype_migration.rb
|
280
295
|
- test/models/sqlserver/dollar_table_name.rb
|
281
|
-
- test/models/sqlserver/dot_table_name.rb
|
282
296
|
- test/models/sqlserver/edge_schema.rb
|
283
297
|
- test/models/sqlserver/fk_has_fk.rb
|
284
298
|
- test/models/sqlserver/fk_has_pk.rb
|
@@ -294,6 +308,8 @@ test_files:
|
|
294
308
|
- test/models/sqlserver/string_defaults_big_view.rb
|
295
309
|
- test/models/sqlserver/string_defaults_view.rb
|
296
310
|
- test/models/sqlserver/tinyint_pk.rb
|
311
|
+
- test/models/sqlserver/trigger.rb
|
312
|
+
- test/models/sqlserver/trigger_history.rb
|
297
313
|
- test/models/sqlserver/upper.rb
|
298
314
|
- test/models/sqlserver/uppered.rb
|
299
315
|
- test/models/sqlserver/uuid.rb
|
@@ -302,6 +318,7 @@ test_files:
|
|
302
318
|
- test/schema/sqlserver_specific_schema.rb
|
303
319
|
- test/support/coerceable_test_sqlserver.rb
|
304
320
|
- test/support/connection_reflection.rb
|
321
|
+
- test/support/core_ext/query_cache.rb
|
305
322
|
- test/support/load_schema_sqlserver.rb
|
306
323
|
- test/support/minitest_sqlserver.rb
|
307
324
|
- test/support/paths_sqlserver.rb
|
data/RAILS5-TODO.md
DELETED