activerecord-sqlserver-adapter 6.0.0.rc1 → 6.1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +26 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +29 -0
  5. data/CHANGELOG.md +18 -23
  6. data/Gemfile +11 -5
  7. data/Guardfile +9 -8
  8. data/README.md +32 -3
  9. data/RUNNING_UNIT_TESTS.md +1 -1
  10. data/Rakefile +12 -16
  11. data/VERSION +1 -1
  12. data/activerecord-sqlserver-adapter.gemspec +4 -4
  13. data/lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb +0 -4
  14. data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +1 -4
  15. data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +3 -13
  16. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +8 -5
  17. data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +2 -3
  18. data/lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb +2 -3
  19. data/lib/active_record/connection_adapters/sqlserver/database_limits.rb +0 -4
  20. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +58 -43
  21. data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +7 -12
  22. data/lib/active_record/connection_adapters/sqlserver/errors.rb +0 -3
  23. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +15 -15
  24. data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +22 -3
  25. data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +16 -10
  26. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +131 -105
  27. data/lib/active_record/connection_adapters/sqlserver/showplan.rb +6 -8
  28. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +2 -2
  29. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_xml.rb +1 -1
  30. data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +25 -7
  31. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +1 -5
  32. data/lib/active_record/connection_adapters/sqlserver/transaction.rb +6 -10
  33. data/lib/active_record/connection_adapters/sqlserver/type.rb +36 -35
  34. data/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +0 -2
  35. data/lib/active_record/connection_adapters/sqlserver/type/binary.rb +0 -2
  36. data/lib/active_record/connection_adapters/sqlserver/type/boolean.rb +0 -2
  37. data/lib/active_record/connection_adapters/sqlserver/type/char.rb +2 -2
  38. data/lib/active_record/connection_adapters/sqlserver/type/data.rb +0 -2
  39. data/lib/active_record/connection_adapters/sqlserver/type/date.rb +2 -3
  40. data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +2 -3
  41. data/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +0 -2
  42. data/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +0 -2
  43. data/lib/active_record/connection_adapters/sqlserver/type/decimal.rb +0 -2
  44. data/lib/active_record/connection_adapters/sqlserver/type/decimal_without_scale.rb +22 -0
  45. data/lib/active_record/connection_adapters/sqlserver/type/float.rb +0 -2
  46. data/lib/active_record/connection_adapters/sqlserver/type/integer.rb +0 -2
  47. data/lib/active_record/connection_adapters/sqlserver/type/json.rb +0 -1
  48. data/lib/active_record/connection_adapters/sqlserver/type/money.rb +0 -2
  49. data/lib/active_record/connection_adapters/sqlserver/type/real.rb +0 -2
  50. data/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb +0 -2
  51. data/lib/active_record/connection_adapters/sqlserver/type/small_money.rb +0 -2
  52. data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +0 -2
  53. data/lib/active_record/connection_adapters/sqlserver/type/string.rb +0 -2
  54. data/lib/active_record/connection_adapters/sqlserver/type/text.rb +0 -2
  55. data/lib/active_record/connection_adapters/sqlserver/type/time.rb +2 -3
  56. data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +6 -9
  57. data/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb +0 -2
  58. data/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb +0 -2
  59. data/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb +1 -3
  60. data/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb +0 -2
  61. data/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb +0 -2
  62. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb +0 -2
  63. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb +0 -2
  64. data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +1 -2
  65. data/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb +1 -3
  66. data/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb +0 -2
  67. data/lib/active_record/connection_adapters/sqlserver/type/varchar.rb +1 -3
  68. data/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb +0 -2
  69. data/lib/active_record/connection_adapters/sqlserver/utils.rb +8 -11
  70. data/lib/active_record/connection_adapters/sqlserver/version.rb +0 -2
  71. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +170 -136
  72. data/lib/active_record/connection_adapters/sqlserver_column.rb +16 -1
  73. data/lib/active_record/sqlserver_base.rb +9 -15
  74. data/lib/active_record/tasks/sqlserver_database_tasks.rb +36 -39
  75. data/lib/activerecord-sqlserver-adapter.rb +1 -1
  76. data/lib/arel/visitors/sqlserver.rb +126 -50
  77. data/lib/arel_sqlserver.rb +2 -2
  78. data/test/cases/adapter_test_sqlserver.rb +203 -190
  79. data/test/cases/change_column_collation_test_sqlserver.rb +33 -0
  80. data/test/cases/change_column_null_test_sqlserver.rb +12 -12
  81. data/test/cases/coerced_tests.rb +656 -318
  82. data/test/cases/column_test_sqlserver.rb +285 -284
  83. data/test/cases/connection_test_sqlserver.rb +15 -20
  84. data/test/cases/disconnected_test_sqlserver.rb +39 -0
  85. data/test/cases/execute_procedure_test_sqlserver.rb +26 -19
  86. data/test/cases/fetch_test_sqlserver.rb +14 -22
  87. data/test/cases/fully_qualified_identifier_test_sqlserver.rb +12 -18
  88. data/test/cases/helper_sqlserver.rb +13 -15
  89. data/test/cases/in_clause_test_sqlserver.rb +36 -9
  90. data/test/cases/index_test_sqlserver.rb +13 -15
  91. data/test/cases/json_test_sqlserver.rb +23 -25
  92. data/test/cases/lateral_test_sqlserver.rb +35 -0
  93. data/test/cases/migration_test_sqlserver.rb +71 -26
  94. data/test/cases/optimizer_hints_test_sqlserver.rb +72 -0
  95. data/test/cases/order_test_sqlserver.rb +57 -53
  96. data/test/cases/pessimistic_locking_test_sqlserver.rb +25 -33
  97. data/test/cases/primary_keys_test_sqlserver.rb +103 -0
  98. data/test/cases/rake_test_sqlserver.rb +33 -46
  99. data/test/cases/schema_dumper_test_sqlserver.rb +121 -108
  100. data/test/cases/schema_test_sqlserver.rb +18 -26
  101. data/test/cases/scratchpad_test_sqlserver.rb +2 -4
  102. data/test/cases/showplan_test_sqlserver.rb +24 -33
  103. data/test/cases/specific_schema_test_sqlserver.rb +66 -65
  104. data/test/cases/transaction_test_sqlserver.rb +16 -19
  105. data/test/cases/trigger_test_sqlserver.rb +12 -12
  106. data/test/cases/utils_test_sqlserver.rb +68 -70
  107. data/test/cases/uuid_test_sqlserver.rb +11 -13
  108. data/test/debug.rb +6 -6
  109. data/test/migrations/create_clients_and_change_column_collation.rb +19 -0
  110. data/test/migrations/create_clients_and_change_column_null.rb +1 -1
  111. data/test/migrations/transaction_table/1_table_will_never_be_created.rb +2 -4
  112. data/test/models/sqlserver/booking.rb +1 -1
  113. data/test/models/sqlserver/customers_view.rb +1 -1
  114. data/test/models/sqlserver/dollar_table_name.rb +1 -1
  115. data/test/models/sqlserver/edge_schema.rb +1 -3
  116. data/test/models/sqlserver/fk_has_fk.rb +1 -1
  117. data/test/models/sqlserver/fk_has_pk.rb +1 -1
  118. data/test/models/sqlserver/natural_pk_data.rb +2 -2
  119. data/test/models/sqlserver/natural_pk_int_data.rb +1 -1
  120. data/test/models/sqlserver/no_pk_data.rb +1 -1
  121. data/test/models/sqlserver/object_default.rb +1 -1
  122. data/test/models/sqlserver/quoted_table.rb +2 -2
  123. data/test/models/sqlserver/quoted_view_1.rb +1 -1
  124. data/test/models/sqlserver/quoted_view_2.rb +1 -1
  125. data/test/models/sqlserver/sst_memory.rb +1 -1
  126. data/test/models/sqlserver/sst_string_collation.rb +3 -0
  127. data/test/models/sqlserver/string_default.rb +1 -1
  128. data/test/models/sqlserver/string_defaults_big_view.rb +1 -1
  129. data/test/models/sqlserver/string_defaults_view.rb +1 -1
  130. data/test/models/sqlserver/tinyint_pk.rb +1 -1
  131. data/test/models/sqlserver/trigger.rb +2 -2
  132. data/test/models/sqlserver/trigger_history.rb +1 -1
  133. data/test/models/sqlserver/upper.rb +1 -1
  134. data/test/models/sqlserver/uppered.rb +1 -1
  135. data/test/models/sqlserver/uuid.rb +1 -1
  136. data/test/schema/sqlserver_specific_schema.rb +36 -21
  137. data/test/support/coerceable_test_sqlserver.rb +1 -4
  138. data/test/support/connection_reflection.rb +1 -2
  139. data/test/support/core_ext/query_cache.rb +1 -1
  140. data/test/support/load_schema_sqlserver.rb +3 -5
  141. data/test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic.dump +0 -0
  142. data/test/support/marshal_compatibility_fixtures/SQLServer/rails_6_0_topic_associations.dump +0 -0
  143. data/test/support/minitest_sqlserver.rb +1 -1
  144. data/test/support/paths_sqlserver.rb +9 -11
  145. data/test/support/rake_helpers.rb +12 -10
  146. data/test/support/sql_counter_sqlserver.rb +14 -16
  147. data/test/support/test_in_memory_oltp.rb +7 -7
  148. metadata +31 -11
  149. data/.travis.yml +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e38e0db2e61f2a8afd9e9068d13927a6bf2f326b765fe60acf2251740dc1fd2c
4
- data.tar.gz: 5775ca711d927153804e9f6e7bce85af0c55a312268e49b7cb70aec1b9c153ca
3
+ metadata.gz: 257660386743662b1e8052c5073aaa07bdff955924fae3da4ba83c41229deb85
4
+ data.tar.gz: 288cf426206b713aeca8b0647f57059a4a781d00cab800340d8f5c0bad0acbdc
5
5
  SHA512:
6
- metadata.gz: d94c57956ff87d407273cdd9fc2c1277be9238ef4c46631b3a1489875a9d1e719d7350afa5c6a7df1b7cce914c7e434ea00605c6269c1a27e881b0abf7c8fa12
7
- data.tar.gz: cbacfa3df2a3005463c3d39686914fa7f2b5d517a06f177287f20f703d0b195ffdc1037b94cee70458c9fcaada7f45b8c84abc8e81cd78aff7a9ff6e3535eb19
6
+ metadata.gz: 22efb62e73df4116659bbac023f3694192476cc5d4d2840c469b19b0f6c37145cf989803c94c53d45aa78943b2a72df419ffbc15b452f612ab6f420fee10a19c
7
+ data.tar.gz: 70d8088ec4278d48beb73cc1319f681d6f3ee874d200b2868370425a2a0a9b2e2859171b5cc3817b3abf63cd512911655813bafe65ae5e319dc1bb889bf0f575
@@ -0,0 +1,26 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ name: Run test suite
8
+ runs-on: ubuntu-latest
9
+
10
+ env:
11
+ COMPOSE_FILE: docker-compose.ci.yml
12
+
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ ruby: [2.5.9, 2.6.7, 2.7.3, 3.0.1]
17
+
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v2
21
+
22
+ - name: Build docker images
23
+ run: docker-compose build --build-arg TARGET_VERSION=${{ matrix.ruby }}
24
+
25
+ - name: Run tests
26
+ run: docker-compose run ci
data/.gitignore CHANGED
@@ -3,6 +3,7 @@ debug.log
3
3
  .DS_Store
4
4
  pkg/
5
5
  doc/
6
+ db/
6
7
  *.gem
7
8
  .bundle
8
9
  Gemfile.lock
data/.rubocop.yml ADDED
@@ -0,0 +1,29 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+
4
+ Layout/LineLength:
5
+ Max: 120
6
+
7
+ Naming/AccessorMethodName:
8
+ Enabled: false
9
+
10
+ Naming/FileName:
11
+ Exclude:
12
+ - lib/activerecord-sqlserver-adapter.rb
13
+
14
+ Naming/MethodName:
15
+ IgnoredPatterns:
16
+ - visit_.*
17
+ - primary_Key_From_Table
18
+ - table_From_Statement
19
+ - distinct_One_As_One_Is_So_Not_Fetch
20
+ - make_Fetch_Possible_And_Deterministic
21
+
22
+ Naming/MethodParameterName:
23
+ Enabled: false
24
+
25
+ Naming/PredicateName:
26
+ Enabled: false
27
+
28
+ Style/StringLiterals:
29
+ EnforcedStyle: double_quotes
data/CHANGELOG.md CHANGED
@@ -1,30 +1,25 @@
1
- ## v6.0.0.rc1
1
+ ## v6.1.0.0.rc1
2
2
 
3
3
  #### Fixed
4
4
 
5
- - [#690](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/690) Rails 6 support
6
- - [#805](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/805) Rails 6: Fix database tasks tests for SQL Server
7
- - [#807](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/807) Rails 6: Skip binary fixtures test on Windows
8
- - [#809](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/809) Rails 6: Coerce reaper test using fork
9
- - [#810](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/810) Rails 6: Fix randomly failing tests due to schema load
10
- - [#812](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/812) Rails 6: Coerce ReloadModelsTest test on Windows
11
- - [#818](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/818) Handle false return by TinyTDS if connection fails and fixed CI
12
- - [#819](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/819) Fix Ruby 2.7 kwargs warnings
13
- - [#825](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/825) Adjust error message when connection is dead
5
+ - [#872](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/872) Use native String#start_with
6
+ - [#876](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/876) Use native String#end_with
7
+ - [#873](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/873) Various fixes to get the tests running for Rails 6.1
8
+ - [#874](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/874) Deduplicate schema cache structures
9
+ - [#875](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/875) Handle default boolean column values when deduplicating
10
+ - [#879](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/879) Added visit method for HomogeneousIn
11
+ - [#880](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/880) Handle any default column class when deduplicating
12
+ - [#861](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/861) Fix Rails 6.1 database config
13
+ - [#890](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/890) Fix removal of invalid ordering from select statements
14
+ - [#881](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/881) Dump column collation to schema.rb and allow collation changes using column_change
15
+ - [#891](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/891) Add support for if_not_exists to indexes
16
+ - [#892](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/892) Add support for if_exists on remove_column
17
+ - [#883](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/885) Fix quoting of ActiveRecord::Relation::QueryAttribute and ActiveModel::Attributes
18
+ - [#893](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/893) Add Active Record Marshal forward compatibility tests
19
+ - [#903](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/903) Raise ActiveRecord::ConnectionNotEstablished on calls to execute with a disconnected connection
14
20
 
15
21
  #### Changed
16
22
 
17
- - [#716](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/716) Translate the connection timed out error
18
- - [#763](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/763) Refactor columns introspection query to make it faster
19
- - [#783](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/783) Update test matrix
20
- - [#820](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/820) Enable frozen strings for tests
21
- - [#821](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/821) Enable frozen strings - part 1
22
- - [#822](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/822) Enable frozen strings - part 2
23
- - [#823](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/823) Enable frozen strings - final
24
- - [#824](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/824) Tidy up Gemfile
23
+ - [#917](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/917) Refactored to use new_client connection pattern
25
24
 
26
- #### Added
27
-
28
- - [#726](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/726) How to Develop ActiveRecord SQL Server Adapter with Pre-Installed MS SQL
29
-
30
- Please check [5-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/5-2-stable/CHANGELOG.md) for previous changes.
25
+ Please check [6-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/6-0-stable/CHANGELOG.md) for previous changes.
data/Gemfile CHANGED
@@ -21,8 +21,8 @@ else
21
21
  require "yaml"
22
22
 
23
23
  spec = eval(File.read("activerecord-sqlserver-adapter.gemspec"))
24
- ver = spec.dependencies.detect{ |d|d.name == "activerecord" }.requirement.requirements.first.last.version
25
- major, minor, tiny, pre = ver.split(".")
24
+ ver = spec.dependencies.detect { |d| d.name == "activerecord" }.requirement.requirements.first.last.version
25
+ major, minor, _tiny, pre = ver.split(".")
26
26
 
27
27
  if pre
28
28
  ver
@@ -32,7 +32,7 @@ else
32
32
  http.use_ssl = true
33
33
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
34
34
  YAML.load(http.request(Net::HTTP::Get.new(uri.request_uri)).body).find do |data|
35
- a, b, c = data["number"].split(".")
35
+ a, b, = data["number"].split(".")
36
36
  !data["prerelease"] && major == a && (minor.nil? || minor == b)
37
37
  end["number"]
38
38
  end
@@ -40,6 +40,7 @@ else
40
40
  gem "rails", github: "rails/rails", tag: "v#{version}"
41
41
  end
42
42
 
43
+ # rubocop:disable Bundler/DuplicatedGem
43
44
  group :tinytds do
44
45
  if ENV["TINYTDS_SOURCE"]
45
46
  gem "tiny_tds", path: ENV["TINYTDS_SOURCE"]
@@ -49,11 +50,12 @@ group :tinytds do
49
50
  gem "tiny_tds"
50
51
  end
51
52
  end
53
+ # rubocop:enable Bundler/DuplicatedGem
52
54
 
53
55
  group :development do
54
- gem "pry-byebug", platform: [:mri, :mingw, :x64_mingw]
55
- gem "mocha"
56
56
  gem "minitest-spec-rails"
57
+ gem "mocha"
58
+ gem "pry-byebug", platform: [:mri, :mingw, :x64_mingw]
57
59
  end
58
60
 
59
61
  group :guard do
@@ -61,3 +63,7 @@ group :guard do
61
63
  gem "guard-minitest"
62
64
  gem "terminal-notifier-guard" if RbConfig::CONFIG["host_os"] =~ /darwin/
63
65
  end
66
+
67
+ group :rubocop do
68
+ gem "rubocop", require: false
69
+ end
data/Guardfile CHANGED
@@ -1,29 +1,30 @@
1
+ # frozen_string_literal: true
1
2
 
2
- require_relative 'test/support/paths_sqlserver'
3
+ require_relative "test/support/paths_sqlserver"
3
4
 
4
5
  clearing :on
5
6
  notification :terminal_notifier if defined?(TerminalNotifier)
6
7
  ignore %r{debug\.log}
7
8
 
8
- ar_lib = File.join ARTest::SQLServer.root_activerecord, 'lib'
9
- ar_test = File.join ARTest::SQLServer.root_activerecord, 'test'
9
+ ar_lib = File.join ARTest::SQLServer.root_activerecord, "lib"
10
+ ar_test = File.join ARTest::SQLServer.root_activerecord, "test"
10
11
 
11
12
  guard :minitest, {
12
13
  all_on_start: false,
13
14
  autorun: false,
14
- include: ['lib', 'test', ar_lib, ar_test],
15
- test_folders: ['test'],
15
+ include: ["lib", "test", ar_lib, ar_test],
16
+ test_folders: ["test"],
16
17
  test_file_patterns: ["*_test.rb", "*_test_sqlserver.rb"]
17
18
  } do
18
19
  # Our project watchers.
19
- if ENV['TEST_FILES']
20
- ENV['TEST_FILES'].split(',').map(&:strip).each do |file|
20
+ if ENV["TEST_FILES"]
21
+ ENV["TEST_FILES"].split(",").map(&:strip).each do |file|
21
22
  watch(%r{.*}) { file }
22
23
  end
23
24
  else
24
25
  watch(%r{^test/cases/\w+_test_sqlserver\.rb$})
25
26
  watch(%r{^test/cases/coerced_tests\.rb$}) { "test/cases/coerced_tests.rb" }
26
27
  watch(%r{^lib/active_record/connection_adapters/sqlserver/([^/]+)\.rb$}) { |m| "test/cases/#{m[1]}_test_sqlserver.rb" }
27
- watch(%r{^test/cases/helper_sqlserver\.rb$}) { 'test' }
28
+ watch(%r{^test/cases/helper_sqlserver\.rb$}) { "test" }
28
29
  end
29
30
  end
data/README.md CHANGED
@@ -1,15 +1,26 @@
1
1
  # ActiveRecord SQL Server Adapter. For SQL Server 2012 And Higher.
2
2
 
3
- * [![TravisCI](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter.svg?branch=master)](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter) - TravisCI
3
+ * [![CI](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/actions/workflows/ci.yml/badge.svg)](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/actions/workflows/ci.yml) - CI
4
4
  * [![Build Status](https://ci.appveyor.com/api/projects/status/mtgbx8f57vr7k2qa/branch/master?svg=true)](https://ci.appveyor.com/project/rails-sqlserver/activerecord-sqlserver-adapter/branch/master) - Appveyor
5
5
  * [![Gem Version](http://img.shields.io/gem/v/activerecord-sqlserver-adapter.svg)](https://rubygems.org/gems/activerecord-sqlserver-adapter) - Gem Version
6
6
  * [![Gitter chat](https://img.shields.io/badge/%E2%8A%AA%20GITTER%20-JOIN%20CHAT%20%E2%86%92-brightgreen.svg?style=flat)](https://gitter.im/rails-sqlserver/activerecord-sqlserver-adapter) - Community
7
7
 
8
8
  ## About The Adapter
9
9
 
10
- The SQL Server adapter for ActiveRecord v6.0 using SQL Server 2012 or higher.
10
+ The SQL Server adapter for ActiveRecord using SQL Server 2012 or higher.
11
11
 
12
- Interested in older versions? We follow a rational versioning policy that tracks Rails. That means that our 5.2.x version of the adapter is only for the latest 5.2 version of Rails. If you need the adapter for SQL Server 2008 or 2005, you are still in the right spot. Just install the latest 3.2.x to 4.1.x version of the adapter that matches your Rails version. We also have stable branches for each major/minor release of ActiveRecord.
12
+ Interested in older versions? We follow a rational versioning policy that tracks Rails. That means that our 6.x version of the adapter is only for the latest 6.x version of Rails. If you need the adapter for SQL Server 2008 or 2005, you are still in the right spot. Just install the latest 3.2.x to 4.1.x version of the adapter that matches your Rails version. We also have stable branches for each major/minor release of ActiveRecord.
13
+
14
+ | Adapter Version | Rails Version | Support |
15
+ | ------------- | --- | --- |
16
+ | `6.1.0.0.rc1` | `6.1.x` | [wip](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
17
+ | `6.0.2` | `6.0.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-0-stable) |
18
+ | `5.2.1` | `5.2.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-2-stable) |
19
+ | `5.1.6` | `5.1.x` | [ended](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-1-stable) |
20
+ | `4.2.18` | `4.2.x` | [ended](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/4-2-stable) |
21
+ | `4.1.8` | `4.1.x` | [ended](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/4-1-stable) |
22
+
23
+ For older versions, please check their stable branches.
13
24
 
14
25
  #### Native Data Type Support
15
26
 
@@ -52,6 +63,24 @@ Depending on your user and schema setup, it may be needed to use a table name pr
52
63
  ActiveRecord::Base.table_name_prefix = 'dbo.'
53
64
  ```
54
65
 
66
+ It's also possible to create/change/drop a schema in the migration file as in the example below:
67
+
68
+ ```ruby
69
+ class CreateFooSchema < ActiveRecord::Migration[6.0]
70
+ def up
71
+ create_schema('foo')
72
+
73
+ # Or you could move a table to a different schema
74
+
75
+ change_table_schema('foo', 'dbo.admin')
76
+ end
77
+
78
+ def down
79
+ drop_schema('foo')
80
+ end
81
+ end
82
+ ```
83
+
55
84
 
56
85
  #### Configure Connection & App Name
57
86
 
@@ -5,7 +5,7 @@ This process is much easier than it has been before!
5
5
 
6
6
  ## MS SQL SERVER
7
7
 
8
- If you don't have easy access to MS SQL Server, you can set up a Vagrant/VirtualBox virtual machine with MS SQL Server. [Here's how](/https://github.com/rails-sqlserver/activerecord-sqlserver-adapter-dev-box).
8
+ If you don't have easy access to MS SQL Server, you can set up a Vagrant/VirtualBox virtual machine with MS SQL Server. [Here's how](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter-dev-box).
9
9
 
10
10
  ## TL;DR
11
11
 
data/Rakefile CHANGED
@@ -1,39 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
- require_relative 'test/support/paths_sqlserver'
6
- require_relative 'test/support/rake_helpers'
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+ require_relative "test/support/paths_sqlserver"
6
+ require_relative "test/support/rake_helpers"
7
7
 
8
- task test: ['test:dblib']
8
+ task test: ["test:dblib"]
9
9
  task default: [:test]
10
10
 
11
11
  namespace :test do
12
-
13
12
  %w(dblib).each do |mode|
14
-
15
13
  Rake::TestTask.new(mode) do |t|
16
14
  t.libs = ARTest::SQLServer.test_load_paths
17
15
  t.test_files = test_files
18
- t.warning = !!ENV['WARNING']
16
+ t.warning = !!ENV["WARNING"]
19
17
  t.verbose = false
20
18
  end
21
-
22
19
  end
23
20
 
24
- task 'dblib:env' do
25
- ENV['ARCONN'] = 'dblib'
21
+ task "dblib:env" do
22
+ ENV["ARCONN"] = "dblib"
26
23
  end
27
-
28
24
  end
29
25
 
30
- task 'test:dblib' => 'test:dblib:env'
26
+ task "test:dblib" => "test:dblib:env"
31
27
 
32
28
  namespace :profile do
33
- ['dblib'].each do |mode|
29
+ ["dblib"].each do |mode|
34
30
  namespace mode.to_sym do
35
- Dir.glob('test/profile/*_profile_case.rb').sort.each do |test_file|
36
- profile_case = File.basename(test_file).sub('_profile_case.rb', '')
31
+ Dir.glob("test/profile/*_profile_case.rb").sort.each do |test_file|
32
+ profile_case = File.basename(test_file).sub("_profile_case.rb", "")
37
33
  Rake::TestTask.new(profile_case) do |t|
38
34
  t.libs = ARTest::SQLServer.test_load_paths
39
35
  t.test_files = [test_file]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.0.0.rc1
1
+ 6.1.0.0.rc1
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.description = "ActiveRecord SQL Server Adapter. SQL Server 2012 and upward."
18
18
 
19
19
  spec.metadata = {
20
- "bug_tracker_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues",
21
- "changelog_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v#{version}/CHANGELOG.md",
22
- "source_code_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v#{version}",
20
+ "bug_tracker_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues",
21
+ "changelog_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v#{version}/CHANGELOG.md",
22
+ "source_code_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v#{version}",
23
23
  }
24
24
 
25
25
  spec.files = `git ls-files -z`.split("\x0")
@@ -27,6 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "activerecord", "~> 6.0.0"
30
+ spec.add_dependency "activerecord", "~> 6.1.0"
31
31
  spec.add_dependency "tiny_tds"
32
32
  end
@@ -5,11 +5,9 @@ module ActiveRecord
5
5
  module SQLServer
6
6
  module CoreExt
7
7
  module ActiveRecord
8
-
9
8
  extend ActiveSupport::Concern
10
9
 
11
10
  module ClassMethods
12
-
13
11
  def execute_procedure(proc_name, *variables)
14
12
  if connection.respond_to?(:execute_procedure)
15
13
  connection.execute_procedure(proc_name, *variables)
@@ -17,9 +15,7 @@ module ActiveRecord
17
15
  []
18
16
  end
19
17
  end
20
-
21
18
  end
22
-
23
19
  end
24
20
  end
25
21
  end
@@ -1,14 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_record/attribute_methods'
3
+ require "active_record/attribute_methods"
4
4
 
5
5
  module ActiveRecord
6
6
  module ConnectionAdapters
7
7
  module SQLServer
8
8
  module CoreExt
9
9
  module AttributeMethods
10
-
11
-
12
10
  private
13
11
 
14
12
  def attributes_for_update(attribute_names)
@@ -17,7 +15,6 @@ module ActiveRecord
17
15
  column && column.respond_to?(:is_identity?) && column.is_identity?
18
16
  end
19
17
  end
20
-
21
18
  end
22
19
  end
23
20
  end
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_record/relation'
4
- require 'active_record/version'
3
+ require "active_record/relation"
4
+ require "active_record/version"
5
5
 
6
6
  module ActiveRecord
7
7
  module ConnectionAdapters
8
8
  module SQLServer
9
9
  module CoreExt
10
10
  module Calculations
11
-
12
11
  # Same as original except we don't perform PostgreSQL hack that removes ordering.
13
12
  def calculate(operation, column_name)
14
13
  if has_include?(column_name)
@@ -17,7 +16,7 @@ module ActiveRecord
17
16
  if operation.to_s.downcase == "count"
18
17
  unless distinct_value || distinct_select?(column_name || select_for_count)
19
18
  relation.distinct!
20
- relation.select_values = [ klass.primary_key || table[Arel.star] ]
19
+ relation.select_values = [klass.primary_key || table[Arel.star]]
21
20
  end
22
21
  end
23
22
 
@@ -32,15 +31,6 @@ module ActiveRecord
32
31
  def build_count_subquery(relation, column_name, distinct)
33
32
  super(relation.unscope(:order), column_name, distinct)
34
33
  end
35
-
36
- def type_cast_calculated_value(value, type, operation = nil)
37
- case operation
38
- when "count" then value.to_i
39
- when "sum" then type.deserialize(value || 0)
40
- when "average" then value&.respond_to?(:to_d) ? value.to_d : value
41
- else type.deserialize(value)
42
- end
43
- end
44
34
  end
45
35
  end
46
36
  end