activerecord-sqlserver-adapter 5.2.0 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.editorconfig +9 -0
- data/.github/issue_template.md +23 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +29 -0
- data/.travis.yml +6 -8
- data/CHANGELOG.md +46 -11
- data/{Dockerfile → Dockerfile.ci} +2 -2
- data/Gemfile +48 -41
- data/Guardfile +9 -8
- data/README.md +9 -37
- data/RUNNING_UNIT_TESTS.md +3 -0
- data/Rakefile +14 -16
- data/VERSION +1 -1
- data/activerecord-sqlserver-adapter.gemspec +25 -14
- data/appveyor.yml +24 -17
- data/docker-compose.ci.yml +7 -5
- data/guides/RELEASING.md +11 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb +2 -4
- data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +3 -4
- data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +22 -2
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb +2 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +44 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb +36 -0
- data/lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb +28 -0
- data/lib/active_record/connection_adapters/sqlserver/database_limits.rb +9 -0
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +88 -44
- data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +10 -12
- data/lib/active_record/connection_adapters/sqlserver/errors.rb +2 -3
- data/lib/active_record/connection_adapters/sqlserver/quoting.rb +46 -8
- data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +16 -5
- data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +9 -7
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +197 -165
- data/lib/active_record/connection_adapters/sqlserver/showplan.rb +8 -8
- data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +4 -2
- data/lib/active_record/connection_adapters/sqlserver/showplan/printer_xml.rb +3 -1
- data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +43 -44
- data/lib/active_record/connection_adapters/sqlserver/transaction.rb +7 -9
- data/lib/active_record/connection_adapters/sqlserver/type.rb +37 -35
- data/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/binary.rb +5 -4
- data/lib/active_record/connection_adapters/sqlserver/type/boolean.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/char.rb +7 -4
- data/lib/active_record/connection_adapters/sqlserver/type/data.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/type/date.rb +4 -3
- data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +8 -8
- data/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/type/decimal.rb +5 -4
- data/lib/active_record/connection_adapters/sqlserver/type/float.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/integer.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/json.rb +2 -1
- data/lib/active_record/connection_adapters/sqlserver/type/money.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/type/real.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/small_money.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/string.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/type/text.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/time.rb +6 -6
- data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +8 -9
- data/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb +5 -4
- data/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb +6 -5
- data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +4 -3
- data/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb +6 -5
- data/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/type/varchar.rb +6 -5
- data/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/utils.rb +10 -11
- data/lib/active_record/connection_adapters/sqlserver/version.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +132 -92
- data/lib/active_record/connection_adapters/sqlserver_column.rb +9 -5
- data/lib/active_record/sqlserver_base.rb +9 -1
- data/lib/active_record/tasks/sqlserver_database_tasks.rb +28 -32
- data/lib/activerecord-sqlserver-adapter.rb +3 -1
- data/lib/arel/visitors/sqlserver.rb +58 -24
- data/lib/arel_sqlserver.rb +4 -2
- data/test/appveyor/dbsetup.ps1 +4 -4
- data/test/cases/adapter_test_sqlserver.rb +223 -180
- data/test/cases/change_column_null_test_sqlserver.rb +17 -15
- data/test/cases/coerced_tests.rb +654 -360
- data/test/cases/column_test_sqlserver.rb +635 -604
- data/test/cases/connection_test_sqlserver.rb +18 -21
- data/test/cases/execute_procedure_test_sqlserver.rb +20 -20
- data/test/cases/fetch_test_sqlserver.rb +17 -23
- data/test/cases/fully_qualified_identifier_test_sqlserver.rb +15 -19
- data/test/cases/helper_sqlserver.rb +20 -15
- data/test/cases/in_clause_test_sqlserver.rb +36 -0
- data/test/cases/index_test_sqlserver.rb +15 -15
- data/test/cases/json_test_sqlserver.rb +25 -25
- data/test/cases/migration_test_sqlserver.rb +30 -26
- data/test/cases/order_test_sqlserver.rb +53 -54
- data/test/cases/pessimistic_locking_test_sqlserver.rb +31 -37
- data/test/cases/rake_test_sqlserver.rb +44 -56
- data/test/cases/schema_dumper_test_sqlserver.rb +117 -112
- data/test/cases/schema_test_sqlserver.rb +20 -26
- data/test/cases/scratchpad_test_sqlserver.rb +4 -4
- data/test/cases/showplan_test_sqlserver.rb +32 -39
- data/test/cases/specific_schema_test_sqlserver.rb +75 -72
- data/test/cases/transaction_test_sqlserver.rb +27 -29
- data/test/cases/trigger_test_sqlserver.rb +18 -17
- data/test/cases/utils_test_sqlserver.rb +78 -78
- data/test/cases/uuid_test_sqlserver.rb +19 -20
- data/test/debug.rb +8 -6
- data/test/migrations/create_clients_and_change_column_null.rb +3 -1
- data/test/migrations/transaction_table/1_table_will_never_be_created.rb +4 -4
- data/test/models/sqlserver/booking.rb +3 -1
- data/test/models/sqlserver/customers_view.rb +3 -1
- data/test/models/sqlserver/datatype.rb +2 -0
- data/test/models/sqlserver/datatype_migration.rb +2 -0
- data/test/models/sqlserver/dollar_table_name.rb +3 -1
- data/test/models/sqlserver/edge_schema.rb +3 -3
- data/test/models/sqlserver/fk_has_fk.rb +3 -1
- data/test/models/sqlserver/fk_has_pk.rb +3 -1
- data/test/models/sqlserver/natural_pk_data.rb +4 -2
- data/test/models/sqlserver/natural_pk_int_data.rb +3 -1
- data/test/models/sqlserver/no_pk_data.rb +3 -1
- data/test/models/sqlserver/object_default.rb +3 -1
- data/test/models/sqlserver/quoted_table.rb +4 -2
- data/test/models/sqlserver/quoted_view_1.rb +3 -1
- data/test/models/sqlserver/quoted_view_2.rb +3 -1
- data/test/models/sqlserver/sst_memory.rb +3 -1
- data/test/models/sqlserver/string_default.rb +3 -1
- data/test/models/sqlserver/string_defaults_big_view.rb +3 -1
- data/test/models/sqlserver/string_defaults_view.rb +3 -1
- data/test/models/sqlserver/tinyint_pk.rb +3 -1
- data/test/models/sqlserver/trigger.rb +4 -2
- data/test/models/sqlserver/trigger_history.rb +3 -1
- data/test/models/sqlserver/upper.rb +3 -1
- data/test/models/sqlserver/uppered.rb +3 -1
- data/test/models/sqlserver/uuid.rb +3 -1
- data/test/schema/datatypes/2012.sql +1 -0
- data/test/schema/sqlserver_specific_schema.rb +31 -21
- data/test/support/coerceable_test_sqlserver.rb +15 -9
- data/test/support/connection_reflection.rb +3 -2
- data/test/support/core_ext/query_cache.rb +4 -1
- data/test/support/load_schema_sqlserver.rb +5 -5
- data/test/support/minitest_sqlserver.rb +3 -1
- data/test/support/paths_sqlserver.rb +11 -11
- data/test/support/rake_helpers.rb +13 -10
- data/test/support/sql_counter_sqlserver.rb +3 -4
- data/test/support/test_in_memory_oltp.rb +9 -7
- metadata +23 -13
- data/BACKERS.md +0 -32
- data/circle.yml +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a7160737c2d7b0946054cdf6e9fd7c26144cef8f1bc66be90d0b51b7e9ba91f
|
4
|
+
data.tar.gz: 67ef07c9e35bd3f4735bed2303f3c63f58d09e1bacb7203339b365457c03d296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 599f09313bdd68db576bd7282174f04ac9c7e848b2d84b73857e5da9ca5a76427bd22a63bc717e90cd7293747701bdcbcbbc4159e7309bd5328a8be8baa5a245
|
7
|
+
data.tar.gz: dd54538736ba65dd12ee1ce87aae3da4e324888ca3a9b7a793cae34817451f66ec5b19e0e67882335057e7136f55f1871dad89553f8dfca0824ecdd6c4f34540
|
data/.editorconfig
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
## Issue
|
2
|
+
<!-- Give a brief summary of the issue. -->
|
3
|
+
|
4
|
+
## Expected behavior
|
5
|
+
<!-- Tell us what should happen -->
|
6
|
+
|
7
|
+
## Actual behavior
|
8
|
+
<!-- Tell us what happens instead -->
|
9
|
+
|
10
|
+
## How to reproduce
|
11
|
+
<!-- See https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/How-to-report-a-bug -->
|
12
|
+
|
13
|
+
## Details
|
14
|
+
|
15
|
+
- **Rails version**: `x.x.x`
|
16
|
+
- **SQL Server adapter version**: `x.x.x`
|
17
|
+
- **TinyTDS version**: `x.x.x`
|
18
|
+
- **FreeTDS details**:
|
19
|
+
|
20
|
+
```
|
21
|
+
run `tsql -C` and paste here the output.
|
22
|
+
```
|
23
|
+
|
data/.gitignore
CHANGED
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/.travis.yml
CHANGED
@@ -15,11 +15,9 @@ script:
|
|
15
15
|
- docker-compose run ci
|
16
16
|
matrix:
|
17
17
|
include:
|
18
|
-
- name: 2.
|
19
|
-
env: TARGET_VERSION=2.
|
20
|
-
- name: 2.
|
21
|
-
env: TARGET_VERSION=2.
|
22
|
-
- name: 2.
|
23
|
-
env: TARGET_VERSION=2.
|
24
|
-
- name: 2.6.0
|
25
|
-
env: TARGET_VERSION=2.6.0
|
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
|
data/CHANGELOG.md
CHANGED
@@ -1,25 +1,60 @@
|
|
1
|
-
##
|
1
|
+
## v6.0.1
|
2
2
|
|
3
|
-
|
3
|
+
#### Fixed
|
4
|
+
|
5
|
+
- [#851](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/851) Updated 'column_definitions_sql' to ensure that only primary key key constraints are queried for
|
6
|
+
|
7
|
+
## v6.0.0
|
8
|
+
|
9
|
+
**No Changes**
|
4
10
|
|
5
|
-
##
|
11
|
+
## v6.0.0.rc2
|
6
12
|
|
7
13
|
#### Fixed
|
8
14
|
|
9
|
-
- #
|
10
|
-
- #
|
15
|
+
- [#639](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/639) Primary key should be lowercase if schema forced to lowercase
|
16
|
+
- [#720](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/720) quoted_date doesn't work for Type::DateTime
|
11
17
|
|
12
|
-
|
18
|
+
#### Changed
|
19
|
+
|
20
|
+
- [#826](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/826) Rubocop: Enable Style/StringLiterals cop
|
21
|
+
- [#827](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/827) Rubocop: Enable Layout/EmptyLinesAroundClassBody cop
|
22
|
+
- [#828](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/828) Rubocop: Enable Layout/EmptyLines cop
|
23
|
+
- [#829](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/829) Rubocop: Enable Layout/Layout/EmptyLinesAround* cops
|
24
|
+
- [#830](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/830) Rubocop: Enable Layout/IndentationWidth and Layout/TrailingWhitespace cops
|
25
|
+
- [#831](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/831) Rubocop: Enable Spacing cops
|
26
|
+
- [#832](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/832) Rubocop: Enable Bundler cops
|
27
|
+
- [#833](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/833) Rubocop: Enable Layout/* cops
|
28
|
+
- [#834](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/834) Rubocop: Enable Lint/UselessAssignment cop
|
29
|
+
- [#835](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/835) Rubocop: Configure Naming cops
|
30
|
+
|
31
|
+
## v6.0.0.rc1
|
13
32
|
|
14
33
|
#### Fixed
|
15
34
|
|
16
|
-
- #
|
17
|
-
- #
|
18
|
-
- #
|
35
|
+
- [#690](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/690) Rails 6 support
|
36
|
+
- [#805](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/805) Rails 6: Fix database tasks tests for SQL Server
|
37
|
+
- [#807](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/807) Rails 6: Skip binary fixtures test on Windows
|
38
|
+
- [#809](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/809) Rails 6: Coerce reaper test using fork
|
39
|
+
- [#810](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/810) Rails 6: Fix randomly failing tests due to schema load
|
40
|
+
- [#812](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/812) Rails 6: Coerce ReloadModelsTest test on Windows
|
41
|
+
- [#818](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/818) Handle false return by TinyTDS if connection fails and fixed CI
|
42
|
+
- [#819](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/819) Fix Ruby 2.7 kwargs warnings
|
43
|
+
- [#825](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/825) Adjust error message when connection is dead
|
19
44
|
|
20
45
|
#### Changed
|
21
46
|
|
22
|
-
- #
|
47
|
+
- [#716](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/716) Translate the connection timed out error
|
48
|
+
- [#763](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/763) Refactor columns introspection query to make it faster
|
49
|
+
- [#783](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/783) Update test matrix
|
50
|
+
- [#820](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/820) Enable frozen strings for tests
|
51
|
+
- [#821](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/821) Enable frozen strings - part 1
|
52
|
+
- [#822](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/822) Enable frozen strings - part 2
|
53
|
+
- [#823](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/823) Enable frozen strings - final
|
54
|
+
- [#824](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/824) Tidy up Gemfile
|
55
|
+
|
56
|
+
#### Added
|
23
57
|
|
58
|
+
- [#726](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/726) How to Develop ActiveRecord SQL Server Adapter with Pre-Installed MS SQL
|
24
59
|
|
25
|
-
Please check [5-
|
60
|
+
Please check [5-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/5-2-stable/CHANGELOG.md) for previous changes.
|
data/Gemfile
CHANGED
@@ -1,62 +1,69 @@
|
|
1
|
-
|
2
|
-
source 'https://rubygems.org'
|
3
|
-
gemspec
|
1
|
+
# frozen_string_literal: true
|
4
2
|
|
5
|
-
|
6
|
-
gem 'bcrypt'
|
7
|
-
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
3
|
+
source "https://rubygems.org"
|
8
4
|
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
6
|
+
|
7
|
+
gemspec
|
12
8
|
|
13
|
-
|
14
|
-
|
9
|
+
gem "bcrypt"
|
10
|
+
gem "pg", ">= 0.18.0"
|
11
|
+
gem "sqlite3", "~> 1.4"
|
12
|
+
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
13
|
+
|
14
|
+
if ENV["RAILS_SOURCE"]
|
15
|
+
gemspec path: ENV["RAILS_SOURCE"]
|
15
16
|
else
|
16
|
-
# Need to get rails source
|
17
|
-
version = ENV[
|
18
|
-
require
|
19
|
-
require
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
# Need to get rails source because the gem doesn't include tests
|
18
|
+
version = ENV["RAILS_VERSION"] || begin
|
19
|
+
require "openssl"
|
20
|
+
require "net/http"
|
21
|
+
require "yaml"
|
22
|
+
|
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(".")
|
26
|
+
|
27
|
+
if pre
|
28
|
+
ver
|
29
|
+
else
|
30
|
+
uri = URI.parse("https://rubygems.org/api/v1/versions/activerecord.yaml")
|
25
31
|
http = Net::HTTP.new(uri.host, uri.port)
|
26
32
|
http.use_ssl = true
|
27
33
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
28
|
-
YAML.load(http.request(Net::HTTP::Get.new(uri.request_uri)).body).
|
29
|
-
a, b,
|
30
|
-
!data[
|
31
|
-
end
|
32
|
-
else
|
33
|
-
ver
|
34
|
+
YAML.load(http.request(Net::HTTP::Get.new(uri.request_uri)).body).find do |data|
|
35
|
+
a, b, = data["number"].split(".")
|
36
|
+
!data["prerelease"] && major == a && (minor.nil? || minor == b)
|
37
|
+
end["number"]
|
34
38
|
end
|
35
39
|
end
|
36
|
-
gem
|
37
|
-
end
|
38
|
-
|
39
|
-
if ENV['AREL']
|
40
|
-
gem 'arel', path: ENV['AREL']
|
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
|
-
if ENV[
|
45
|
-
gem
|
46
|
-
elsif ENV[
|
47
|
-
gem
|
45
|
+
if ENV["TINYTDS_SOURCE"]
|
46
|
+
gem "tiny_tds", path: ENV["TINYTDS_SOURCE"]
|
47
|
+
elsif ENV["TINYTDS_VERSION"]
|
48
|
+
gem "tiny_tds", ENV["TINYTDS_VERSION"]
|
48
49
|
else
|
49
|
-
gem
|
50
|
+
gem "tiny_tds"
|
50
51
|
end
|
51
52
|
end
|
53
|
+
# rubocop:enable Bundler/DuplicatedGem
|
52
54
|
|
53
55
|
group :development do
|
54
|
-
gem
|
55
|
-
gem
|
56
|
-
gem
|
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
|
60
|
-
gem
|
61
|
-
gem
|
62
|
+
gem "guard"
|
63
|
+
gem "guard-minitest"
|
64
|
+
gem "terminal-notifier-guard" if RbConfig::CONFIG["host_os"] =~ /darwin/
|
65
|
+
end
|
66
|
+
|
67
|
+
group :rubocop do
|
68
|
+
gem "rubocop", require: false
|
62
69
|
end
|
data/Guardfile
CHANGED
@@ -1,29 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
require_relative
|
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,
|
9
|
-
ar_test = File.join ARTest::SQLServer.root_activerecord,
|
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: [
|
15
|
-
test_folders: [
|
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[
|
20
|
-
ENV[
|
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$}) {
|
28
|
+
watch(%r{^test/cases/helper_sqlserver\.rb$}) { "test" }
|
28
29
|
end
|
29
30
|
end
|
data/README.md
CHANGED
@@ -1,30 +1,23 @@
|
|
1
1
|
# ActiveRecord SQL Server Adapter. For SQL Server 2012 And Higher.
|
2
2
|
|
3
3
|
* [![TravisCI](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter.svg?branch=master)](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter) - TravisCI
|
4
|
-
* [![CircleCI](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master.svg?style=svg)](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master) - CircleCI
|
5
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
|
6
5
|
* [![Gem Version](http://img.shields.io/gem/v/activerecord-sqlserver-adapter.svg)](https://rubygems.org/gems/activerecord-sqlserver-adapter) - Gem Version
|
7
|
-
* [![Dependency Status](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter/badge)](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter) - Dependency Status
|
8
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
|
9
7
|
|
10
|
-
## Supporting TinyTDS/Adapter
|
11
|
-
|
12
|
-
Both TinyTDS and the Rails SQL Server Adapter are MIT-licensed open source projects. Its ongoing development is made possible thanks to the support by these awesome [backers](https://github.com/rails-sqlserver/tiny_tds/blob/master/BACKERS.md). If you'd like to join them, check out our [Patreon Campaign](https://www.patreon.com/metaskills).
|
13
|
-
|
14
|
-
|
15
8
|
## About The Adapter
|
16
9
|
|
17
|
-
The SQL Server adapter for ActiveRecord
|
10
|
+
The SQL Server adapter for ActiveRecord v6.0 using SQL Server 2012 or higher.
|
18
11
|
|
19
|
-
Interested in older versions? We follow a rational versioning policy that tracks Rails. That means that our 5.
|
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.
|
20
13
|
|
21
14
|
#### Native Data Type Support
|
22
15
|
|
23
16
|
We support every data type supported by FreeTDS. All simplified Rails types in migrations will coorespond to a matching SQL Server national (unicode) data type. Always check the `initialize_native_database_types` [(here)](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/lib/active_record/connection_adapters/sqlserver/schema_statements.rb) for an updated list.
|
24
17
|
|
25
|
-
The following types (date
|
18
|
+
The following types (`date`, `datetime2`, `datetimeoffset`, `time`) all require TDS version `7.3` with TinyTDS. We recommend using FreeTDS 1.0 or higher which default to using `TDSVER` to `7.3`. The adapter also sets TinyTDS's `tds_version` to this as well if non is specified.
|
26
19
|
|
27
|
-
The Rails v5 adapter supports ActiveRecord's `datetime_with_precision` setting. This means that passing `:precision` to a datetime column is supported. Using a
|
20
|
+
The Rails v5 adapter supports ActiveRecord's `datetime_with_precision` setting. This means that passing `:precision` to a datetime column is supported. Using a precision with the `:datetime` type will signal the adapter to use the `datetime2` type under the hood.
|
28
21
|
|
29
22
|
|
30
23
|
#### Identity Inserts with Triggers
|
@@ -87,9 +80,9 @@ end
|
|
87
80
|
Every class that sub classes ActiveRecord::Base will now have an execute_procedure class method to use. This method takes the name of the stored procedure which can be a string or symbol and any number of variables to pass to the procedure. Arguments will automatically be quoted per the connection's standards as normal. For example:
|
88
81
|
|
89
82
|
```ruby
|
90
|
-
Account.execute_procedure
|
83
|
+
Account.execute_procedure(:update_totals, 'admin', nil, true
|
91
84
|
# Or with named parameters.
|
92
|
-
Account.execute_procedure
|
85
|
+
Account.execute_procedure(:update_totals, named: 'params')
|
93
86
|
```
|
94
87
|
|
95
88
|
#### Explain Support (SHOWPLAN)
|
@@ -126,7 +119,7 @@ ActiveRecord::ConnectionAdapters::SQLServerAdapter.showplan_option = 'SHOWPLAN_X
|
|
126
119
|
|
127
120
|
## Installation
|
128
121
|
|
129
|
-
The adapter has no strict gem dependencies outside of ActiveRecord
|
122
|
+
The adapter has no strict gem dependencies outside of `ActiveRecord`. You will have to pick a connection mode, the default is dblib which uses the `TinyTDS` gem. Just bundle the gem and the adapter will use it.
|
130
123
|
|
131
124
|
```ruby
|
132
125
|
gem 'tiny_tds'
|
@@ -146,30 +139,9 @@ If you would like to contribute a feature or bugfix, thanks! To make sure your f
|
|
146
139
|
|
147
140
|
Many many people have contributed. If you do not see your name here and it should be let us know. Also, many thanks go out to those that have pledged financial contributions.
|
148
141
|
|
149
|
-
|
150
|
-
## Contributors
|
151
|
-
|
152
|
-
Up-to-date list of contributors: http://github.com/rails-sqlserver/activerecord-sqlserver-adapter/contributors
|
153
|
-
|
154
|
-
* metaskills (Ken Collins)
|
155
|
-
* Annaswims (Annaswims)
|
156
|
-
* wbond (Will Bond)
|
157
|
-
* Thirdshift (Garrett Hart)
|
158
|
-
* h-lame (Murray Steele)
|
159
|
-
* vegantech
|
160
|
-
* cjheath (Clifford Heath)
|
161
|
-
* fryguy (Jason Frey)
|
162
|
-
* jrafanie (Joe Rafaniello)
|
163
|
-
* nerdrew (Andrew Ryan)
|
164
|
-
* snowblink (Jonathan Lim)
|
165
|
-
* koppen (Jakob Skjerning)
|
166
|
-
* ebryn (Erik Bryn)
|
167
|
-
* adzap (Adam Meehan)
|
168
|
-
* neomindryan (Ryan Findley)
|
169
|
-
* jeremydurham (Jeremy Durham)
|
170
|
-
|
142
|
+
You can see an up-to-date list of contributors here: http://github.com/rails-sqlserver/activerecord-sqlserver-adapter/contributors
|
171
143
|
|
172
144
|
## License
|
173
145
|
|
174
|
-
Copyright © 2008-
|
146
|
+
Copyright © 2008-2020. It is free software, and may be redistributed under the terms specified in the [MIT-LICENSE](MIT-LICENSE) file.
|
175
147
|
|
data/RUNNING_UNIT_TESTS.md
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
|
4
4
|
This process is much easier than it has been before!
|
5
5
|
|
6
|
+
## MS SQL SERVER
|
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).
|
6
9
|
|
7
10
|
## TL;DR
|
8
11
|
|
data/Rakefile
CHANGED
@@ -1,37 +1,35 @@
|
|
1
|
-
|
2
|
-
require 'rake/testtask'
|
3
|
-
require_relative 'test/support/paths_sqlserver'
|
4
|
-
require_relative 'test/support/rake_helpers'
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
|
-
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rake/testtask"
|
5
|
+
require_relative "test/support/paths_sqlserver"
|
6
|
+
require_relative "test/support/rake_helpers"
|
7
|
+
|
8
|
+
task test: ["test:dblib"]
|
7
9
|
task default: [:test]
|
8
10
|
|
9
11
|
namespace :test do
|
10
|
-
|
11
12
|
%w(dblib).each do |mode|
|
12
|
-
|
13
13
|
Rake::TestTask.new(mode) do |t|
|
14
14
|
t.libs = ARTest::SQLServer.test_load_paths
|
15
15
|
t.test_files = test_files
|
16
|
-
t.warning = !!ENV[
|
16
|
+
t.warning = !!ENV["WARNING"]
|
17
17
|
t.verbose = false
|
18
18
|
end
|
19
|
-
|
20
19
|
end
|
21
20
|
|
22
|
-
task
|
23
|
-
ENV[
|
21
|
+
task "dblib:env" do
|
22
|
+
ENV["ARCONN"] = "dblib"
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
27
25
|
|
28
|
-
task
|
26
|
+
task "test:dblib" => "test:dblib:env"
|
29
27
|
|
30
28
|
namespace :profile do
|
31
|
-
[
|
29
|
+
["dblib"].each do |mode|
|
32
30
|
namespace mode.to_sym do
|
33
|
-
Dir.glob(
|
34
|
-
profile_case = File.basename(test_file).sub(
|
31
|
+
Dir.glob("test/profile/*_profile_case.rb").sort.each do |test_file|
|
32
|
+
profile_case = File.basename(test_file).sub("_profile_case.rb", "")
|
35
33
|
Rake::TestTask.new(profile_case) do |t|
|
36
34
|
t.libs = ARTest::SQLServer.test_load_paths
|
37
35
|
t.test_files = [test_file]
|