activerecord-sqlserver-adapter 6.0.0.rc2 → 6.1.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +26 -0
  3. data/CHANGELOG.md +20 -41
  4. data/README.md +32 -3
  5. data/RUNNING_UNIT_TESTS.md +1 -1
  6. data/VERSION +1 -1
  7. data/activerecord-sqlserver-adapter.gemspec +1 -1
  8. data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +0 -9
  9. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +7 -2
  10. data/lib/active_record/connection_adapters/sqlserver/database_limits.rb +0 -4
  11. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +28 -16
  12. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +7 -7
  13. data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +22 -1
  14. data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +9 -3
  15. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +31 -8
  16. data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +27 -7
  17. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +0 -1
  18. data/lib/active_record/connection_adapters/sqlserver/transaction.rb +2 -2
  19. data/lib/active_record/connection_adapters/sqlserver/type.rb +1 -0
  20. data/lib/active_record/connection_adapters/sqlserver/type/decimal_without_scale.rb +22 -0
  21. data/lib/active_record/connection_adapters/sqlserver/utils.rb +1 -1
  22. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +100 -68
  23. data/lib/active_record/connection_adapters/sqlserver_column.rb +17 -0
  24. data/lib/active_record/sqlserver_base.rb +9 -15
  25. data/lib/active_record/tasks/sqlserver_database_tasks.rb +17 -14
  26. data/lib/arel/visitors/sqlserver.rb +111 -39
  27. data/test/cases/adapter_test_sqlserver.rb +48 -14
  28. data/test/cases/change_column_collation_test_sqlserver.rb +33 -0
  29. data/test/cases/coerced_tests.rb +598 -78
  30. data/test/cases/column_test_sqlserver.rb +5 -2
  31. data/test/cases/disconnected_test_sqlserver.rb +39 -0
  32. data/test/cases/execute_procedure_test_sqlserver.rb +9 -0
  33. data/test/cases/in_clause_test_sqlserver.rb +27 -0
  34. data/test/cases/lateral_test_sqlserver.rb +35 -0
  35. data/test/cases/migration_test_sqlserver.rb +51 -0
  36. data/test/cases/optimizer_hints_test_sqlserver.rb +72 -0
  37. data/test/cases/order_test_sqlserver.rb +7 -0
  38. data/test/cases/primary_keys_test_sqlserver.rb +103 -0
  39. data/test/cases/rake_test_sqlserver.rb +3 -2
  40. data/test/cases/schema_dumper_test_sqlserver.rb +20 -3
  41. data/test/migrations/create_clients_and_change_column_collation.rb +19 -0
  42. data/test/models/sqlserver/sst_string_collation.rb +3 -0
  43. data/test/schema/sqlserver_specific_schema.rb +17 -0
  44. data/test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic.dump +0 -0
  45. data/test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic_associations.dump +0 -0
  46. data/test/support/sql_counter_sqlserver.rb +14 -12
  47. metadata +32 -13
  48. data/.travis.yml +0 -23
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateClientsAndChangeColumnCollation < ActiveRecord::Migration[5.2]
4
+ def up
5
+ create_table :clients do |t|
6
+ t.string :name
7
+ t.string :code, collation: :SQL_Latin1_General_CP1_CS_AS
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ change_column :clients, :name, :string, collation: 'SQL_Latin1_General_CP1_CS_AS'
13
+ change_column :clients, :code, :string, collation: 'SQL_Latin1_General_CP1_CI_AS'
14
+ end
15
+
16
+ def down
17
+ drop_table :clients
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ class SstStringCollation < ActiveRecord::Base
2
+ self.table_name = "sst_string_collation"
3
+ end
@@ -95,6 +95,13 @@ ActiveRecord::Schema.define do
95
95
  t.column :string_with_multiline_default, :string, default: "Some long default with a\nnew line."
96
96
  end
97
97
 
98
+ create_table :sst_string_collation, collation: :SQL_Latin1_General_CP1_CI_AS, force: true do |t|
99
+ t.string :string_without_collation
100
+ t.varchar :string_default_collation, collation: :SQL_Latin1_General_CP1_CI_AS
101
+ t.varchar :string_with_collation, collation: :SQL_Latin1_General_CP1_CS_AS
102
+ t.varchar :varchar_with_collation, collation: :SQL_Latin1_General_CP1_CS_AS
103
+ end
104
+
98
105
  create_table :sst_edge_schemas, force: true do |t|
99
106
  t.string :description
100
107
  t.column "crazy]]quote", :string
@@ -277,4 +284,14 @@ ActiveRecord::Schema.define do
277
284
  field_2 int NOT NULL PRIMARY KEY,
278
285
  )
279
286
  SCHEMATESTMULTIPLESCHEMA
287
+
288
+ execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'unique_key_dumped_table') DROP TABLE unique_key_dumped_table"
289
+ execute <<-SQLSERVERUNIQUEKEYS
290
+ CREATE TABLE unique_key_dumped_table (
291
+ id int IDENTITY(1,1) NOT NULL,
292
+ unique_field int DEFAULT 0 NOT NULL,
293
+ CONSTRAINT IX_UNIQUE_KEY UNIQUE (unique_field),
294
+ CONSTRAINT PK_UNIQUE_KEY PRIMARY KEY (id)
295
+ );
296
+ SQLSERVERUNIQUEKEYS
280
297
  end
@@ -11,17 +11,19 @@ module ARTest
11
11
  end
12
12
  end
13
13
 
14
- ignored_sql = [
15
- /INFORMATION_SCHEMA\.(TABLES|VIEWS|COLUMNS|KEY_COLUMN_USAGE)/im,
16
- /sys.columns/i,
17
- /SELECT @@version/,
18
- /SELECT @@TRANCOUNT/,
19
- /(BEGIN|COMMIT|ROLLBACK|SAVE) TRANSACTION/,
20
- /SELECT CAST\(.* AS .*\) AS value/,
21
- /SELECT DATABASEPROPERTYEX/im
22
- ]
23
-
24
- sqlcounter = ObjectSpace.each_object(ActiveRecord::SQLCounter).to_a.first
25
- sqlcounter.instance_variable_set :@ignore, Regexp.union(ignored_sql.push(sqlcounter.ignore))
14
+ # TODO: Delete the code below after all Rails 6.1 tests passing.
15
+ #
16
+ # ignored_sql = [
17
+ # /INFORMATION_SCHEMA\.(TABLES|VIEWS|COLUMNS|KEY_COLUMN_USAGE)/im,
18
+ # /sys.columns/i,
19
+ # /SELECT @@version/,
20
+ # /SELECT @@TRANCOUNT/,
21
+ # /(BEGIN|COMMIT|ROLLBACK|SAVE) TRANSACTION/,
22
+ # /SELECT CAST\(.* AS .*\) AS value/,
23
+ # /SELECT DATABASEPROPERTYEX/im
24
+ # ]
25
+ #
26
+ # sqlcounter = ObjectSpace.each_object(ActiveRecord::SQLCounter).to_a.first
27
+ # sqlcounter.instance_variable_set :@ignore, Regexp.union(ignored_sql.push(sqlcounter.ignore))
26
28
  end
27
29
  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: 6.0.0.rc2
4
+ version: 6.1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -11,10 +11,10 @@ authors:
11
11
  - Shawn Balestracci
12
12
  - Joe Rafaniello
13
13
  - Tom Ward
14
- autorequire:
14
+ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2020-05-19 00:00:00.000000000 Z
17
+ date: 2021-06-04 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activerecord
@@ -22,14 +22,14 @@ dependencies:
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 6.0.0
25
+ version: 6.1.0
26
26
  type: :runtime
27
27
  prerelease: false
28
28
  version_requirements: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 6.0.0
32
+ version: 6.1.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: tiny_tds
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -54,9 +54,9 @@ extra_rdoc_files: []
54
54
  files:
55
55
  - ".editorconfig"
56
56
  - ".github/issue_template.md"
57
+ - ".github/workflows/ci.yml"
57
58
  - ".gitignore"
58
59
  - ".rubocop.yml"
59
- - ".travis.yml"
60
60
  - CHANGELOG.md
61
61
  - CODE_OF_CONDUCT.md
62
62
  - Dockerfile.ci
@@ -104,6 +104,7 @@ files:
104
104
  - lib/active_record/connection_adapters/sqlserver/type/datetime2.rb
105
105
  - lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb
106
106
  - lib/active_record/connection_adapters/sqlserver/type/decimal.rb
107
+ - lib/active_record/connection_adapters/sqlserver/type/decimal_without_scale.rb
107
108
  - lib/active_record/connection_adapters/sqlserver/type/float.rb
108
109
  - lib/active_record/connection_adapters/sqlserver/type/integer.rb
109
110
  - lib/active_record/connection_adapters/sqlserver/type/json.rb
@@ -143,10 +144,12 @@ files:
143
144
  - test/bin/install-openssl.sh
144
145
  - test/bin/setup.sh
145
146
  - test/cases/adapter_test_sqlserver.rb
147
+ - test/cases/change_column_collation_test_sqlserver.rb
146
148
  - test/cases/change_column_null_test_sqlserver.rb
147
149
  - test/cases/coerced_tests.rb
148
150
  - test/cases/column_test_sqlserver.rb
149
151
  - test/cases/connection_test_sqlserver.rb
152
+ - test/cases/disconnected_test_sqlserver.rb
150
153
  - test/cases/execute_procedure_test_sqlserver.rb
151
154
  - test/cases/fetch_test_sqlserver.rb
152
155
  - test/cases/fully_qualified_identifier_test_sqlserver.rb
@@ -154,9 +157,12 @@ files:
154
157
  - test/cases/in_clause_test_sqlserver.rb
155
158
  - test/cases/index_test_sqlserver.rb
156
159
  - test/cases/json_test_sqlserver.rb
160
+ - test/cases/lateral_test_sqlserver.rb
157
161
  - test/cases/migration_test_sqlserver.rb
162
+ - test/cases/optimizer_hints_test_sqlserver.rb
158
163
  - test/cases/order_test_sqlserver.rb
159
164
  - test/cases/pessimistic_locking_test_sqlserver.rb
165
+ - test/cases/primary_keys_test_sqlserver.rb
160
166
  - test/cases/rake_test_sqlserver.rb
161
167
  - test/cases/schema_dumper_test_sqlserver.rb
162
168
  - test/cases/schema_test_sqlserver.rb
@@ -170,6 +176,7 @@ files:
170
176
  - test/config.yml
171
177
  - test/debug.rb
172
178
  - test/fixtures/1px.gif
179
+ - test/migrations/create_clients_and_change_column_collation.rb
173
180
  - test/migrations/create_clients_and_change_column_null.rb
174
181
  - test/migrations/transaction_table/1_table_will_never_be_created.rb
175
182
  - test/models/sqlserver/booking.rb
@@ -188,6 +195,7 @@ files:
188
195
  - test/models/sqlserver/quoted_view_1.rb
189
196
  - test/models/sqlserver/quoted_view_2.rb
190
197
  - test/models/sqlserver/sst_memory.rb
198
+ - test/models/sqlserver/sst_string_collation.rb
191
199
  - test/models/sqlserver/string_default.rb
192
200
  - test/models/sqlserver/string_defaults_big_view.rb
193
201
  - test/models/sqlserver/string_defaults_view.rb
@@ -204,6 +212,8 @@ files:
204
212
  - test/support/connection_reflection.rb
205
213
  - test/support/core_ext/query_cache.rb
206
214
  - test/support/load_schema_sqlserver.rb
215
+ - test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic.dump
216
+ - test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic_associations.dump
207
217
  - test/support/minitest_sqlserver.rb
208
218
  - test/support/paths_sqlserver.rb
209
219
  - test/support/rake_helpers.rb
@@ -214,9 +224,9 @@ licenses:
214
224
  - MIT
215
225
  metadata:
216
226
  bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
217
- changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v6.0.0.rc2/CHANGELOG.md
218
- source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v6.0.0.rc2
219
- post_install_message:
227
+ changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v6.1.0.0/CHANGELOG.md
228
+ source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v6.1.0.0
229
+ post_install_message:
220
230
  rdoc_options: []
221
231
  require_paths:
222
232
  - lib
@@ -227,12 +237,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
237
  version: 2.5.0
228
238
  required_rubygems_version: !ruby/object:Gem::Requirement
229
239
  requirements:
230
- - - ">"
240
+ - - ">="
231
241
  - !ruby/object:Gem::Version
232
- version: 1.3.1
242
+ version: '0'
233
243
  requirements: []
234
- rubygems_version: 3.0.3
235
- signing_key:
244
+ rubygems_version: 3.2.3
245
+ signing_key:
236
246
  specification_version: 4
237
247
  summary: ActiveRecord SQL Server Adapter.
238
248
  test_files:
@@ -242,10 +252,12 @@ test_files:
242
252
  - test/bin/install-openssl.sh
243
253
  - test/bin/setup.sh
244
254
  - test/cases/adapter_test_sqlserver.rb
255
+ - test/cases/change_column_collation_test_sqlserver.rb
245
256
  - test/cases/change_column_null_test_sqlserver.rb
246
257
  - test/cases/coerced_tests.rb
247
258
  - test/cases/column_test_sqlserver.rb
248
259
  - test/cases/connection_test_sqlserver.rb
260
+ - test/cases/disconnected_test_sqlserver.rb
249
261
  - test/cases/execute_procedure_test_sqlserver.rb
250
262
  - test/cases/fetch_test_sqlserver.rb
251
263
  - test/cases/fully_qualified_identifier_test_sqlserver.rb
@@ -253,9 +265,12 @@ test_files:
253
265
  - test/cases/in_clause_test_sqlserver.rb
254
266
  - test/cases/index_test_sqlserver.rb
255
267
  - test/cases/json_test_sqlserver.rb
268
+ - test/cases/lateral_test_sqlserver.rb
256
269
  - test/cases/migration_test_sqlserver.rb
270
+ - test/cases/optimizer_hints_test_sqlserver.rb
257
271
  - test/cases/order_test_sqlserver.rb
258
272
  - test/cases/pessimistic_locking_test_sqlserver.rb
273
+ - test/cases/primary_keys_test_sqlserver.rb
259
274
  - test/cases/rake_test_sqlserver.rb
260
275
  - test/cases/schema_dumper_test_sqlserver.rb
261
276
  - test/cases/schema_test_sqlserver.rb
@@ -269,6 +284,7 @@ test_files:
269
284
  - test/config.yml
270
285
  - test/debug.rb
271
286
  - test/fixtures/1px.gif
287
+ - test/migrations/create_clients_and_change_column_collation.rb
272
288
  - test/migrations/create_clients_and_change_column_null.rb
273
289
  - test/migrations/transaction_table/1_table_will_never_be_created.rb
274
290
  - test/models/sqlserver/booking.rb
@@ -287,6 +303,7 @@ test_files:
287
303
  - test/models/sqlserver/quoted_view_1.rb
288
304
  - test/models/sqlserver/quoted_view_2.rb
289
305
  - test/models/sqlserver/sst_memory.rb
306
+ - test/models/sqlserver/sst_string_collation.rb
290
307
  - test/models/sqlserver/string_default.rb
291
308
  - test/models/sqlserver/string_defaults_big_view.rb
292
309
  - test/models/sqlserver/string_defaults_view.rb
@@ -303,6 +320,8 @@ test_files:
303
320
  - test/support/connection_reflection.rb
304
321
  - test/support/core_ext/query_cache.rb
305
322
  - test/support/load_schema_sqlserver.rb
323
+ - test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic.dump
324
+ - test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic_associations.dump
306
325
  - test/support/minitest_sqlserver.rb
307
326
  - test/support/paths_sqlserver.rb
308
327
  - test/support/rake_helpers.rb
data/.travis.yml DELETED
@@ -1,23 +0,0 @@
1
- sudo: required
2
- cache: bundler
3
- services:
4
- - docker
5
- env:
6
- global:
7
- - COMPOSE_FILE: docker-compose.ci.yml
8
- before_install:
9
- - sudo rm /usr/local/bin/docker-compose
10
- - sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
11
- - sudo chmod +x /usr/local/bin/docker-compose
12
- install:
13
- - docker-compose build --build-arg TARGET_VERSION=$TARGET_VERSION
14
- script:
15
- - docker-compose run ci
16
- matrix:
17
- include:
18
- - name: 2.5.8
19
- env: TARGET_VERSION=2.5.8
20
- - name: 2.6.6
21
- env: TARGET_VERSION=2.6.6
22
- - name: 2.7.1
23
- env: TARGET_VERSION=2.7.1