activerecord-sqlserver-adapter 7.1.2 → 7.1.3
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/boot.sh +2 -2
- data/.devcontainer/docker-compose.yml +5 -0
- data/CHANGELOG.md +6 -0
- data/README.md +2 -2
- data/VERSION +1 -1
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +4 -4
- data/test/cases/trigger_test_sqlserver.rb +10 -0
- data/test/models/sqlserver/trigger.rb +4 -0
- data/test/schema/sqlserver_specific_schema.rb +17 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b304aee82f2ca78fe1db797b127b31a73b95df1dfb670a7232a68d57b6d9846e
|
4
|
+
data.tar.gz: bb52aecdc34253336fdeafb2fad5d26a3cb48ea7dfd2a453c3b87f07a423c0a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34a017ac93ad7e077f41e4897185ccf20820774e1b5ee3c49988fc58d3b0febf422e6989155100b06eab3b2bcfcd79fab35ec83a31d4c9b0a266fc54f06da652
|
7
|
+
data.tar.gz: e9fa8fc3869bc0cc20eac834eef6737421d0ff4cfc27a1064843c89a3fd4447f02c5b35338661740c55cbd7caf687151aa469fc2092c01a048ac4967612c88ad
|
data/.devcontainer/boot.sh
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
sudo chown -R vscode:vscode /usr/local/bundle
|
2
2
|
|
3
|
-
# Wait for
|
4
|
-
sleep
|
3
|
+
# Wait for 10 seconds to make sure SQL Server came up.
|
4
|
+
sleep 10
|
5
5
|
|
6
6
|
# Setup test databases and users.
|
7
7
|
/opt/mssql-tools18/bin/sqlcmd -C -S sqlserver -U sa -P "MSSQLadmin!" <<SQL
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Interested in older versions? We follow a rational versioning policy that tracks
|
|
13
13
|
|
14
14
|
| Adapter Version | Rails Version | Support | Branch |
|
15
15
|
|-----------------|---------------|---------|--------------------------------------------------------------------------------------------------|
|
16
|
-
| `7.1.
|
16
|
+
| `7.1.3` | `7.1.x` | Active | [main](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
|
17
17
|
| `7.0.5.1` | `7.0.x` | Active | [7-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/7-0-stable) |
|
18
18
|
| `6.1.3.0` | `6.1.x` | Active | [6-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-1-stable) |
|
19
19
|
| `6.0.3` | `6.0.x` | Ended | [6-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-0-stable) |
|
@@ -199,7 +199,7 @@ utilize the [`.devcontainer`](https://github.com/rails-sqlserver/activerecord-sq
|
|
199
199
|
|
200
200
|
```bash
|
201
201
|
$ npm install -g @devcontainers/cli
|
202
|
-
$ cd
|
202
|
+
$ cd activerecord-sqlserver-adapter
|
203
203
|
$ devcontainer up --workspace-folder .
|
204
204
|
$ devcontainer exec --workspace-folder . bash
|
205
205
|
```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
7.1.
|
1
|
+
7.1.3
|
@@ -278,13 +278,13 @@ module ActiveRecord
|
|
278
278
|
exclude_output_inserted = exclude_output_inserted_table_name?(table_name, sql)
|
279
279
|
|
280
280
|
if exclude_output_inserted
|
281
|
-
quoted_pk = SQLServer::Utils.extract_identifiers(
|
281
|
+
quoted_pk = Array(pk).map { |subkey| SQLServer::Utils.extract_identifiers(subkey).quoted }
|
282
282
|
|
283
283
|
id_sql_type = exclude_output_inserted.is_a?(TrueClass) ? "bigint" : exclude_output_inserted
|
284
284
|
<<~SQL.squish
|
285
|
-
DECLARE @ssaIdInsertTable table (#{quoted_pk} #{id_sql_type});
|
286
|
-
#{sql.dup.insert sql.index(/ (DEFAULT )?VALUES/i), " OUTPUT INSERTED.#{
|
287
|
-
SELECT CAST(#{
|
285
|
+
DECLARE @ssaIdInsertTable table (#{quoted_pk.map { |subkey| "#{subkey} #{id_sql_type}"}.join(", ") });
|
286
|
+
#{sql.dup.insert sql.index(/ (DEFAULT )?VALUES/i), " OUTPUT #{ quoted_pk.map { |subkey| "INSERTED.#{subkey}" }.join(", ") } INTO @ssaIdInsertTable"}
|
287
|
+
SELECT #{quoted_pk.map {|subkey| "CAST(#{subkey} AS #{id_sql_type}) #{subkey}"}.join(", ")} FROM @ssaIdInsertTable
|
288
288
|
SQL
|
289
289
|
else
|
290
290
|
returning_columns = returning || Array(pk)
|
@@ -28,4 +28,14 @@ class SQLServerTriggerTest < ActiveRecord::TestCase
|
|
28
28
|
_(obj.id).must_be :present?
|
29
29
|
_(obj.id.to_s).must_equal SSTestTriggerHistory.first.id_source
|
30
30
|
end
|
31
|
+
|
32
|
+
it "can insert into a table with composite pk with output inserted - with a true setting for table name" do
|
33
|
+
exclude_output_inserted_table_names["sst_table_with_composite_pk_trigger"] = true
|
34
|
+
assert SSTestTriggerHistory.all.empty?
|
35
|
+
obj = SSTestTriggerCompositePk.create! pk_col_one: 123, pk_col_two: 42, event_name: "test trigger"
|
36
|
+
_(obj.event_name).must_equal "test trigger"
|
37
|
+
_(obj.pk_col_one).must_equal 123
|
38
|
+
_(obj.pk_col_two).must_equal 42
|
39
|
+
_(obj.pk_col_one.to_s).must_equal SSTestTriggerHistory.first.id_source
|
40
|
+
end
|
31
41
|
end
|
@@ -232,6 +232,23 @@ ActiveRecord::Schema.define do
|
|
232
232
|
SELECT id AS id_source, event_name FROM INSERTED
|
233
233
|
SQL
|
234
234
|
|
235
|
+
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_table_with_composite_pk_trigger') DROP TABLE sst_table_with_composite_pk_trigger"
|
236
|
+
execute <<-SQL
|
237
|
+
CREATE TABLE sst_table_with_composite_pk_trigger(
|
238
|
+
pk_col_one int NOT NULL,
|
239
|
+
pk_col_two int NOT NULL,
|
240
|
+
event_name nvarchar(255),
|
241
|
+
CONSTRAINT PK_sst_table_with_composite_pk_trigger PRIMARY KEY (pk_col_one, pk_col_two)
|
242
|
+
)
|
243
|
+
SQL
|
244
|
+
execute <<-SQL
|
245
|
+
CREATE TRIGGER sst_table_with_composite_pk_trigger_t ON sst_table_with_composite_pk_trigger
|
246
|
+
FOR INSERT
|
247
|
+
AS
|
248
|
+
INSERT INTO sst_table_with_trigger_history (id_source, event_name)
|
249
|
+
SELECT pk_col_one AS id_source, event_name FROM INSERTED
|
250
|
+
SQL
|
251
|
+
|
235
252
|
# Another schema.
|
236
253
|
|
237
254
|
create_table :sst_schema_columns, force: true do |t|
|
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.1.
|
4
|
+
version: 7.1.3
|
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-
|
18
|
+
date: 2024-02-15 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|
@@ -239,8 +239,8 @@ licenses:
|
|
239
239
|
- MIT
|
240
240
|
metadata:
|
241
241
|
bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
|
242
|
-
changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7.1.
|
243
|
-
source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.1.
|
242
|
+
changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7.1.3/CHANGELOG.md
|
243
|
+
source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.1.3
|
244
244
|
post_install_message:
|
245
245
|
rdoc_options: []
|
246
246
|
require_paths:
|
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
256
|
- !ruby/object:Gem::Version
|
257
257
|
version: '0'
|
258
258
|
requirements: []
|
259
|
-
rubygems_version: 3.4.
|
259
|
+
rubygems_version: 3.4.22
|
260
260
|
signing_key:
|
261
261
|
specification_version: 4
|
262
262
|
summary: ActiveRecord SQL Server Adapter.
|