activerecord-sqlserver-adapter 8.0.12 → 8.1.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +1 -1
  3. data/.github/workflows/ci.yml +34 -3
  4. data/CHANGELOG.md +13 -84
  5. data/Dockerfile.ci +1 -1
  6. data/Gemfile +9 -12
  7. data/Guardfile +2 -2
  8. data/README.md +33 -13
  9. data/Rakefile +1 -1
  10. data/VERSION +1 -1
  11. data/activerecord-sqlserver-adapter.gemspec +15 -16
  12. data/compose.ci.yaml +8 -1
  13. data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +1 -1
  14. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +1 -2
  15. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb +1 -1
  16. data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +4 -4
  17. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +118 -83
  18. data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +3 -4
  19. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +7 -7
  20. data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +24 -12
  21. data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +17 -8
  22. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +170 -172
  23. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +2 -2
  24. data/lib/active_record/connection_adapters/sqlserver/showplan.rb +5 -5
  25. data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +2 -7
  26. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +3 -1
  27. data/lib/active_record/connection_adapters/sqlserver/type/data.rb +3 -3
  28. data/lib/active_record/connection_adapters/sqlserver/type/date.rb +3 -3
  29. data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +3 -4
  30. data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +1 -1
  31. data/lib/active_record/connection_adapters/sqlserver/type/time.rb +4 -6
  32. data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +1 -1
  33. data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +0 -2
  34. data/lib/active_record/connection_adapters/sqlserver/utils.rb +10 -12
  35. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +119 -67
  36. data/lib/active_record/connection_adapters/sqlserver_column.rb +17 -9
  37. data/lib/active_record/tasks/sqlserver_database_tasks.rb +5 -5
  38. data/lib/arel/visitors/sqlserver.rb +55 -26
  39. data/test/cases/active_schema_test_sqlserver.rb +45 -23
  40. data/test/cases/adapter_test_sqlserver.rb +72 -61
  41. data/test/cases/change_column_null_test_sqlserver.rb +16 -46
  42. data/test/cases/coerced_tests.rb +365 -161
  43. data/test/cases/column_test_sqlserver.rb +328 -316
  44. data/test/cases/connection_test_sqlserver.rb +15 -11
  45. data/test/cases/enum_test_sqlserver.rb +8 -9
  46. data/test/cases/execute_procedure_test_sqlserver.rb +1 -1
  47. data/test/cases/fetch_test_sqlserver.rb +1 -1
  48. data/test/cases/helper_sqlserver.rb +8 -3
  49. data/test/cases/index_test_sqlserver.rb +8 -6
  50. data/test/cases/insert_all_test_sqlserver.rb +3 -28
  51. data/test/cases/json_test_sqlserver.rb +8 -8
  52. data/test/cases/lateral_test_sqlserver.rb +2 -2
  53. data/test/cases/migration_test_sqlserver.rb +12 -12
  54. data/test/cases/pessimistic_locking_test_sqlserver.rb +6 -6
  55. data/test/cases/primary_keys_test_sqlserver.rb +4 -4
  56. data/test/cases/rake_test_sqlserver.rb +15 -7
  57. data/test/cases/schema_dumper_test_sqlserver.rb +109 -113
  58. data/test/cases/schema_test_sqlserver.rb +7 -39
  59. data/test/cases/transaction_test_sqlserver.rb +6 -8
  60. data/test/cases/trigger_test_sqlserver.rb +1 -1
  61. data/test/cases/utils_test_sqlserver.rb +3 -3
  62. data/test/cases/view_test_sqlserver.rb +12 -8
  63. data/test/cases/virtual_column_test_sqlserver.rb +113 -0
  64. data/test/migrations/create_clients_and_change_column_collation.rb +2 -2
  65. data/test/models/sqlserver/edge_schema.rb +2 -2
  66. data/test/schema/sqlserver_specific_schema.rb +49 -37
  67. data/test/support/coerceable_test_sqlserver.rb +10 -10
  68. data/test/support/connection_reflection.rb +0 -5
  69. data/test/support/core_ext/backtrace_cleaner.rb +36 -0
  70. data/test/support/query_assertions.rb +6 -6
  71. data/test/support/rake_helpers.rb +6 -10
  72. metadata +13 -108
@@ -2,31 +2,29 @@
2
2
 
3
3
  require "cases/helper_sqlserver"
4
4
  require "migrations/create_clients_and_change_column_null"
5
- require "cases/migration/helper"
6
5
 
7
6
  class ChangeColumnNullTestSqlServer < ActiveRecord::TestCase
8
- include ::ActiveRecord::Migration::TestHelper
9
-
10
- def find_column(table, column_name)
11
- connection.columns(table).find { |column| column.name == column_name.to_s }
7
+ before do
8
+ @old_verbose = ActiveRecord::Migration.verbose
9
+ ActiveRecord::Migration.verbose = false
10
+ CreateClientsAndChangeColumnNull.new.up
12
11
  end
13
12
 
14
- describe "using migration" do
15
- before do
16
- @old_verbose = ActiveRecord::Migration.verbose
17
- ActiveRecord::Migration.verbose = false
18
- CreateClientsAndChangeColumnNull.new.up
19
- end
13
+ after do
14
+ CreateClientsAndChangeColumnNull.new.down
15
+ ActiveRecord::Migration.verbose = @old_verbose
16
+ end
20
17
 
21
- after do
22
- CreateClientsAndChangeColumnNull.new.down
23
- ActiveRecord::Migration.verbose = @old_verbose
24
- end
18
+ def find_column(table, name)
19
+ table.find { |column| column.name == name }
20
+ end
25
21
 
26
- let(:name_column) { find_column("clients", "name") }
27
- let(:code_column) { find_column("clients", "code") }
28
- let(:value_column) { find_column("clients", "value") }
22
+ let(:clients_table) { connection.columns("clients") }
23
+ let(:name_column) { find_column(clients_table, "name") }
24
+ let(:code_column) { find_column(clients_table, "code") }
25
+ let(:value_column) { find_column(clients_table, "value") }
29
26
 
27
+ describe "#change_column_null" do
30
28
  it "does not change the column limit" do
31
29
  _(name_column.limit).must_equal 15
32
30
  end
@@ -43,32 +41,4 @@ class ChangeColumnNullTestSqlServer < ActiveRecord::TestCase
43
41
  _(value_column.scale).must_equal 8
44
42
  end
45
43
  end
46
-
47
- it "datetime2 column" do
48
- add_column :test_models, :expiry_date, :datetime, precision: 6, null: true
49
-
50
- _(find_column(:test_models, :expiry_date).sql_type).must_equal "datetime2(6)"
51
- _(find_column(:test_models, :expiry_date).null).must_equal true
52
-
53
- connection.change_column_null(:test_models, :expiry_date, false)
54
-
55
- _(find_column(:test_models, :expiry_date).sql_type).must_equal "datetime2(6)"
56
- _(find_column(:test_models, :expiry_date).null).must_equal false
57
- ensure
58
- remove_column("test_models", "expiry_date")
59
- end
60
-
61
- it "datetime column" do
62
- add_column :test_models, :expiry_date, :datetime, precision: nil, null: true
63
-
64
- _(find_column(:test_models, :expiry_date).sql_type).must_equal "datetime"
65
- _(find_column(:test_models, :expiry_date).null).must_equal true
66
-
67
- connection.change_column_null(:test_models, :expiry_date, false)
68
-
69
- _(find_column(:test_models, :expiry_date).sql_type).must_equal "datetime"
70
- _(find_column(:test_models, :expiry_date).null).must_equal false
71
- ensure
72
- remove_column("test_models", "expiry_date")
73
- end
74
44
  end