activerecord-sqlserver-adapter 6.0.0.rc2 → 6.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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