activerecord-sqlserver-adapter 5.0.1 → 5.0.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
  SHA1:
3
- metadata.gz: b31a0ea33247aafc00f6d836c4de3a1c76dca176
4
- data.tar.gz: a66c59a131675c4cf381717e00e5211c4263fe7b
3
+ metadata.gz: 7b2b6f7f8589a69b587c63d0de5713b527e2389f
4
+ data.tar.gz: 738c33f3937b47b7e87b54bf6436fcc81d3dbd4f
5
5
  SHA512:
6
- metadata.gz: b6a8fc99daef2bbd923eb5aa7ccee8f1dcdab3dcd4b3edbda58242201ae93a4cd5bf453996a568a8af847c0f72ec230df0b06185bdc70eeb4981c184656e7bb7
7
- data.tar.gz: 3a68c7e45dd613fc89901d61cf1ab82cd3cc02cda3f93d2f37f95ff52d3f9ea8aed0d2dad61faf552996c5355fc53a457b020f55b277f4a0f2e096eb55a83701
6
+ metadata.gz: 65a7995a536eb3eedf3a771aff7c0645538189f131add85db6c585e43c03547ed64158009e53183310f05c8c9a5c40e8158baa79758f6bfcb0e5d7b680c472c5
7
+ data.tar.gz: 69eae26ecb4a8ccb7cc61e8b689e579ecae2046692de4fefe9978f2e36c4e1731231aec33b580545a521245041f3af9b9f833ec2ee9160874acbe723e1421019
data/.travis.yml CHANGED
@@ -10,6 +10,7 @@ env:
10
10
  rvm:
11
11
  - 2.2.5
12
12
  - 2.3.1
13
+ - 2.4.0
13
14
  before_install:
14
15
  - export PATH=/opt/local/bin:$PATH
15
16
  - docker info
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## v5.0.3
2
+
3
+ #### Changed
4
+
5
+ * Reduce view information reflection to per table vs. column. Fixes #552
6
+ * The `user_options` parsing. Works for hash/array. Fixes #535
7
+ * Pass the `:contained` option to TinyTDS. Fixes #527
8
+
9
+
10
+ ## v5.0.2
11
+
12
+ #### Fixed
13
+
14
+ * Filter table constraints with matching table schema to column. Fixes #478
15
+
16
+
1
17
  ## v5.0.1
2
18
 
3
19
  #### Changed
data/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  * [![CircleCI](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master.svg?style=svg)](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master) - CircleCI
6
6
  * [![Build Status](https://ci.appveyor.com/api/projects/status/mtgbx8f57vr7k2qa/branch/master?svg=true)](https://ci.appveyor.com/project/rails-sqlserver/activerecord-sqlserver-adapter/branch/master) - Appveyor
7
7
  * [![Gem Version](http://img.shields.io/gem/v/activerecord-sqlserver-adapter.svg)](https://rubygems.org/gems/activerecord-sqlserver-adapter) - Gem Version
8
+ * [![Dependency Status](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter/badge)](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter) - Dependency Status
8
9
  * [![Gitter chat](https://img.shields.io/badge/%E2%8A%AA%20GITTER%20-JOIN%20CHAT%20%E2%86%92-brightgreen.svg?style=flat)](https://gitter.im/rails-sqlserver/activerecord-sqlserver-adapter) - Community
9
10
 
10
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.0.1
1
+ 5.0.3
data/circle.yml CHANGED
@@ -20,6 +20,7 @@ dependencies:
20
20
  - tsql -C
21
21
  - rvm-exec 2.2.5 bundle install
22
22
  - rvm-exec 2.3.1 bundle install
23
+ - rvm-exec 2.4.0 bundle install
23
24
 
24
25
  database:
25
26
  override:
@@ -32,3 +33,4 @@ test:
32
33
  override:
33
34
  - rvm-exec 2.2.5 bundle exec rake test
34
35
  - rvm-exec 2.3.1 bundle exec rake test
36
+ - rvm-exec 2.4.0 bundle exec rake test
@@ -132,7 +132,9 @@ module ActiveRecord
132
132
 
133
133
  def user_options
134
134
  return {} if sqlserver_azure?
135
- select_rows('dbcc useroptions', 'SCHEMA').reduce(HashWithIndifferentAccess.new) do |values, row|
135
+ rows = select_rows('dbcc useroptions', 'SCHEMA')
136
+ rows = rows.first if rows.size == 2 && rows.last.empty?
137
+ rows.reduce(HashWithIndifferentAccess.new) do |values, row|
136
138
  if row.instance_of? Hash
137
139
  set_option = row.values[0].gsub(/\s+/, '_')
138
140
  user_value = row.values[1]
@@ -326,6 +326,7 @@ module ActiveRecord
326
326
  FROM #{database}.INFORMATION_SCHEMA.COLUMNS columns
327
327
  LEFT OUTER JOIN #{database}.INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
328
328
  ON TC.TABLE_NAME = columns.TABLE_NAME
329
+ AND TC.TABLE_SCHEMA = columns.TABLE_SCHEMA
329
330
  AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY'
330
331
  LEFT OUTER JOIN #{database}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
331
332
  ON KCU.COLUMN_NAME = columns.COLUMN_NAME
@@ -469,20 +470,23 @@ module ActiveRecord
469
470
  end
470
471
 
471
472
  def view_information(table_name)
472
- identifier = SQLServer::Utils.extract_identifiers(table_name)
473
- view_info = select_one "SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = '#{identifier.object}'", 'SCHEMA'
474
- if view_info
475
- view_info = view_info.with_indifferent_access
476
- if view_info[:VIEW_DEFINITION].blank? || view_info[:VIEW_DEFINITION].length == 4000
477
- view_info[:VIEW_DEFINITION] = begin
478
- select_values("EXEC sp_helptext #{identifier.object_quoted}", 'SCHEMA').join
479
- rescue
480
- warn "No view definition found, possible permissions problem.\nPlease run GRANT VIEW DEFINITION TO your_user;"
481
- nil
473
+ @view_information ||= {}
474
+ @view_information[table_name] ||= begin
475
+ identifier = SQLServer::Utils.extract_identifiers(table_name)
476
+ view_info = select_one "SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = '#{identifier.object}'", 'SCHEMA'
477
+ if view_info
478
+ view_info = view_info.with_indifferent_access
479
+ if view_info[:VIEW_DEFINITION].blank? || view_info[:VIEW_DEFINITION].length == 4000
480
+ view_info[:VIEW_DEFINITION] = begin
481
+ select_values("EXEC sp_helptext #{identifier.object_quoted}", 'SCHEMA').join
482
+ rescue
483
+ warn "No view definition found, possible permissions problem.\nPlease run GRANT VIEW DEFINITION TO your_user;"
484
+ nil
485
+ end
482
486
  end
483
487
  end
488
+ view_info
484
489
  end
485
- view_info
486
490
  end
487
491
 
488
492
  def views_real_column_name(table_name, column_name)
@@ -176,11 +176,12 @@ module ActiveRecord
176
176
  @connection.close rescue nil
177
177
  end
178
178
  @connection = nil
179
+ @spid = nil
180
+ @collation = nil
179
181
  end
180
182
 
181
183
  def clear_cache!
182
- @spid = nil
183
- @collation = nil
184
+ @view_information = nil
184
185
  super
185
186
  end
186
187
 
@@ -362,7 +363,8 @@ module ActiveRecord
362
363
  login_timeout: config_login_timeout(config),
363
364
  timeout: config_timeout(config),
364
365
  encoding: config_encoding(config),
365
- azure: config[:azure]
366
+ azure: config[:azure],
367
+ contained: config[:contained]
366
368
  ).tap do |client|
367
369
  if config[:azure]
368
370
  client.execute('SET ANSI_NULLS ON').do
data/test/bin/setup.sh CHANGED
@@ -3,15 +3,17 @@
3
3
  set -x
4
4
  set -e
5
5
 
6
- docker pull metaskills/mssql-server-linux-rails
6
+ tag=1.2
7
7
 
8
- container=$(docker ps -a -q --filter ancestor=metaskills/mssql-server-linux-rails)
8
+ docker pull metaskills/mssql-server-linux-rails:$tag
9
+
10
+ container=$(docker ps -a -q --filter ancestor=metaskills/mssql-server-linux-rails:$tag)
9
11
  if [[ -z $container ]]; then
10
- docker run -p 1433:1433 -d metaskills/mssql-server-linux-rails && sleep 10
12
+ docker run -p 1433:1433 -d metaskills/mssql-server-linux-rails:$tag && sleep 10
11
13
  exit
12
14
  fi
13
15
 
14
- container=$(docker ps -q --filter ancestor=metaskills/mssql-server-linux-rails)
16
+ container=$(docker ps -q --filter ancestor=metaskills/mssql-server-linux-rails:$tag)
15
17
  if [[ -z $container ]]; then
16
18
  docker start $container && sleep 10
17
19
  fi
@@ -165,4 +165,12 @@ class SpecificSchemaTestSQLServer < ActiveRecord::TestCase
165
165
  db_uuid.must_match(acceptable_uuid)
166
166
  end
167
167
 
168
+ # with similar table definition in two schemas
169
+
170
+ it 'returns the correct primary columns' do
171
+ connection = ActiveRecord::Base.connection
172
+ assert_equal 'field_1', connection.columns('test.sst_schema_test_mulitple_schema').detect(&:is_primary?).name
173
+ assert_equal 'field_2', connection.columns('test2.sst_schema_test_mulitple_schema').detect(&:is_primary?).name
174
+ end
175
+
168
176
  end
@@ -204,4 +204,20 @@ ActiveRecord::Schema.define do
204
204
  )
205
205
  NATURALPKTABLESQLINOTHERSCHEMA
206
206
 
207
+ execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_schema_test_mulitple_schema' and TABLE_SCHEMA = 'test') DROP TABLE test.sst_schema_test_mulitple_schema"
208
+ execute <<-SCHEMATESTMULTIPLESCHEMA
209
+ CREATE TABLE test.sst_schema_test_mulitple_schema(
210
+ field_1 int NOT NULL PRIMARY KEY,
211
+ field_2 int,
212
+ )
213
+ SCHEMATESTMULTIPLESCHEMA
214
+ execute "IF NOT EXISTS(SELECT * FROM sys.schemas WHERE name = 'test2') EXEC sp_executesql N'CREATE SCHEMA test2'"
215
+ execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sst_schema_test_mulitple_schema' and TABLE_SCHEMA = 'test2') DROP TABLE test2.sst_schema_test_mulitple_schema"
216
+ execute <<-SCHEMATESTMULTIPLESCHEMA
217
+ CREATE TABLE test2.sst_schema_test_mulitple_schema(
218
+ field_1 int,
219
+ field_2 int NOT NULL PRIMARY KEY,
220
+ )
221
+ SCHEMATESTMULTIPLESCHEMA
222
+
207
223
  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: 5.0.1
4
+ version: 5.0.3
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: 2017-01-17 00:00:00.000000000 Z
17
+ date: 2017-02-02 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activerecord