activerecord-sqlserver-adapter 6.1.1.0 → 6.1.2.0

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: f481c462cbdd16314d87172f78c7a63f63f4c4f7f81df1ca84f110adcb3b6da8
4
- data.tar.gz: cc79ad659b39244a0df7c37774922f22a537adf736adc9ba6344cdac6643c686
3
+ metadata.gz: cc687a6f9cd86f8c1f7b62356b266e84b47833c9abc25d6a339e387122ccbe4b
4
+ data.tar.gz: 7b1cf7d3f5caa773943a722da4f39fe69435dbd03ce451c540e855f87642e640
5
5
  SHA512:
6
- metadata.gz: f0b3f273dfa36cc20e15d52384d8ba8d145f23c5816e7592b5c96324314a5204ea7d76879f6e27bd028cccf1be0411e0f7cbc60009f22b34831ff9383776b252
7
- data.tar.gz: 6f34b2de7d27af451a8376501a46c65780ab960710632dceb939a4dbb39ac3a7754f48cf84da58e4f15064570d07792f8b779dde036720df74d483c462a7a5ed
6
+ metadata.gz: cfa048c171f318b7b4e46662b305e04a87e923c42cd1729f5d62bcd6c3e4e8cbbdacec56b767f537becb51c64d162cf556b1b9f69637732b346c37c823833393
7
+ data.tar.gz: e4da6b9fa4c35f21afba43390d790097481dbe321c5c808d3be586eaec745d98e9af8ac10b394990266e733661f65081b12e10b958a64e457609910de4379205
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## v6.1.2.0
2
+
3
+ [Full changelog](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/compare/v6.1.1.0...v6.1.2.0)
4
+
5
+ #### Fixed
6
+
7
+ - [#940](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/940) Primary key violation should result in RecordNotUnique error
8
+
9
+ #### Changed
10
+
11
+ - [#941](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/941) No longer support configuring the application name by overriding the 'configure_application_name' method.
12
+
1
13
  ## v6.1.1.0
2
14
 
3
15
  [Full changelog](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/compare/v6.1.0.0...v6.1.1.0)
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
- | `6.1.1.0` | `6.1.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
16
+ | `6.1.2.0` | `6.1.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/main) |
17
17
  | `6.0.2` | `6.0.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/6-0-stable) |
18
18
  | `5.2.1` | `5.2.x` | [active](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-2-stable) |
19
19
  | `5.1.6` | `5.1.x` | [ended](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/5-1-stable) |
@@ -82,34 +82,40 @@ end
82
82
  ```
83
83
 
84
84
 
85
- #### Configure Connection & App Name
85
+ #### Configure Connection
86
86
 
87
- We currently conform to an unpublished and non-standard AbstractAdapter interface to configure connections made to the database. To do so, just override the `configure_connection` method in an initializer like so. In this case below we are setting the `TEXTSIZE` to 64 megabytes. Also, TinyTDS supports an application name when it logs into SQL Server. This can be used to identify the connection in SQL Server's activity monitor. By default it will use the `appname` from your database.yml file or a lowercased version of your Rails::Application name. It is now possible to define a `configure_application_name` method that can give you per instance details. Below shows how you might use this to get the process id and thread id of the current connection.
87
+ We currently conform to an unpublished and non-standard AbstractAdapter interface to configure connections made to the database. To do so, just override the `configure_connection` method in an initializer like so. In this case below we are setting the `TEXTSIZE` to 64 megabytes.
88
88
 
89
89
  ```ruby
90
90
  module ActiveRecord
91
91
  module ConnectionAdapters
92
92
  class SQLServerAdapter < AbstractAdapter
93
-
94
93
  def configure_connection
95
94
  raw_connection_do "SET TEXTSIZE #{64.megabytes}"
96
95
  end
97
-
98
- def configure_application_name
99
- "myapp_#{$$}_#{Thread.current.object_id}".to(29)
100
- end
101
-
102
96
  end
103
97
  end
104
98
  end
105
99
  ```
106
100
 
101
+ #### Configure Application Name
102
+
103
+ TinyTDS supports an application name when it logs into SQL Server. This can be used to identify the connection in SQL Server's activity monitor. By default it will use the `appname` from your database.yml file or your Rails::Application name.
104
+
105
+ Below shows how you might use the database.yml file to use the process ID in your application name.
106
+
107
+ ```yaml
108
+ development:
109
+ adapter: sqlserver
110
+ appname: <%= myapp_#{Process.pid} %>
111
+ ```
112
+
107
113
  #### Executing Stored Procedures
108
114
 
109
115
  Every class that sub classes ActiveRecord::Base will now have an execute_procedure class method to use. This method takes the name of the stored procedure which can be a string or symbol and any number of variables to pass to the procedure. Arguments will automatically be quoted per the connection's standards as normal. For example:
110
116
 
111
117
  ```ruby
112
- Account.execute_procedure(:update_totals, 'admin', nil, true
118
+ Account.execute_procedure(:update_totals, 'admin', nil, true)
113
119
  # Or with named parameters.
114
120
  Account.execute_procedure(:update_totals, named: 'params')
115
121
  ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.1.1.0
1
+ 6.1.2.0
@@ -105,7 +105,23 @@ module ActiveRecord
105
105
  end
106
106
 
107
107
  def config_appname(config)
108
- config[:appname] || configure_application_name || Rails.application.class.name.split("::").first rescue nil
108
+ if self.instance_methods.include?(:configure_application_name)
109
+ ActiveSupport::Deprecation.warn <<~MSG.squish
110
+ Configuring the application name used by TinyTDS by overriding the
111
+ `ActiveRecord::ConnectionAdapters::SQLServerAdapter#configure_application_name`
112
+ instance method is no longer supported. The application name should configured
113
+ using the `appname` setting in the `database.yml` file instead. Consult the
114
+ README for further information."
115
+ MSG
116
+ end
117
+
118
+ config[:appname] || rails_application_name
119
+ end
120
+
121
+ def rails_application_name
122
+ return nil if Rails.application.nil?
123
+
124
+ Rails.application.class.name.split("::").first
109
125
  end
110
126
 
111
127
  def config_login_timeout(config)
@@ -444,7 +460,7 @@ module ActiveRecord
444
460
  case message
445
461
  when /(SQL Server client is not connected)|(failed to execute statement)/i
446
462
  ConnectionNotEstablished.new(message)
447
- when /(cannot insert duplicate key .* with unique index) | (violation of unique key constraint)/i
463
+ when /(cannot insert duplicate key .* with unique index) | (violation of (unique|primary) key constraint)/i
448
464
  RecordNotUnique.new(message, sql: sql, binds: binds)
449
465
  when /(conflicted with the foreign key constraint) | (The DELETE statement conflicted with the REFERENCE constraint)/i
450
466
  InvalidForeignKey.new(message, sql: sql, binds: binds)
@@ -483,8 +499,6 @@ module ActiveRecord
483
499
  end
484
500
  end
485
501
 
486
- def configure_application_name; end
487
-
488
502
  def initialize_dateformatter
489
503
  @database_dateformat = user_options_dateformat
490
504
  a, b, c = @database_dateformat.each_char.to_a
@@ -120,6 +120,14 @@ class AdapterTestSQLServer < ActiveRecord::TestCase
120
120
  "expected database #{db_config.database} to exist"
121
121
  end
122
122
 
123
+ it "test primary key violation" do
124
+ Post.create!(id: 0, title: 'Setup', body: 'Create post with primary key of zero')
125
+
126
+ assert_raise ActiveRecord::RecordNotUnique do
127
+ Post.create!(id: 0, title: 'Test', body: 'Try to create another post with primary key of zero')
128
+ end
129
+ end
130
+
123
131
  describe "with different language" do
124
132
  before do
125
133
  @default_language = connection.user_options_language
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: 6.1.1.0
4
+ version: 6.1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2021-08-11 00:00:00.000000000 Z
17
+ date: 2021-09-06 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activerecord
@@ -224,8 +224,8 @@ licenses:
224
224
  - MIT
225
225
  metadata:
226
226
  bug_tracker_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues
227
- changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v6.1.1.0/CHANGELOG.md
228
- source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v6.1.1.0
227
+ changelog_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v6.1.2.0/CHANGELOG.md
228
+ source_code_uri: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/tree/v6.1.2.0
229
229
  post_install_message:
230
230
  rdoc_options: []
231
231
  require_paths: