activerecord-sqlserver-adapter 7.1.7 → 7.2.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.
- checksums.yaml +4 -4
- data/.devcontainer/Dockerfile +3 -3
- data/.github/workflows/ci.yml +10 -4
- data/CHANGELOG.md +5 -99
- data/Gemfile +4 -4
- data/README.md +43 -19
- data/VERSION +1 -1
- data/activerecord-sqlserver-adapter.gemspec +2 -2
- data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +6 -4
- data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +6 -5
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +7 -4
- data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +6 -4
- data/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb +14 -12
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +50 -32
- data/lib/active_record/connection_adapters/sqlserver/quoting.rb +44 -46
- data/lib/active_record/connection_adapters/sqlserver/savepoints.rb +2 -0
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +2 -5
- data/lib/active_record/tasks/sqlserver_database_tasks.rb +38 -32
- data/lib/arel/visitors/sqlserver.rb +57 -12
- data/test/cases/active_schema_test_sqlserver.rb +6 -6
- data/test/cases/adapter_test_sqlserver.rb +17 -18
- data/test/cases/coerced_tests.rb +279 -167
- data/test/cases/disconnected_test_sqlserver.rb +9 -3
- data/test/cases/eager_load_too_many_ids_test_sqlserver.rb +1 -1
- data/test/cases/enum_test_sqlserver.rb +1 -1
- data/test/cases/execute_procedure_test_sqlserver.rb +9 -5
- data/test/cases/helper_sqlserver.rb +11 -5
- data/test/cases/index_test_sqlserver.rb +8 -6
- data/test/cases/json_test_sqlserver.rb +1 -1
- data/test/cases/lateral_test_sqlserver.rb +2 -2
- data/test/cases/migration_test_sqlserver.rb +1 -1
- data/test/cases/optimizer_hints_test_sqlserver.rb +12 -12
- data/test/cases/pessimistic_locking_test_sqlserver.rb +8 -7
- data/test/cases/primary_keys_test_sqlserver.rb +2 -2
- data/test/cases/rake_test_sqlserver.rb +8 -4
- data/test/cases/schema_dumper_test_sqlserver.rb +4 -5
- data/test/cases/showplan_test_sqlserver.rb +7 -7
- data/test/cases/specific_schema_test_sqlserver.rb +17 -13
- data/test/cases/view_test_sqlserver.rb +1 -1
- data/test/schema/sqlserver_specific_schema.rb +4 -4
- data/test/support/connection_reflection.rb +1 -1
- data/test/support/core_ext/query_cache.rb +2 -2
- data/test/support/query_assertions.rb +49 -0
- data/test/support/table_definition_sqlserver.rb +24 -0
- data/test/support/test_in_memory_oltp.rb +2 -2
- metadata +12 -13
- data/lib/active_record/sqlserver_base.rb +0 -13
- data/test/cases/scratchpad_test_sqlserver.rb +0 -8
- data/test/support/sql_counter_sqlserver.rb +0 -14
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module ActiveRecord
         | 
| 4 | 
            +
              module ConnectionAdapters
         | 
| 5 | 
            +
                module SQLServer
         | 
| 6 | 
            +
                  class TableDefinition < ::ActiveRecord::ConnectionAdapters::TableDefinition
         | 
| 7 | 
            +
                    # SQL Server supports precision of 38 for decimal columns. In Rails the test schema includes a column
         | 
| 8 | 
            +
                    # with a precision of 55. This is a problem for SQL Server 2008. This method will override the default
         | 
| 9 | 
            +
                    # decimal method to limit the precision to 38 for the :atoms_in_universe column.
         | 
| 10 | 
            +
                    # See https://github.com/rails/rails/pull/51826/files#diff-2a57b61bbf9ee2c23938fc571d403799f68b4b530d65e2cde219a429bbf10af5L876
         | 
| 11 | 
            +
                    def decimal(*names, **options)
         | 
| 12 | 
            +
                      throw "This 'decimal' method should only be used in a test environment." unless defined?(ActiveSupport::TestCase)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                      names.each do |name|
         | 
| 15 | 
            +
                        options_for_name = options.dup
         | 
| 16 | 
            +
                        options_for_name[:precision] = 38 if name == :atoms_in_universe && options_for_name[:precision].to_i == 55
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                        column(name, :decimal, **options_for_name)
         | 
| 19 | 
            +
                      end
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -8,10 +8,10 @@ if ENV["IN_MEMORY_OLTP"] | |
| 8 8 |  | 
| 9 9 | 
             
              ARTest.connect
         | 
| 10 10 |  | 
| 11 | 
            -
              if ActiveRecord::Base. | 
| 11 | 
            +
              if ActiveRecord::Base.lease_connection.supports_in_memory_oltp?
         | 
| 12 12 | 
             
                puts "Configuring In-Memory OLTP..."
         | 
| 13 13 | 
             
                inmem_file = ARTest::SQLServer.test_root_sqlserver, "schema", "enable-in-memory-oltp.sql"
         | 
| 14 14 | 
             
                inmem_sql = File.read File.join(inmem_file)
         | 
| 15 | 
            -
                ActiveRecord::Base. | 
| 15 | 
            +
                ActiveRecord::Base.lease_connection.execute(inmem_sql)
         | 
| 16 16 | 
             
              end
         | 
| 17 17 | 
             
            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: 7. | 
| 4 | 
            +
              version: 7.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ken Collins
         | 
| @@ -15,7 +15,7 @@ authors: | |
| 15 15 | 
             
            autorequire:
         | 
| 16 16 | 
             
            bindir: bin
         | 
| 17 17 | 
             
            cert_chain: []
         | 
| 18 | 
            -
            date: 2024-08- | 
| 18 | 
            +
            date: 2024-08-12 00:00:00.000000000 Z
         | 
| 19 19 | 
             
            dependencies:
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 21 21 | 
             
              name: activerecord
         | 
| @@ -23,14 +23,14 @@ dependencies: | |
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 7. | 
| 26 | 
            +
                    version: 7.2.0
         | 
| 27 27 | 
             
              type: :runtime
         | 
| 28 28 | 
             
              prerelease: false
         | 
| 29 29 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: 7. | 
| 33 | 
            +
                    version: 7.2.0
         | 
| 34 34 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 35 35 | 
             
              name: tiny_tds
         | 
| 36 36 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -139,7 +139,6 @@ files: | |
| 139 139 | 
             
            - lib/active_record/connection_adapters/sqlserver/version.rb
         | 
| 140 140 | 
             
            - lib/active_record/connection_adapters/sqlserver_adapter.rb
         | 
| 141 141 | 
             
            - lib/active_record/connection_adapters/sqlserver_column.rb
         | 
| 142 | 
            -
            - lib/active_record/sqlserver_base.rb
         | 
| 143 142 | 
             
            - lib/active_record/tasks/sqlserver_database_tasks.rb
         | 
| 144 143 | 
             
            - lib/activerecord-sqlserver-adapter.rb
         | 
| 145 144 | 
             
            - lib/arel/visitors/sqlserver.rb
         | 
| @@ -176,7 +175,6 @@ files: | |
| 176 175 | 
             
            - test/cases/rake_test_sqlserver.rb
         | 
| 177 176 | 
             
            - test/cases/schema_dumper_test_sqlserver.rb
         | 
| 178 177 | 
             
            - test/cases/schema_test_sqlserver.rb
         | 
| 179 | 
            -
            - test/cases/scratchpad_test_sqlserver.rb
         | 
| 180 178 | 
             
            - test/cases/showplan_test_sqlserver.rb
         | 
| 181 179 | 
             
            - test/cases/specific_schema_test_sqlserver.rb
         | 
| 182 180 | 
             
            - test/cases/transaction_test_sqlserver.rb
         | 
| @@ -232,16 +230,17 @@ files: | |
| 232 230 | 
             
            - test/support/marshal_compatibility_fixtures/SQLServer/rails_7_1_topic_associations.dump
         | 
| 233 231 | 
             
            - test/support/minitest_sqlserver.rb
         | 
| 234 232 | 
             
            - test/support/paths_sqlserver.rb
         | 
| 233 | 
            +
            - test/support/query_assertions.rb
         | 
| 235 234 | 
             
            - test/support/rake_helpers.rb
         | 
| 236 | 
            -
            - test/support/ | 
| 235 | 
            +
            - test/support/table_definition_sqlserver.rb
         | 
| 237 236 | 
             
            - test/support/test_in_memory_oltp.rb
         | 
| 238 237 | 
             
            homepage: http://github.com/rails-sqlserver/activerecord-sqlserver-adapter
         | 
| 239 238 | 
             
            licenses:
         | 
| 240 239 | 
             
            - MIT
         | 
| 241 240 | 
             
            metadata:
         | 
| 242 241 | 
             
              bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
         | 
| 243 | 
            -
              changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7. | 
| 244 | 
            -
              source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7. | 
| 242 | 
            +
              changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7.2.0/CHANGELOG.md
         | 
| 243 | 
            +
              source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.2.0
         | 
| 245 244 | 
             
            post_install_message:
         | 
| 246 245 | 
             
            rdoc_options: []
         | 
| 247 246 | 
             
            require_paths:
         | 
| @@ -250,14 +249,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 250 249 | 
             
              requirements:
         | 
| 251 250 | 
             
              - - ">="
         | 
| 252 251 | 
             
                - !ruby/object:Gem::Version
         | 
| 253 | 
            -
                  version:  | 
| 252 | 
            +
                  version: 3.1.0
         | 
| 254 253 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 255 254 | 
             
              requirements:
         | 
| 256 255 | 
             
              - - ">="
         | 
| 257 256 | 
             
                - !ruby/object:Gem::Version
         | 
| 258 257 | 
             
                  version: '0'
         | 
| 259 258 | 
             
            requirements: []
         | 
| 260 | 
            -
            rubygems_version: 3. | 
| 259 | 
            +
            rubygems_version: 3.5.17
         | 
| 261 260 | 
             
            signing_key:
         | 
| 262 261 | 
             
            specification_version: 4
         | 
| 263 262 | 
             
            summary: ActiveRecord SQL Server Adapter.
         | 
| @@ -294,7 +293,6 @@ test_files: | |
| 294 293 | 
             
            - test/cases/rake_test_sqlserver.rb
         | 
| 295 294 | 
             
            - test/cases/schema_dumper_test_sqlserver.rb
         | 
| 296 295 | 
             
            - test/cases/schema_test_sqlserver.rb
         | 
| 297 | 
            -
            - test/cases/scratchpad_test_sqlserver.rb
         | 
| 298 296 | 
             
            - test/cases/showplan_test_sqlserver.rb
         | 
| 299 297 | 
             
            - test/cases/specific_schema_test_sqlserver.rb
         | 
| 300 298 | 
             
            - test/cases/transaction_test_sqlserver.rb
         | 
| @@ -350,6 +348,7 @@ test_files: | |
| 350 348 | 
             
            - test/support/marshal_compatibility_fixtures/SQLServer/rails_7_1_topic_associations.dump
         | 
| 351 349 | 
             
            - test/support/minitest_sqlserver.rb
         | 
| 352 350 | 
             
            - test/support/paths_sqlserver.rb
         | 
| 351 | 
            +
            - test/support/query_assertions.rb
         | 
| 353 352 | 
             
            - test/support/rake_helpers.rb
         | 
| 354 | 
            -
            - test/support/ | 
| 353 | 
            +
            - test/support/table_definition_sqlserver.rb
         | 
| 355 354 | 
             
            - test/support/test_in_memory_oltp.rb
         | 
| @@ -1,13 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module ActiveRecord
         | 
| 4 | 
            -
              module ConnectionHandling
         | 
| 5 | 
            -
                def sqlserver_adapter_class
         | 
| 6 | 
            -
                  ConnectionAdapters::SQLServerAdapter
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                def sqlserver_connection(config) #:nodoc:
         | 
| 10 | 
            -
                  sqlserver_adapter_class.new(config)
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
| @@ -1,14 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module ARTest
         | 
| 4 | 
            -
              module SQLServer
         | 
| 5 | 
            -
                module SqlCounterSqlserver
         | 
| 6 | 
            -
                  # Only return the log vs. log_all
         | 
| 7 | 
            -
                  def capture_sql_ss
         | 
| 8 | 
            -
                    ActiveRecord::SQLCounter.clear_log
         | 
| 9 | 
            -
                    yield
         | 
| 10 | 
            -
                    ActiveRecord::SQLCounter.log.dup
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
            end
         |