activerecord-sqlserver-adapter 8.0.10 → 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.
- checksums.yaml +4 -4
- data/.devcontainer/Dockerfile +1 -1
- data/.github/workflows/ci.yml +34 -3
- data/CHANGELOG.md +14 -68
- data/Dockerfile.ci +1 -1
- data/Gemfile +7 -9
- data/Guardfile +2 -2
- data/README.md +33 -13
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/activerecord-sqlserver-adapter.gemspec +15 -16
- data/compose.ci.yaml +8 -1
- data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +1 -2
- data/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +4 -4
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +118 -83
- data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +3 -4
- data/lib/active_record/connection_adapters/sqlserver/quoting.rb +7 -7
- data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +24 -12
- data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +17 -8
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +162 -156
- data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +2 -2
- data/lib/active_record/connection_adapters/sqlserver/showplan.rb +5 -5
- data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +2 -7
- data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +3 -1
- data/lib/active_record/connection_adapters/sqlserver/type/data.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/date.rb +3 -3
- data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +3 -4
- data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver/type/time.rb +4 -6
- data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +1 -1
- data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +0 -2
- data/lib/active_record/connection_adapters/sqlserver/utils.rb +10 -12
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +118 -66
- data/lib/active_record/connection_adapters/sqlserver_column.rb +17 -9
- data/lib/active_record/tasks/sqlserver_database_tasks.rb +5 -5
- data/lib/arel/visitors/sqlserver.rb +55 -26
- data/test/cases/active_schema_test_sqlserver.rb +45 -23
- data/test/cases/adapter_test_sqlserver.rb +72 -59
- data/test/cases/coerced_tests.rb +365 -161
- data/test/cases/column_test_sqlserver.rb +328 -316
- data/test/cases/connection_test_sqlserver.rb +15 -11
- data/test/cases/enum_test_sqlserver.rb +8 -9
- data/test/cases/execute_procedure_test_sqlserver.rb +1 -1
- data/test/cases/fetch_test_sqlserver.rb +1 -1
- data/test/cases/helper_sqlserver.rb +7 -3
- data/test/cases/index_test_sqlserver.rb +8 -6
- data/test/cases/insert_all_test_sqlserver.rb +3 -28
- data/test/cases/json_test_sqlserver.rb +8 -8
- data/test/cases/lateral_test_sqlserver.rb +2 -2
- data/test/cases/migration_test_sqlserver.rb +12 -12
- data/test/cases/pessimistic_locking_test_sqlserver.rb +6 -6
- data/test/cases/primary_keys_test_sqlserver.rb +4 -4
- data/test/cases/rake_test_sqlserver.rb +15 -7
- data/test/cases/schema_dumper_test_sqlserver.rb +109 -113
- data/test/cases/schema_test_sqlserver.rb +7 -7
- data/test/cases/transaction_test_sqlserver.rb +6 -8
- data/test/cases/trigger_test_sqlserver.rb +1 -1
- data/test/cases/utils_test_sqlserver.rb +3 -3
- data/test/cases/view_test_sqlserver.rb +12 -8
- data/test/cases/virtual_column_test_sqlserver.rb +113 -0
- data/test/migrations/create_clients_and_change_column_collation.rb +2 -2
- data/test/models/sqlserver/edge_schema.rb +2 -2
- data/test/schema/sqlserver_specific_schema.rb +49 -37
- data/test/support/coerceable_test_sqlserver.rb +10 -10
- data/test/support/connection_reflection.rb +0 -5
- data/test/support/core_ext/backtrace_cleaner.rb +36 -0
- data/test/support/query_assertions.rb +6 -6
- data/test/support/rake_helpers.rb +6 -10
- metadata +12 -107
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: faf6670e4b55968e4dcfcb37340d733dc8db5a21fbd3b43b5f717183a6240dd8
|
|
4
|
+
data.tar.gz: d3eab140bf29dcdc1907415414e93e74eeb3d561758fc53f8457af83f5b8ec7d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f2659c6511ccf88935c1992f6a485bde6e75e4a4010222f3cbcaf2f4c90353eda7c4fff92fcc599d04cd8df1bffa6830e1691a7660d4f3e2c21dd058a3eda456
|
|
7
|
+
data.tar.gz: 5c28518313d0718e690b82be108c97a2f237a1cf4445c117a25c8d8b8ed6d0b05a5d09b46164fc5734b407728ed18878f39fe2a75b6ff0f47918e775a306eef2
|
data/.devcontainer/Dockerfile
CHANGED
|
@@ -25,6 +25,6 @@ RUN curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/t
|
|
|
25
25
|
RUN mkdir -p /tmp/activerecord-sqlserver-adapter
|
|
26
26
|
COPY Gemfile VERSION activerecord-sqlserver-adapter.gemspec /tmp/activerecord-sqlserver-adapter/
|
|
27
27
|
RUN cd /tmp/activerecord-sqlserver-adapter \
|
|
28
|
-
&& bundle install \
|
|
28
|
+
&& RAILS_BRANCH=8-1-stable bundle install \
|
|
29
29
|
&& rm -rf /tmp/activerecord-sqlserver-adapter
|
|
30
30
|
RUN chown -R vscode:vscode /usr/local/rvm
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
name: CI
|
|
2
2
|
|
|
3
|
-
on:
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: '0 4 * * 0'
|
|
4
10
|
|
|
5
11
|
jobs:
|
|
6
12
|
test:
|
|
@@ -15,8 +21,9 @@ jobs:
|
|
|
15
21
|
fail-fast: false
|
|
16
22
|
matrix:
|
|
17
23
|
ruby:
|
|
18
|
-
- 3.
|
|
19
|
-
- 3.
|
|
24
|
+
- 3.4.7
|
|
25
|
+
- 3.3.9
|
|
26
|
+
- 3.2.9
|
|
20
27
|
|
|
21
28
|
steps:
|
|
22
29
|
- name: Checkout code
|
|
@@ -27,3 +34,27 @@ jobs:
|
|
|
27
34
|
|
|
28
35
|
- name: Run tests
|
|
29
36
|
run: docker compose run ci
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
standardrb:
|
|
40
|
+
name: Code linting and formatting
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
|
|
43
|
+
env:
|
|
44
|
+
COMPOSE_FILE: compose.ci.yaml
|
|
45
|
+
|
|
46
|
+
strategy:
|
|
47
|
+
fail-fast: false
|
|
48
|
+
matrix:
|
|
49
|
+
ruby:
|
|
50
|
+
- 3.4.1
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- name: Checkout code
|
|
54
|
+
uses: actions/checkout@v2
|
|
55
|
+
|
|
56
|
+
- name: Build docker images
|
|
57
|
+
run: docker compose build --build-arg TARGET_VERSION=${{ matrix.ruby }}
|
|
58
|
+
|
|
59
|
+
- name: Run standardrb
|
|
60
|
+
run: docker compose run standardrb
|
data/CHANGELOG.md
CHANGED
|
@@ -1,78 +1,24 @@
|
|
|
1
|
-
## v8.0
|
|
2
|
-
|
|
3
|
-
#### Fixed
|
|
4
|
-
|
|
5
|
-
- [#1370](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1370) Fixed query logging so that filter parameters are respected.
|
|
6
|
-
|
|
7
|
-
## v8.0.9
|
|
8
|
-
|
|
9
|
-
#### Fixed
|
|
10
|
-
|
|
11
|
-
- [#1366](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1366) Correctly retrieve the SQL Server database version.
|
|
12
|
-
|
|
13
|
-
## v8.0.8
|
|
14
|
-
|
|
15
|
-
#### Changed
|
|
16
|
-
|
|
17
|
-
- [#1342](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1342) Support more Azure services by changing language source.
|
|
18
|
-
|
|
19
|
-
#### Fixed
|
|
20
|
-
- [#1345](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1345) Maintain index options during `change_column` operations.
|
|
21
|
-
- [#1357](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1357) Support cross database inserts.
|
|
22
|
-
|
|
23
|
-
## v8.0.7
|
|
24
|
-
|
|
25
|
-
#### Fixed
|
|
26
|
-
|
|
27
|
-
- [#1334](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1334) Enable identity insert on view's base table for fixtures.
|
|
28
|
-
- [#1339](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1339) Fix `insert_all`/`upsert_all` for table names containing numbers.
|
|
29
|
-
|
|
30
|
-
## v8.0.6
|
|
31
|
-
|
|
32
|
-
#### Fixed
|
|
33
|
-
|
|
34
|
-
- [#1318](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1318) Reverse order of values when upserting
|
|
35
|
-
- [#1321](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1321) Fix SQL statement to calculate `updated_at` when upserting
|
|
36
|
-
|
|
37
|
-
## v8.0.5
|
|
1
|
+
## v8.1.0
|
|
38
2
|
|
|
39
3
|
#### Added
|
|
40
4
|
|
|
41
|
-
- [#
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
#### Fixed
|
|
46
|
-
|
|
47
|
-
- [#1308](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1308) Fix retrieval of temporary table's column information.
|
|
48
|
-
|
|
49
|
-
## v8.0.3
|
|
50
|
-
|
|
51
|
-
#### Fixed
|
|
52
|
-
|
|
53
|
-
- [#1306](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1306) Fix affected rows count when lowercase schema reflection enabled
|
|
54
|
-
|
|
55
|
-
## v8.0.2
|
|
56
|
-
|
|
57
|
-
#### Fixed
|
|
58
|
-
|
|
59
|
-
- [#1272](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1272) Fix parsing of raw table name from SQL with extra parentheses
|
|
60
|
-
|
|
61
|
-
## v8.0.1
|
|
62
|
-
|
|
63
|
-
#### Fixed
|
|
64
|
-
|
|
65
|
-
- [#1262](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1262) Fix distinct alias when multiple databases used.
|
|
66
|
-
|
|
67
|
-
## v8.0.0
|
|
5
|
+
- [#1301](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1301) Add support for `INDEX INCLUDE`.
|
|
6
|
+
- [#1312](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1312) Add support for `insert_all` and `upsert_all`.
|
|
7
|
+
- [#1367](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1367) Added support for computed columns.
|
|
68
8
|
|
|
69
9
|
#### Changed
|
|
70
10
|
|
|
71
|
-
- [#
|
|
72
|
-
- [#
|
|
11
|
+
- [#1273](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1273) TinyTDS v3+ is now required.
|
|
12
|
+
- [#1317](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1317) Reverse order of values when upserting.
|
|
13
|
+
- [#1343](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1343) Support more Azure services by changing language source.
|
|
73
14
|
|
|
74
15
|
#### Fixed
|
|
75
16
|
|
|
76
|
-
- [#
|
|
17
|
+
- [#1313](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1313) Correctly retrieve the SQL Server database version.
|
|
18
|
+
- [#1320](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1320) Fix SQL statement to calculate `updated_at` when upserting.
|
|
19
|
+
- [#1327](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1327) Fix multiple `nil` identity columns for merge insert.
|
|
20
|
+
- [#1338](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1338) Fix `insert_all`/`upsert_all` for table names containing numbers.
|
|
21
|
+
- [#1345](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1345) Maintain index options during `change_column` operations.
|
|
22
|
+
- [#1357](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1357) Support cross database inserts.
|
|
77
23
|
|
|
78
|
-
Please check [
|
|
24
|
+
Please check [8-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/8-0-stable/CHANGELOG.md) for previous changes.
|
data/Dockerfile.ci
CHANGED
|
@@ -9,6 +9,6 @@ WORKDIR $WORKDIR
|
|
|
9
9
|
|
|
10
10
|
COPY . $WORKDIR
|
|
11
11
|
|
|
12
|
-
RUN bundle install --jobs `expr $(cat /proc/cpuinfo | grep -c "cpu cores") - 1` --retry 3
|
|
12
|
+
RUN RAILS_BRANCH=8-1-stable bundle install --jobs `expr $(cat /proc/cpuinfo | grep -c "cpu cores") - 1` --retry 3
|
|
13
13
|
|
|
14
14
|
CMD ["sh"]
|
data/Gemfile
CHANGED
|
@@ -7,8 +7,8 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
|
7
7
|
gemspec
|
|
8
8
|
|
|
9
9
|
gem "bcrypt"
|
|
10
|
-
gem "pg",
|
|
11
|
-
gem "sqlite3", ">= 1
|
|
10
|
+
gem "pg", "1.5.9"
|
|
11
|
+
gem "sqlite3", ">= 2.1"
|
|
12
12
|
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
|
13
13
|
gem "benchmark-ips"
|
|
14
14
|
gem "minitest", ">= 5.15.0"
|
|
@@ -27,14 +27,14 @@ else
|
|
|
27
27
|
require "net/http"
|
|
28
28
|
require "yaml"
|
|
29
29
|
|
|
30
|
-
spec =
|
|
31
|
-
ver
|
|
30
|
+
spec = Gem::Specification.load("activerecord-sqlserver-adapter.gemspec")
|
|
31
|
+
ver = spec.dependencies.detect { |d| d.name == "activerecord" }.requirement.requirements.first.last.version
|
|
32
32
|
major, minor, _tiny, pre = ver.split(".")
|
|
33
33
|
|
|
34
34
|
if pre
|
|
35
35
|
ver
|
|
36
36
|
else
|
|
37
|
-
uri
|
|
37
|
+
uri = URI.parse("https://rubygems.org/api/v1/versions/activerecord.yaml")
|
|
38
38
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
39
39
|
http.use_ssl = true
|
|
40
40
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
@@ -68,9 +68,7 @@ end
|
|
|
68
68
|
group :guard do
|
|
69
69
|
gem "guard"
|
|
70
70
|
gem "guard-minitest"
|
|
71
|
-
gem "terminal-notifier-guard" if RbConfig::CONFIG["host_os"]
|
|
71
|
+
gem "terminal-notifier-guard" if /darwin/.match?(RbConfig::CONFIG["host_os"])
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
gem "rubocop", require: false
|
|
76
|
-
end
|
|
74
|
+
gem "standard", require: false
|
data/Guardfile
CHANGED
|
@@ -6,7 +6,7 @@ clearing :on
|
|
|
6
6
|
notification :terminal_notifier if defined?(TerminalNotifier)
|
|
7
7
|
ignore %r{debug\.log}
|
|
8
8
|
|
|
9
|
-
ar_lib
|
|
9
|
+
ar_lib = File.join ARTest::SQLServer.root_activerecord, "lib"
|
|
10
10
|
ar_test = File.join ARTest::SQLServer.root_activerecord, "test"
|
|
11
11
|
|
|
12
12
|
guard :minitest, {
|
|
@@ -24,7 +24,7 @@ guard :minitest, {
|
|
|
24
24
|
else
|
|
25
25
|
watch(%r{^test/cases/\w+_test_sqlserver\.rb$})
|
|
26
26
|
watch(%r{^test/cases/coerced_tests\.rb$}) { "test/cases/coerced_tests.rb" }
|
|
27
|
-
watch(%r{^lib/active_record/connection_adapters/sqlserver/([^/]+)\.rb$})
|
|
27
|
+
watch(%r{^lib/active_record/connection_adapters/sqlserver/([^/]+)\.rb$}) { |m| "test/cases/#{m[1]}_test_sqlserver.rb" }
|
|
28
28
|
watch(%r{^test/cases/helper_sqlserver\.rb$}) { "test" }
|
|
29
29
|
end
|
|
30
30
|
end
|
data/README.md
CHANGED
|
@@ -16,23 +16,24 @@ maintenance group.
|
|
|
16
16
|
|
|
17
17
|
See [Rubygems](https://rubygems.org/gems/activerecord-sqlserver-adapter/versions) for the latest version of the adapter for each Rails release.
|
|
18
18
|
|
|
19
|
-
| Adapter Version | Rails Version | Support | Branch
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
| `
|
|
23
|
-
| `7.
|
|
24
|
-
| `7.
|
|
25
|
-
| `
|
|
26
|
-
| `6.
|
|
27
|
-
| `
|
|
28
|
-
| `5.
|
|
29
|
-
| `
|
|
30
|
-
| `4.
|
|
19
|
+
| Adapter Version | Rails Version | Support | Branch |
|
|
20
|
+
|-----------------|---------------|----------------|----------------------------------------------------------------------------------------------------|
|
|
21
|
+
| Unreleased | `8.1.x` | In Development | [main](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
|
|
22
|
+
| `8.0.x` | `8.0.x` | Active | [8-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/8-0-stable) |
|
|
23
|
+
| `7.2.x` | `7.2.x` | Ended | [7-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-2-stable) |
|
|
24
|
+
| `7.1.x` | `7.1.x` | Ended | [7-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-1-stable) |
|
|
25
|
+
| `7.0.x` | `7.0.x` | Ended | [7-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-0-stable) |
|
|
26
|
+
| `6.1.x` | `6.1.x` | Ended | [6-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-1-stable) |
|
|
27
|
+
| `6.0.x` | `6.0.x` | Ended | [6-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-0-stable) |
|
|
28
|
+
| `5.2.x` | `5.2.x` | Ended | [5-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-2-stable) |
|
|
29
|
+
| `5.1.x` | `5.1.x` | Ended | [5-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-1-stable) |
|
|
30
|
+
| `4.2.x` | `4.2.x` | Ended | [4-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/4-2-stable) |
|
|
31
|
+
| `4.1.x` | `4.1.x` | Ended | [4-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/4-1-stable) |
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
#### Native Data Type Support
|
|
34
35
|
|
|
35
|
-
We support every data type supported by FreeTDS. All simplified Rails types in migrations will correspond to a matching SQL Server national (unicode) data type. Always check the `
|
|
36
|
+
We support every data type supported by FreeTDS. All simplified Rails types in migrations will correspond to a matching SQL Server national (unicode) data type. Always check the `NATIVE_DATABASE_TYPES` [(here)](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/lib/active_record/connection_adapters/sqlserver_adapter.rb) for an updated list.
|
|
36
37
|
|
|
37
38
|
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.
|
|
38
39
|
|
|
@@ -185,6 +186,19 @@ The removal of duplicates happens during the SQL query.
|
|
|
185
186
|
|
|
186
187
|
Because of this implementation, if you pass `on_duplicate` to `upsert_all`, make sure to assign your value to `target.[column_name]` (e.g. `target.status = GREATEST(target.status, 1)`). To access the values that you want to upsert, use `source.[column_name]`.
|
|
187
188
|
|
|
189
|
+
#### Computed Columns
|
|
190
|
+
|
|
191
|
+
The adapter supports computed columns. They can either be virtual `stored: false` (default) and persisted `stored: true`. You can create a computed column in a migration like so:
|
|
192
|
+
|
|
193
|
+
```ruby
|
|
194
|
+
create_table :users do |t|
|
|
195
|
+
t.string :name
|
|
196
|
+
t.virtual :lower_name, as: "LOWER(name)", stored: false
|
|
197
|
+
t.virtual :upper_name, as: "UPPER(name)", stored: true
|
|
198
|
+
t.virtual :name_length, as: "LEN(name)"
|
|
199
|
+
end
|
|
200
|
+
```
|
|
201
|
+
|
|
188
202
|
## New Rails Applications
|
|
189
203
|
|
|
190
204
|
When creating a new Rails application you need to perform the following steps to connect a Rails application to a
|
|
@@ -226,6 +240,12 @@ The adapter has no strict gem dependencies outside of `ActiveRecord` and
|
|
|
226
240
|
gem 'activerecord-sqlserver-adapter'
|
|
227
241
|
```
|
|
228
242
|
|
|
243
|
+
## Reporting an Issue
|
|
244
|
+
|
|
245
|
+
Having a way to reproduce your issue will help people confirm, investigate, and ultimately fix your issue. You
|
|
246
|
+
can do this by providing an executable test case. To make this process easier, we have prepared a bug report template
|
|
247
|
+
for you to use as a starting point at [How to report a bug](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/How-to-report-a-bug).
|
|
248
|
+
|
|
229
249
|
## Contributing
|
|
230
250
|
|
|
231
251
|
Please contribute to the project by submitting bug fixes and features. To make sure your fix/feature has
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.0
|
|
1
|
+
8.1.0
|
|
@@ -3,30 +3,29 @@
|
|
|
3
3
|
version = File.read(File.expand_path("VERSION", __dir__)).strip
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name
|
|
7
|
-
spec.platform
|
|
8
|
-
spec.version
|
|
6
|
+
spec.name = "activerecord-sqlserver-adapter"
|
|
7
|
+
spec.platform = Gem::Platform::RUBY
|
|
8
|
+
spec.version = version
|
|
9
9
|
|
|
10
10
|
spec.required_ruby_version = ">= 3.2.0"
|
|
11
11
|
|
|
12
|
-
spec.license
|
|
13
|
-
spec.authors
|
|
14
|
-
spec.email
|
|
15
|
-
spec.homepage
|
|
16
|
-
spec.summary
|
|
17
|
-
spec.description
|
|
12
|
+
spec.license = "MIT"
|
|
13
|
+
spec.authors = ["Ken Collins", "Anna Carey", "Will Bond", "Murray Steele", "Shawn Balestracci", "Joe Rafaniello", "Tom Ward", "Aidan Haran"]
|
|
14
|
+
spec.email = ["ken@metaskills.net", "will@wbond.net"]
|
|
15
|
+
spec.homepage = "http://github.com/rails-sqlserver/activerecord-sqlserver-adapter"
|
|
16
|
+
spec.summary = "ActiveRecord SQL Server Adapter."
|
|
17
|
+
spec.description = "ActiveRecord SQL Server Adapter. SQL Server 2012 and upward."
|
|
18
18
|
|
|
19
|
-
spec.metadata
|
|
19
|
+
spec.metadata = {
|
|
20
20
|
"bug_tracker_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues",
|
|
21
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}"
|
|
22
|
+
"source_code_uri" => "https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v#{version}"
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
spec.files
|
|
26
|
-
spec.executables
|
|
27
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
25
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
26
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
28
27
|
spec.require_paths = ["lib"]
|
|
29
28
|
|
|
30
|
-
spec.add_dependency "activerecord", "~> 8.0.
|
|
31
|
-
spec.add_dependency "tiny_tds"
|
|
29
|
+
spec.add_dependency "activerecord", "~> 8.1.0.rc1"
|
|
30
|
+
spec.add_dependency "tiny_tds", "~> 3.0"
|
|
32
31
|
end
|
data/compose.ci.yaml
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
version: "2.2"
|
|
2
1
|
services:
|
|
3
2
|
sqlserver:
|
|
4
3
|
image: ghcr.io/rails-sqlserver/mssql-server-linux-rails
|
|
5
4
|
ci:
|
|
6
5
|
environment:
|
|
7
6
|
- ACTIVERECORD_UNITTEST_HOST=sqlserver
|
|
7
|
+
- RAILS_BRANCH=8-1-stable
|
|
8
8
|
build:
|
|
9
9
|
context: .
|
|
10
10
|
dockerfile: Dockerfile.ci
|
|
11
11
|
command: wait-for sqlserver:1433 -- bundle exec rake test
|
|
12
12
|
depends_on:
|
|
13
13
|
- "sqlserver"
|
|
14
|
+
standardrb:
|
|
15
|
+
environment:
|
|
16
|
+
- RAILS_BRANCH=8-1-stable
|
|
17
|
+
build:
|
|
18
|
+
context: .
|
|
19
|
+
dockerfile: Dockerfile.ci
|
|
20
|
+
command: bundle exec standardrb
|
|
@@ -32,8 +32,7 @@ module ActiveRecord
|
|
|
32
32
|
executesql = executesql.match(SQLSERVER_STATEMENT_REGEXP).to_a[1]
|
|
33
33
|
|
|
34
34
|
binds.each_with_index do |bind, index|
|
|
35
|
-
|
|
36
|
-
value = if bind.is_a?(::ActiveModel::Attribute) then
|
|
35
|
+
value = if bind.is_a?(::ActiveModel::Attribute)
|
|
37
36
|
connection.quote(bind.value_for_database)
|
|
38
37
|
else
|
|
39
38
|
connection.quote(bind)
|
|
@@ -5,6 +5,6 @@ require "active_support/core_ext/kernel/reporting"
|
|
|
5
5
|
ActiveSupport.on_load(:active_record) do
|
|
6
6
|
silence_warnings do
|
|
7
7
|
# Already defined in Rails
|
|
8
|
-
ActiveRecord::
|
|
8
|
+
ActiveRecord::ExplainRegistry::Subscriber::EXPLAINED_SQLS = /(select|update|delete|insert)\b/i
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -24,16 +24,16 @@ module ActiveRecord
|
|
|
24
24
|
def _construct_relation_for_exists(conditions)
|
|
25
25
|
conditions = sanitize_forbidden_attributes(conditions)
|
|
26
26
|
|
|
27
|
-
if distinct_value && offset_value
|
|
27
|
+
relation = if distinct_value && offset_value
|
|
28
28
|
# Start of monkey-patch
|
|
29
29
|
if select_values.present?
|
|
30
|
-
|
|
30
|
+
order(*select_values).limit!(1)
|
|
31
31
|
else
|
|
32
|
-
|
|
32
|
+
except(:order).limit!(1)
|
|
33
33
|
end
|
|
34
34
|
# End of monkey-patch
|
|
35
35
|
else
|
|
36
|
-
|
|
36
|
+
except(:select, :distinct, :order)._select!(Arel.sql(::ActiveRecord::FinderMethods::ONE_AS_ONE, retryable: true)).limit!(1)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
case conditions
|