activerecord-sqlserver-adapter 7.0.4.0 → 7.0.5.1

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: 41b4642838dbc7178a170c4b002937e5481bf0c7154446d43cff2dae7800a938
4
- data.tar.gz: fa20040c55e79a8417ec58c414b5ad6617acaa2fe808c5b48fc44c6e3187c5d7
3
+ metadata.gz: 02401b4f2142fc0cdebfd2308b94647ab6dc927c77542d4125dae6b6184e7e1c
4
+ data.tar.gz: c4d0d77af6f8344846387c14b1b84977b5af321bc7b2e9cf208bdab59179363d
5
5
  SHA512:
6
- metadata.gz: b7786aeaaf3f90af8a69208e76901c1263e20ef1c4f410948319108531e128ff2d5247838efb10cbcda0fe6b035d1b130576647824e027a668b0fc3df1988305
7
- data.tar.gz: 3d9db5b28f4b8b8468b71049b14b7000e25c7aa7afcac55f6fec0ec234f0e4cdf76c4158069328da464ad0a718f45ee9b45b2b6f19f00fc058b7d4ab87071308
6
+ metadata.gz: e37d3daf2d7a509ef38eb45218fc3db5d4c60938ac2b8687a7f53a5e516df6fa3fa29dea71914d469336ebb8a7020921f5b479917afe78654d05048b51dd3911
7
+ data.tar.gz: 91a4c0bb6729b16736885cc7b2a89e7a80abbb11580bc02b31bb83dc4c3e2b72eb2e10815ae85af7e5a28f9990a8e7bea102345d146fa8323593605a32ec2bda
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## v7.0.5.1
2
+
3
+ #### Fixed
4
+
5
+ - [#1133](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1133) Fix matching view's real column name
6
+
7
+ ## v7.0.5.0
8
+
9
+ #### Fixed
10
+
11
+ - [#1113](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1113) Fix issue with default view value not being found because of case sensitivity
12
+ - [#1126](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1113) Fix view issue with default column value not found
13
+
1
14
  ## v7.0.4.0
2
15
 
3
16
  #### 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 |
15
15
  |-----------------| ------------- | ------------------------------------------------------------------------------------------- |
16
- | `7.0.4.0` | `7.0.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
16
+ | `7.0.5.1` | `7.0.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
17
17
  | `6.1.2.1` | `6.1.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-1-stable) |
18
18
  | `6.0.3` | `6.0.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-0-stable) |
19
19
  | `5.2.1` | `5.2.x` | [ended](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-2-stable) |
data/VERSION CHANGED
@@ -1 +1 @@
1
- 7.0.4.0
1
+ 7.0.5.1
@@ -388,7 +388,7 @@ module ActiveRecord
388
388
 
389
389
  if view_exists
390
390
  results = sp_executesql %{
391
- SELECT c.COLUMN_NAME AS [name], c.COLUMN_DEFAULT AS [default]
391
+ SELECT LOWER(c.COLUMN_NAME) AS [name], c.COLUMN_DEFAULT AS [default]
392
392
  FROM #{database}.INFORMATION_SCHEMA.COLUMNS c
393
393
  WHERE c.TABLE_NAME = #{quote(view_tblnm)}
394
394
  }.squish, "SCHEMA", []
@@ -426,7 +426,7 @@ module ActiveRecord
426
426
  ci[:default_function] = begin
427
427
  default = ci[:default_value]
428
428
  if default.nil? && view_exists
429
- view_column = views_real_column_name(table_name, ci[:name])
429
+ view_column = views_real_column_name(table_name, ci[:name]).downcase
430
430
  default = default_functions[view_column] if view_column.present?
431
431
  end
432
432
  case default
@@ -601,17 +601,19 @@ module ActiveRecord
601
601
  identifier = SQLServer::Utils.extract_identifiers(table_name)
602
602
  information_query_table = identifier.database.present? ? "[#{identifier.database}].[INFORMATION_SCHEMA].[VIEWS]" : "[INFORMATION_SCHEMA].[VIEWS]"
603
603
  view_info = select_one "SELECT * FROM #{information_query_table} WITH (NOLOCK) WHERE TABLE_NAME = #{quote(identifier.object)}", "SCHEMA"
604
+
604
605
  if view_info
605
606
  view_info = view_info.with_indifferent_access
606
607
  if view_info[:VIEW_DEFINITION].blank? || view_info[:VIEW_DEFINITION].length == 4000
607
608
  view_info[:VIEW_DEFINITION] = begin
608
- select_values("EXEC sp_helptext #{identifier.object_quoted}", "SCHEMA").join
609
+ select_values("EXEC sp_helptext #{identifier.object_quoted}", "SCHEMA").join
609
610
  rescue
610
611
  warn "No view definition found, possible permissions problem.\nPlease run GRANT VIEW DEFINITION TO your_user;"
611
612
  nil
612
- end
613
+ end
613
614
  end
614
615
  end
616
+
615
617
  view_info
616
618
  end
617
619
  end
@@ -620,7 +622,8 @@ module ActiveRecord
620
622
  view_definition = view_information(table_name)[:VIEW_DEFINITION]
621
623
  return column_name unless view_definition
622
624
 
623
- match_data = view_definition.match(/([\w-]*)\s+as\s+#{column_name}/im)
625
+ # Remove "CREATE VIEW ... AS SELECT ..." and then match the column name.
626
+ match_data = view_definition.sub(/CREATE\s+VIEW.*AS\s+SELECT\s/, '').match(/([\w-]*)\s+AS\s+#{column_name}\W/im)
624
627
  match_data ? match_data[1] : column_name
625
628
  end
626
629
 
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper_sqlserver"
4
+
5
+ class ViewTestSQLServer < ActiveRecord::TestCase
6
+ let(:connection) { ActiveRecord::Base.connection }
7
+
8
+ describe 'view with default values' do
9
+ before do
10
+ connection.drop_table :view_casing_table rescue nil
11
+ connection.create_table :view_casing_table, force: true do |t|
12
+ t.boolean :Default_Falsey, null: false, default: false
13
+ t.boolean :Default_Truthy, null: false, default: true
14
+ t.string :default_string_null, null: true, default: nil
15
+ t.string :default_string, null: false, default: "abc"
16
+ end
17
+
18
+ connection.execute("DROP VIEW IF EXISTS view_casing_table_view;")
19
+ connection.execute <<-SQL
20
+ CREATE VIEW view_casing_table_view AS
21
+ SELECT id AS id,
22
+ default_falsey AS falsey,
23
+ default_truthy AS truthy,
24
+ default_string_null AS s_null,
25
+ default_string AS s
26
+ FROM view_casing_table
27
+ SQL
28
+ end
29
+
30
+ it "default values are correct when column casing used in tables and views are different" do
31
+ klass = Class.new(ActiveRecord::Base) do
32
+ self.table_name = "view_casing_table_view"
33
+ end
34
+
35
+ obj = klass.new
36
+ assert_equal false, obj.falsey
37
+ assert_equal true, obj.truthy
38
+ assert_equal "abc", obj.s
39
+ assert_nil obj.s_null
40
+ assert_equal 0, klass.count
41
+
42
+ obj.save!
43
+ assert_equal false, obj.falsey
44
+ assert_equal true, obj.truthy
45
+ assert_equal "abc", obj.s
46
+ assert_nil obj.s_null
47
+ assert_equal 1, klass.count
48
+ end
49
+ end
50
+ 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: 7.0.4.0
4
+ version: 7.0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -12,10 +12,10 @@ authors:
12
12
  - Joe Rafaniello
13
13
  - Tom Ward
14
14
  - Aidan Haran
15
- autorequire:
15
+ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2023-09-19 00:00:00.000000000 Z
18
+ date: 2023-11-08 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activerecord
@@ -177,6 +177,7 @@ files:
177
177
  - test/cases/trigger_test_sqlserver.rb
178
178
  - test/cases/utils_test_sqlserver.rb
179
179
  - test/cases/uuid_test_sqlserver.rb
180
+ - test/cases/view_test_sqlserver.rb
180
181
  - test/config.yml
181
182
  - test/debug.rb
182
183
  - test/fixtures/1px.gif
@@ -230,9 +231,9 @@ licenses:
230
231
  - MIT
231
232
  metadata:
232
233
  bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
233
- changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7.0.4.0/CHANGELOG.md
234
- source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.0.4.0
235
- post_install_message:
234
+ changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v7.0.5.1/CHANGELOG.md
235
+ source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v7.0.5.1
236
+ post_install_message:
236
237
  rdoc_options: []
237
238
  require_paths:
238
239
  - lib
@@ -247,8 +248,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
248
  - !ruby/object:Gem::Version
248
249
  version: '0'
249
250
  requirements: []
250
- rubygems_version: 3.4.10
251
- signing_key:
251
+ rubygems_version: 3.4.7
252
+ signing_key:
252
253
  specification_version: 4
253
254
  summary: ActiveRecord SQL Server Adapter.
254
255
  test_files:
@@ -291,6 +292,7 @@ test_files:
291
292
  - test/cases/trigger_test_sqlserver.rb
292
293
  - test/cases/utils_test_sqlserver.rb
293
294
  - test/cases/uuid_test_sqlserver.rb
295
+ - test/cases/view_test_sqlserver.rb
294
296
  - test/config.yml
295
297
  - test/debug.rb
296
298
  - test/fixtures/1px.gif