activerecord-sqlserver-adapter 8.0.2 → 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 +4 -4
- data/CHANGELOG.md +12 -0
- data/VERSION +1 -1
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +2 -1
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +18 -8
- data/lib/active_record/connection_adapters/sqlserver/utils.rb +4 -0
- data/test/cases/adapter_test_sqlserver.rb +19 -0
- data/test/cases/temporary_table_test_sqlserver.rb +19 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4eb3a0a586688c3993353fb977268ed3440893c15277decb16cfa76ea6704f1f
|
4
|
+
data.tar.gz: b439d90171035e52adcfe1a03b40ab55a228fd0e6d6fc272b8bde37104a8fc64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7dde4f70fbd4c665701f5765acfd194a2f60c3cf540ed966d43c264fffc747c7e14a1d61674eae17648fec758d20090b47bb5086f49d8046a7ebd2494b355cd
|
7
|
+
data.tar.gz: 9c85aa63eedd0a1dd1387336cac08fbaf4596c4b0aeed7309af5b92183690f8a3d4803917f234258ceb3b8245e9edc5da0866c474c08031eb50149a028c2f53c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
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
|
+
|
7
|
+
## v8.0.3
|
8
|
+
|
9
|
+
#### Fixed
|
10
|
+
|
11
|
+
- [#1306](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1306) Fix affected rows count when lowercase schema reflection enabled
|
12
|
+
|
1
13
|
## v8.0.2
|
2
14
|
|
3
15
|
#### Fixed
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
8.0.
|
1
|
+
8.0.4
|
@@ -39,7 +39,8 @@ module ActiveRecord
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def affected_rows(raw_result)
|
42
|
-
|
42
|
+
column_name = lowercase_schema_reflection ? 'affectedrows' : 'AffectedRows'
|
43
|
+
raw_result.first[column_name]
|
43
44
|
end
|
44
45
|
|
45
46
|
def raw_execute(sql, name = nil, binds = [], prepare: false, async: false, allow_retry: false, materialize_transactions: true, batch: false)
|
@@ -592,12 +592,22 @@ module ActiveRecord
|
|
592
592
|
end
|
593
593
|
|
594
594
|
def column_definitions_sql(database, identifier)
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
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.
|
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
|
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|
|
@@ -7,6 +7,7 @@ require "models/post"
|
|
7
7
|
require "models/subscriber"
|
8
8
|
require "models/minimalistic"
|
9
9
|
require "models/college"
|
10
|
+
require "models/discount"
|
10
11
|
|
11
12
|
class AdapterTestSQLServer < ActiveRecord::TestCase
|
12
13
|
fixtures :tasks
|
@@ -183,6 +184,24 @@ class AdapterTestSQLServer < ActiveRecord::TestCase
|
|
183
184
|
assert_equal "Favorite number?", SSTestUppered.last.column1
|
184
185
|
assert SSTestUppered.columns_hash["column2"]
|
185
186
|
end
|
187
|
+
|
188
|
+
it "destroys model with no associations" do
|
189
|
+
connection.lowercase_schema_reflection = true
|
190
|
+
|
191
|
+
assert_nothing_raised do
|
192
|
+
discount = Discount.create!
|
193
|
+
discount.destroy!
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
it "destroys model with association" do
|
198
|
+
connection.lowercase_schema_reflection = true
|
199
|
+
|
200
|
+
assert_nothing_raised do
|
201
|
+
post = Post.create!(title: 'Setup', body: 'Record to be deleted')
|
202
|
+
post.destroy!
|
203
|
+
end
|
204
|
+
end
|
186
205
|
end
|
187
206
|
|
188
207
|
describe "identity inserts" do
|
@@ -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.
|
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-
|
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.
|
242
|
-
source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v8.0.
|
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
|