activerecord-jdbcsqlserver-adapter 50.0.0 → 52.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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