activerecord-sqlserver-adapter 8.0.0 → 8.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.devcontainer/devcontainer.json +1 -1
- data/.github/workflows/ci.yml +4 -10
- data/CHANGELOG.md +15 -3
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +8 -4
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
- data/test/cases/adapter_test_sqlserver.rb +9 -0
- data/test/cases/coerced_tests.rb +3 -0
- data/test/cases/schema_test_sqlserver.rb +6 -0
- metadata +6 -6
- /data/.devcontainer/{docker-compose.yml → compose.yaml} +0 -0
- /data/{docker-compose.ci.yml → compose.ci.yaml} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cebd5142b6e4cd7fc42be58fc02ba1be8cef17425812d28991643dec2a079743
|
4
|
+
data.tar.gz: dcf926a50cc90a36bb6d41b6adae4eabae84b92d3d4844c6661a9c0d60efd478
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4158590963a45ac2bd13ae2a8200554693a0ea9a5a2fd68ff17ec07ed25d8c03dd11efcbdb28b6dc0d56c7bd88df77e57c11a87ee375096077da78647ce80c0
|
7
|
+
data.tar.gz: 42a84013b9b6949f04d4eb99aa01b6727d2556dc2764b57454661f680eb4fe62541ce8fc05c74c7f7154c271601caf004fd864482d19115b1fc9cac152a4774a
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// For format details, see https://aka.ms/devcontainer.json.
|
2
2
|
{
|
3
3
|
"name": "ActiveRecord SQL Server Adapter project development",
|
4
|
-
"dockerComposeFile": "
|
4
|
+
"dockerComposeFile": "compose.yaml",
|
5
5
|
"service": "activerecord-sqlserver-adapter",
|
6
6
|
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
|
7
7
|
|
data/.github/workflows/ci.yml
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
name: CI
|
2
2
|
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches: [ main ]
|
6
|
-
pull_request:
|
7
|
-
branches: [ main ]
|
8
|
-
schedule:
|
9
|
-
- cron: '0 4 * * 1'
|
3
|
+
on: [push, pull_request]
|
10
4
|
|
11
5
|
jobs:
|
12
6
|
test:
|
@@ -14,14 +8,14 @@ jobs:
|
|
14
8
|
runs-on: ubuntu-20.04 # TODO: Change back to 'ubuntu-latest' when https://github.com/microsoft/mssql-docker/issues/899 resolved.
|
15
9
|
|
16
10
|
env:
|
17
|
-
COMPOSE_FILE:
|
11
|
+
COMPOSE_FILE: compose.ci.yaml
|
18
12
|
|
19
13
|
strategy:
|
20
14
|
fail-fast: false
|
21
15
|
matrix:
|
22
16
|
ruby:
|
23
|
-
- 3.3.
|
24
|
-
- 3.2.
|
17
|
+
- 3.3.6
|
18
|
+
- 3.2.6
|
25
19
|
|
26
20
|
steps:
|
27
21
|
- name: Checkout code
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,24 @@
|
|
1
|
+
## v8.0.2
|
2
|
+
|
3
|
+
#### Fixed
|
4
|
+
|
5
|
+
- [#1272](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1272) Fix parsing of raw table name from SQL with extra parentheses
|
6
|
+
|
7
|
+
## v8.0.1
|
8
|
+
|
9
|
+
#### Fixed
|
10
|
+
|
11
|
+
- [#1262](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1262) Fix distinct alias when multiple databases used.
|
12
|
+
|
1
13
|
## v8.0.0
|
2
14
|
|
3
15
|
#### Changed
|
4
16
|
|
5
|
-
- [#1216](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1216) Refactor adapter interface to match abstract adapter
|
6
|
-
- [#1225](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1225) Drop support to Ruby 3.1
|
17
|
+
- [#1216](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1216) Refactor adapter interface to match abstract adapter.
|
18
|
+
- [#1225](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1225) Drop support to Ruby 3.1.
|
7
19
|
|
8
20
|
#### Fixed
|
9
21
|
|
10
|
-
- [#1215](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1215) Fix mismatched foreign key errors
|
22
|
+
- [#1215](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1215) Fix mismatched foreign key errors.
|
11
23
|
|
12
24
|
Please check [7-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/7-2-stable/CHANGELOG.md) for previous changes.
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ See [Rubygems](https://rubygems.org/gems/activerecord-sqlserver-adapter/versions
|
|
18
18
|
|
19
19
|
| Adapter Version | Rails Version | Support | Branch |
|
20
20
|
|-----------------|---------------|----------------|-------------------------------------------------------------------------------------------------|
|
21
|
-
| `8.0.
|
21
|
+
| `8.0.x` | `8.0.x` | Active | [main](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
|
22
22
|
| `7.2.x` | `7.2.x` | Active | [7-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-2-stable) |
|
23
23
|
| `7.1.x` | `7.1.x` | Active | [7-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-1-stable) |
|
24
24
|
| `7.0.x` | `7.0.x` | Ended | [7-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-0-stable) |
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
8.0.
|
1
|
+
8.0.2
|
@@ -347,12 +347,16 @@ module ActiveRecord
|
|
347
347
|
|
348
348
|
def columns_for_distinct(columns, orders)
|
349
349
|
order_columns = orders.reject(&:blank?).map { |s|
|
350
|
-
s = s
|
350
|
+
s = visitor.compile(s) unless s.is_a?(String)
|
351
351
|
s.gsub(/\s+(?:ASC|DESC)\b/i, "")
|
352
352
|
.gsub(/\s+NULLS\s+(?:FIRST|LAST)\b/i, "")
|
353
|
-
|
353
|
+
}
|
354
|
+
.reject(&:blank?)
|
355
|
+
.reject { |s| columns.include?(s) }
|
354
356
|
|
355
|
-
|
357
|
+
order_columns_aliased = order_columns.map.with_index { |column, i| "#{column} AS alias_#{i}" }
|
358
|
+
|
359
|
+
(order_columns_aliased << super).join(", ")
|
356
360
|
end
|
357
361
|
|
358
362
|
def update_table_definition(table_name, base)
|
@@ -707,7 +711,7 @@ module ActiveRecord
|
|
707
711
|
elsif s.match?(/^\s*UPDATE\s+.*/i)
|
708
712
|
s.match(/UPDATE\s+([^\(\s]+)\s*/i)[1]
|
709
713
|
else
|
710
|
-
s.match(/FROM\s+((\[[^\(\]]+\])|[^\(\s]+)\s*/i)[1]
|
714
|
+
s.match(/FROM[\s|\(]+((\[[^\(\]]+\])|[^\(\s]+)\s*/i)[1]
|
711
715
|
end.strip
|
712
716
|
end
|
713
717
|
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require "tiny_tds"
|
4
4
|
require "base64"
|
5
5
|
require "active_record"
|
6
|
+
require "active_record/connection_adapters/statement_pool"
|
6
7
|
require "arel_sqlserver"
|
7
8
|
require "active_record/connection_adapters/sqlserver/core_ext/active_record"
|
8
9
|
require "active_record/connection_adapters/sqlserver/core_ext/explain"
|
@@ -616,4 +616,13 @@ class AdapterTestSQLServer < ActiveRecord::TestCase
|
|
616
616
|
assert_equal Task.where("starting < ?", DateTime.current).count, 1
|
617
617
|
end
|
618
618
|
end
|
619
|
+
|
620
|
+
describe "distinct select query" do
|
621
|
+
it "generated SQL does not contain unnecessary alias projection" do
|
622
|
+
sqls = capture_sql do
|
623
|
+
Post.includes(:comments).joins(:comments).first
|
624
|
+
end
|
625
|
+
assert_no_match(/AS alias_0/, sqls.first)
|
626
|
+
end
|
627
|
+
end
|
619
628
|
end
|
data/test/cases/coerced_tests.rb
CHANGED
@@ -1183,6 +1183,9 @@ module ActiveRecord
|
|
1183
1183
|
end
|
1184
1184
|
end
|
1185
1185
|
|
1186
|
+
# SQL Server does not support 'restrict' for 'on_update' or 'on_delete'.
|
1187
|
+
coerce_tests! :test_remove_foreign_key_with_restrict_action
|
1188
|
+
|
1186
1189
|
# Error message depends on the database adapter.
|
1187
1190
|
coerce_tests! :test_add_foreign_key_with_if_not_exists_not_set
|
1188
1191
|
def test_add_foreign_key_with_if_not_exists_not_set_coerced
|
@@ -101,5 +101,11 @@ class SchemaTestSQLServer < ActiveRecord::TestCase
|
|
101
101
|
assert_equal "[with].[select notation]", connection.send(:get_raw_table_name, "INSERT INTO [with].[select notation] SELECT * FROM [table_name]")
|
102
102
|
end
|
103
103
|
end
|
104
|
+
|
105
|
+
describe 'CREATE VIEW statements' do
|
106
|
+
it do
|
107
|
+
assert_equal "test_table_as", connection.send(:get_raw_table_name, "CREATE VIEW test_views ( test_table_a_id, test_table_b_id ) AS SELECT test_table_as.id as test_table_a_id, test_table_bs.id as test_table_b_id FROM (test_table_as with(nolock) LEFT JOIN test_table_bs with(nolock) ON (test_table_as.id = test_table_bs.test_table_a_id))")
|
108
|
+
end
|
109
|
+
end
|
104
110
|
end
|
105
111
|
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: 8.0.
|
4
|
+
version: 8.0.2
|
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:
|
18
|
+
date: 2025-01-08 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|
@@ -55,8 +55,8 @@ extra_rdoc_files: []
|
|
55
55
|
files:
|
56
56
|
- ".devcontainer/Dockerfile"
|
57
57
|
- ".devcontainer/boot.sh"
|
58
|
+
- ".devcontainer/compose.yaml"
|
58
59
|
- ".devcontainer/devcontainer.json"
|
59
|
-
- ".devcontainer/docker-compose.yml"
|
60
60
|
- ".editorconfig"
|
61
61
|
- ".github/issue_template.md"
|
62
62
|
- ".github/workflows/ci.yml"
|
@@ -74,7 +74,7 @@ files:
|
|
74
74
|
- VERSION
|
75
75
|
- activerecord-sqlserver-adapter.gemspec
|
76
76
|
- appveyor.yml
|
77
|
-
-
|
77
|
+
- compose.ci.yaml
|
78
78
|
- guides/RELEASING.md
|
79
79
|
- lib/active_record/connection_adapters/sqlserver/core_ext/abstract_adapter.rb
|
80
80
|
- lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb
|
@@ -238,8 +238,8 @@ licenses:
|
|
238
238
|
- MIT
|
239
239
|
metadata:
|
240
240
|
bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
|
241
|
-
changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v8.0.
|
242
|
-
source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v8.0.
|
241
|
+
changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v8.0.2/CHANGELOG.md
|
242
|
+
source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v8.0.2
|
243
243
|
post_install_message:
|
244
244
|
rdoc_options: []
|
245
245
|
require_paths:
|
File without changes
|
File without changes
|