activerecord-sqlserver-adapter 8.0.3 → 8.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b4cb69b0399f82377f0040e7dcccd0719b6c0888340c9b414242c8c34ef397f
4
- data.tar.gz: f4471895b0205dd2a0fc64e6c11bff4029f571d7dd32785716f8c25e543ea5d5
3
+ metadata.gz: 4eb3a0a586688c3993353fb977268ed3440893c15277decb16cfa76ea6704f1f
4
+ data.tar.gz: b439d90171035e52adcfe1a03b40ab55a228fd0e6d6fc272b8bde37104a8fc64
5
5
  SHA512:
6
- metadata.gz: 481374ca51d805690cceee43da33d56b7b2c663664714835618b7e9a5a625afa8415f4a4cecbbc0a87c91ac001b69e9bff35cb62cd41f68abff055b4a0b986cf
7
- data.tar.gz: 625a20134275da58d146332c2b1a30e222a5c9c5d86a0b1f41a705b1d7238ebd78163f47711fa5c0a32efc6fb995549728f1b6737c4d25cabaecc181d4259868
6
+ metadata.gz: d7dde4f70fbd4c665701f5765acfd194a2f60c3cf540ed966d43c264fffc747c7e14a1d61674eae17648fec758d20090b47bb5086f49d8046a7ebd2494b355cd
7
+ data.tar.gz: 9c85aa63eedd0a1dd1387336cac08fbaf4596c4b0aeed7309af5b92183690f8a3d4803917f234258ceb3b8245e9edc5da0866c474c08031eb50149a028c2f53c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v8.0.4
2
+
3
+ #### Fixed
4
+
5
+ - [#1308](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1308) Fix retrieval of temporary table's column information.
6
+
1
7
  ## v8.0.3
2
8
 
3
9
  #### Fixed
data/VERSION CHANGED
@@ -1 +1 @@
1
- 8.0.3
1
+ 8.0.4
@@ -592,12 +592,22 @@ module ActiveRecord
592
592
  end
593
593
 
594
594
  def column_definitions_sql(database, identifier)
595
- object_name = prepared_statements ? "@0" : quote(identifier.object)
596
- schema_name = if identifier.schema.blank?
597
- "schema_name()"
598
- else
599
- prepared_statements ? "@1" : quote(identifier.schema)
600
- end
595
+ schema_name = "schema_name()"
596
+
597
+ if prepared_statements
598
+ object_name = "@0"
599
+ schema_name = "@1" if identifier.schema.present?
600
+ else
601
+ object_name = quote(identifier.object)
602
+ schema_name = quote(identifier.schema) if identifier.schema.present?
603
+ end
604
+
605
+ object_id_arg = identifier.schema.present? ? "CONCAT(#{schema_name},'.',#{object_name})" : object_name
606
+
607
+ if identifier.temporary_table?
608
+ database = "TEMPDB"
609
+ object_id_arg = "CONCAT('#{database}','..',#{object_name})"
610
+ end
601
611
 
602
612
  %{
603
613
  SELECT
@@ -652,7 +662,7 @@ module ActiveRecord
652
662
  AND k.unique_index_id = ic.index_id
653
663
  AND c.column_id = ic.column_id
654
664
  WHERE
655
- o.name = #{object_name}
665
+ o.Object_ID = Object_ID(#{object_id_arg})
656
666
  AND s.name = #{schema_name}
657
667
  ORDER BY
658
668
  c.column_id
@@ -674,7 +684,7 @@ module ActiveRecord
674
684
  end
675
685
 
676
686
  def remove_default_constraint(table_name, column_name)
677
- # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
687
+ # If there are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
678
688
  execute_procedure(:sp_helpconstraint, table_name, "nomsg").flatten.select do |row|
679
689
  row["constraint_type"] == "DEFAULT on column #{column_name}"
680
690
  end.each do |row|
@@ -81,6 +81,10 @@ module ActiveRecord
81
81
  parts.hash
82
82
  end
83
83
 
84
+ def temporary_table?
85
+ object.start_with?("#")
86
+ end
87
+
84
88
  protected
85
89
 
86
90
  def parse_raw_name
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper_sqlserver"
4
+
5
+ class TemporaryTableSQLServer < ActiveRecord::TestCase
6
+ def test_insert_into_temporary_table
7
+ ActiveRecord::Base.with_connection do |conn|
8
+ conn.exec_query("CREATE TABLE #temp_users (id INT IDENTITY(1,1), name NVARCHAR(100))")
9
+
10
+ result = conn.exec_query("SELECT * FROM #temp_users")
11
+ assert_equal 0, result.count
12
+
13
+ conn.exec_query("INSERT INTO #temp_users (name) VALUES ('John'), ('Doe')")
14
+
15
+ result = conn.exec_query("SELECT * FROM #temp_users")
16
+ assert_equal 2, result.count
17
+ end
18
+ end
19
+ 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.3
4
+ version: 8.0.4
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: 2025-03-03 00:00:00.000000000 Z
18
+ date: 2025-03-10 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activerecord
@@ -176,6 +176,7 @@ files:
176
176
  - test/cases/schema_test_sqlserver.rb
177
177
  - test/cases/showplan_test_sqlserver.rb
178
178
  - test/cases/specific_schema_test_sqlserver.rb
179
+ - test/cases/temporary_table_test_sqlserver.rb
179
180
  - test/cases/transaction_test_sqlserver.rb
180
181
  - test/cases/trigger_test_sqlserver.rb
181
182
  - test/cases/utils_test_sqlserver.rb
@@ -238,8 +239,8 @@ licenses:
238
239
  - MIT
239
240
  metadata:
240
241
  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.3/CHANGELOG.md
242
- source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v8.0.3
242
+ changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v8.0.4/CHANGELOG.md
243
+ source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v8.0.4
243
244
  post_install_message:
244
245
  rdoc_options: []
245
246
  require_paths:
@@ -294,6 +295,7 @@ test_files:
294
295
  - test/cases/schema_test_sqlserver.rb
295
296
  - test/cases/showplan_test_sqlserver.rb
296
297
  - test/cases/specific_schema_test_sqlserver.rb
298
+ - test/cases/temporary_table_test_sqlserver.rb
297
299
  - test/cases/transaction_test_sqlserver.rb
298
300
  - test/cases/trigger_test_sqlserver.rb
299
301
  - test/cases/utils_test_sqlserver.rb