activerecord-sqlserver-adapter 7.1.2 → 7.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3a248aa6570f730031990568b0f9efb68b92995fd218e43e03d806192756e29
4
- data.tar.gz: a6c68a2c9320d5c510cb223fa6d175946e099503a42e4f3d40cb4c39cda386c2
3
+ metadata.gz: b304aee82f2ca78fe1db797b127b31a73b95df1dfb670a7232a68d57b6d9846e
4
+ data.tar.gz: bb52aecdc34253336fdeafb2fad5d26a3cb48ea7dfd2a453c3b87f07a423c0a6
5
5
  SHA512:
6
- metadata.gz: 34ac63c0508d2874b4e9b535688138749472ed6817ace45ffa887c7fb0b40739d276da48a6f4962e12ae6f1e8547fc66d004740e8cbdf77f745386b060456111
7
- data.tar.gz: 46c1c6351facef6559cdaacf9e7f6ab99b6e788a73e2d7701b72de6d957c680270b1e774fffdcf1ab7e9af1a4616de17e0a8ac3f9745b9792b4ee0c521485df6
6
+ metadata.gz: 34a017ac93ad7e077f41e4897185ccf20820774e1b5ee3c49988fc58d3b0febf422e6989155100b06eab3b2bcfcd79fab35ec83a31d4c9b0a266fc54f06da652
7
+ data.tar.gz: e9fa8fc3869bc0cc20eac834eef6737421d0ff4cfc27a1064843c89a3fd4447f02c5b35338661740c55cbd7caf687151aa469fc2092c01a048ac4967612c88ad
@@ -1,7 +1,7 @@
1
1
  sudo chown -R vscode:vscode /usr/local/bundle
2
2
 
3
- # Wait for 5 seconds to make sure SQL Server came up.
4
- sleep 5
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
@@ -27,6 +27,8 @@ services:
27
27
  restart: unless-stopped
28
28
  networks:
29
29
  - default
30
+ volumes:
31
+ - sqlserver-data:/var/opt/mssql
30
32
  ports:
31
33
  - "1433:1433"
32
34
  environment:
@@ -35,3 +37,6 @@ services:
35
37
 
36
38
  networks:
37
39
  default:
40
+
41
+ volumes:
42
+ sqlserver-data:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v7.1.3
2
+
3
+ #### Fixed
4
+
5
+ - [#1152](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1152) Fix Composite Key Inserts with Triggers
6
+
1
7
  ## v7.1.2
2
8
 
3
9
  #### Fixed
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.2` | `7.1.x` | Active | [main](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
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 rails
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.2
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(pk).quoted
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.#{quoted_pk} INTO @ssaIdInsertTable"}
287
- SELECT CAST(#{quoted_pk} AS #{id_sql_type}) FROM @ssaIdInsertTable
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
@@ -7,3 +7,7 @@ end
7
7
  class SSTestTriggerUuid < ActiveRecord::Base
8
8
  self.table_name = "sst_table_with_uuid_trigger"
9
9
  end
10
+
11
+ class SSTestTriggerCompositePk < ActiveRecord::Base
12
+ self.table_name = "sst_table_with_composite_pk_trigger"
13
+ 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.2
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-01-23 00:00:00.000000000 Z
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.2/CHANGELOG.md
243
- source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.1.2
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.7
259
+ rubygems_version: 3.4.22
260
260
  signing_key:
261
261
  specification_version: 4
262
262
  summary: ActiveRecord SQL Server Adapter.