tiny_tds 2.1.3.pre → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +0 -0
  3. data/.gitattributes +0 -0
  4. data/.gitignore +0 -0
  5. data/.rubocop.yml +0 -0
  6. data/.travis.yml +1 -1
  7. data/CHANGELOG.md +12 -1
  8. data/CODE_OF_CONDUCT.md +0 -0
  9. data/Gemfile +0 -0
  10. data/ISSUE_TEMPLATE.md +0 -0
  11. data/MIT-LICENSE +0 -0
  12. data/README.md +13 -7
  13. data/Rakefile +0 -0
  14. data/VERSION +1 -1
  15. data/appveyor.yml +15 -1
  16. data/docker-compose.yml +22 -0
  17. data/ext/tiny_tds/client.c +90 -44
  18. data/ext/tiny_tds/client.h +5 -3
  19. data/ext/tiny_tds/extconf.rb +0 -0
  20. data/ext/tiny_tds/extconsts.rb +1 -1
  21. data/ext/tiny_tds/result.c +24 -10
  22. data/ext/tiny_tds/result.h +0 -0
  23. data/ext/tiny_tds/tiny_tds_ext.c +0 -0
  24. data/ext/tiny_tds/tiny_tds_ext.h +0 -0
  25. data/lib/tiny_tds.rb +0 -0
  26. data/lib/tiny_tds/bin.rb +0 -0
  27. data/lib/tiny_tds/client.rb +0 -0
  28. data/lib/tiny_tds/error.rb +0 -0
  29. data/lib/tiny_tds/gem.rb +0 -0
  30. data/lib/tiny_tds/result.rb +0 -0
  31. data/lib/tiny_tds/version.rb +0 -0
  32. data/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff +0 -0
  33. data/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff +0 -0
  34. data/patches/libiconv/1.14/1-avoid-gets-error.patch +0 -0
  35. data/tasks/native_gem.rake +0 -0
  36. data/tasks/package.rake +0 -0
  37. data/tasks/ports.rake +0 -0
  38. data/tasks/ports/freetds.rb +0 -0
  39. data/tasks/ports/libiconv.rb +0 -0
  40. data/tasks/ports/openssl.rb +0 -0
  41. data/tasks/ports/recipe.rb +0 -0
  42. data/tasks/test.rake +0 -0
  43. data/test/appveyor/dbsetup.ps1 +0 -0
  44. data/test/appveyor/dbsetup.sql +0 -0
  45. data/test/benchmark/query.rb +0 -0
  46. data/test/benchmark/query_odbc.rb +0 -0
  47. data/test/benchmark/query_tinytds.rb +0 -0
  48. data/test/client_test.rb +99 -54
  49. data/test/gem_test.rb +15 -15
  50. data/test/result_test.rb +83 -42
  51. data/test/schema/sqlserver_2000.sql +0 -0
  52. data/test/schema/sqlserver_2005.sql +0 -0
  53. data/test/schema/sqlserver_2008.sql +0 -0
  54. data/test/schema/sqlserver_2014.sql +0 -0
  55. data/test/schema/sqlserver_2016.sql +0 -0
  56. data/test/schema/sqlserver_azure.sql +0 -0
  57. data/test/schema/sybase_ase.sql +0 -0
  58. data/test/schema_test.rb +12 -12
  59. data/test/test_helper.rb +58 -4
  60. data/test/thread_test.rb +1 -1
  61. data/tiny_tds.gemspec +1 -0
  62. metadata +45 -7
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/test/schema_test.rb CHANGED
@@ -14,7 +14,7 @@ class SchemaTest < TinyTds::TestCase
14
14
  describe 'for shared types' do
15
15
 
16
16
  it 'casts bigint' do
17
- assert_equal -9223372036854775807, find_value(11, :bigint)
17
+ assert_equal (-9223372036854775807), find_value(11, :bigint)
18
18
  assert_equal 9223372036854775806, find_value(12, :bigint)
19
19
  end
20
20
 
@@ -96,7 +96,7 @@ class SchemaTest < TinyTds::TestCase
96
96
  end
97
97
 
98
98
  it 'casts int' do
99
- assert_equal -2147483647, find_value(151, :int)
99
+ assert_equal (-2147483647), find_value(151, :int)
100
100
  assert_equal 2147483646, find_value(152, :int)
101
101
  end
102
102
 
@@ -170,7 +170,7 @@ class SchemaTest < TinyTds::TestCase
170
170
  end
171
171
 
172
172
  it 'casts smallint' do
173
- assert_equal -32767, find_value(241, :smallint)
173
+ assert_equal (-32767), find_value(241, :smallint)
174
174
  assert_equal 32766, find_value(242, :smallint)
175
175
  end
176
176
 
@@ -396,15 +396,15 @@ class SchemaTest < TinyTds::TestCase
396
396
  if @client.tds_73?
397
397
  assertions = lambda {
398
398
  assert_instance_of Time, v
399
- assert_equal 1984, v.year, 'Year'
400
- assert_equal 1, v.month, 'Month'
401
- assert_equal 24, v.day, 'Day'
402
- assert_equal 4, v.hour, 'Hour'
403
- assert_equal 20, v.min, 'Minute'
404
- assert_equal 59, v.sec, 'Second'
405
- assert_equal 123456, v.usec, 'Microseconds'
406
- assert_equal 123456700, v.nsec, 'Nanoseconds'
407
- assert_equal -28800, v.utc_offset, 'Offset'
399
+ assert_equal 1984, v.year, 'Year'
400
+ assert_equal 1, v.month, 'Month'
401
+ assert_equal 24, v.day, 'Day'
402
+ assert_equal 4, v.hour, 'Hour'
403
+ assert_equal 20, v.min, 'Minute'
404
+ assert_equal 59, v.sec, 'Second'
405
+ assert_equal 123456, v.usec, 'Microseconds'
406
+ assert_equal 123456700, v.nsec, 'Nanoseconds'
407
+ assert_equal (-28800), v.utc_offset, 'Offset'
408
408
  }
409
409
  assertions.call
410
410
  v = find_value 84, :datetimeoffset_7, timezone: :local
data/test/test_helper.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require 'bundler' ; Bundler.require :development, :test
3
3
  require 'tiny_tds'
4
4
  require 'minitest/autorun'
5
+ require 'toxiproxy'
5
6
 
6
7
  TINYTDS_SCHEMAS = ['sqlserver_2000', 'sqlserver_2005', 'sqlserver_2008', 'sqlserver_2014', 'sqlserver_azure', 'sybase_ase'].freeze
7
8
 
@@ -93,7 +94,7 @@ module TinyTds
93
94
  end
94
95
 
95
96
  def assert_client_works(client)
96
- client.execute("SELECT 'client_works' as [client_works]").each.must_equal [{'client_works' => 'client_works'}]
97
+ _(client.execute("SELECT 'client_works' as [client_works]").each).must_equal [{'client_works' => 'client_works'}]
97
98
  end
98
99
 
99
100
  def assert_new_connections_work
@@ -153,6 +154,8 @@ module TinyTds
153
154
  loader.execute(drop_sql).do
154
155
  loader.execute(schema_sql).do
155
156
  loader.execute(sp_sql).do
157
+ loader.execute(sp_error_sql).do
158
+ loader.execute(sp_several_prints_sql).do
156
159
  loader.close
157
160
  true
158
161
  end
@@ -167,7 +170,16 @@ module TinyTds
167
170
  ) DROP TABLE datatypes
168
171
  IF EXISTS(
169
172
  SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'tinytds_TestReturnCodes'
170
- ) DROP PROCEDURE tinytds_TestReturnCodes|
173
+ ) DROP PROCEDURE tinytds_TestReturnCodes
174
+ IF EXISTS(
175
+ SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'tinytds_TestPrintWithError'
176
+ ) DROP PROCEDURE tinytds_TestPrintWithError
177
+ IF EXISTS(
178
+ SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'tinytds_TestPrintWithError'
179
+ ) DROP PROCEDURE tinytds_TestPrintWithError
180
+ IF EXISTS(
181
+ SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'tinytds_TestSeveralPrints'
182
+ ) DROP PROCEDURE tinytds_TestSeveralPrints|
171
183
  end
172
184
 
173
185
  def drop_sql_microsoft
@@ -181,7 +193,15 @@ module TinyTds
181
193
  IF EXISTS (
182
194
  SELECT name FROM sysobjects
183
195
  WHERE name = 'tinytds_TestReturnCodes' AND type = 'P'
184
- ) DROP PROCEDURE tinytds_TestReturnCodes|
196
+ ) DROP PROCEDURE tinytds_TestReturnCodes
197
+ IF EXISTS (
198
+ SELECT name FROM sysobjects
199
+ WHERE name = 'tinytds_TestPrintWithError' AND type = 'P'
200
+ ) DROP PROCEDURE tinytds_TestPrintWithError
201
+ IF EXISTS (
202
+ SELECT name FROM sysobjects
203
+ WHERE name = 'tinytds_TestSeveralPrints' AND type = 'P'
204
+ ) DROP PROCEDURE tinytds_TestSeveralPrints|
185
205
  end
186
206
 
187
207
  def sp_sql
@@ -191,6 +211,21 @@ module TinyTds
191
211
  RETURN(420) |
192
212
  end
193
213
 
214
+ def sp_error_sql
215
+ %|CREATE PROCEDURE tinytds_TestPrintWithError
216
+ AS
217
+ PRINT 'hello'
218
+ RAISERROR('Error following print', 16, 1)|
219
+ end
220
+
221
+ def sp_several_prints_sql
222
+ %|CREATE PROCEDURE tinytds_TestSeveralPrints
223
+ AS
224
+ PRINT 'hello 1'
225
+ PRINT 'hello 2'
226
+ PRINT 'hello 3'|
227
+ end
228
+
194
229
  def find_value(id, column, query_options={})
195
230
  query_options[:timezone] ||= :utc
196
231
  sql = "SELECT [#{column}] FROM [datatypes] WHERE [id] = #{id}"
@@ -212,6 +247,25 @@ module TinyTds
212
247
  client.execute("ROLLBACK TRANSACTION").do
213
248
  end
214
249
 
250
+ def init_toxiproxy
251
+ return if ENV['APPVEYOR_BUILD_FOLDER'] # only for CI using docker
252
+
253
+ # In order for toxiproxy to work for local docker instances of mssql, the containers must be on the same network
254
+ # and the host used below must match the mssql container name so toxiproxy knows where to proxy to.
255
+ # localhost from the perspective of toxiproxy's container is its own container an *not* the mssql container it needs to proxy to.
256
+ # docker-compose.yml handles this automatically for us. In instances where someone is using their own local mssql container they'll
257
+ # need to set up the networks manually and set TINYTDS_UNIT_HOST to their mssql container name
258
+ # For anything other than localhost just use the environment config
259
+ env_host = ENV['TINYTDS_UNIT_HOST_TEST'] || ENV['TINYTDS_UNIT_HOST'] || 'localhost'
260
+ host = ['localhost', '127.0.0.1', '0.0.0.0'].include?(env_host) ? 'sqlserver' : env_host
261
+ port = ENV['TINYTDS_UNIT_PORT'] || 1433
262
+ Toxiproxy.populate([
263
+ {
264
+ name: "sqlserver_test",
265
+ listen: "0.0.0.0:1234",
266
+ upstream: "#{host}:#{port}"
267
+ }
268
+ ])
269
+ end
215
270
  end
216
271
  end
217
-
data/test/thread_test.rb CHANGED
@@ -49,7 +49,7 @@ class ThreadTest < TinyTds::TestCase
49
49
  begin
50
50
  result = client.execute "select dbname()"
51
51
  result.each { |r| puts r }
52
- rescue Exception => e
52
+ rescue Exception => _e
53
53
  # We are throwing an error on purpose here since 0.6.1 would
54
54
  # segfault on errors thrown in threads
55
55
  end
data/tiny_tds.gemspec CHANGED
@@ -26,4 +26,5 @@ Gem::Specification.new do |s|
26
26
  s.add_development_dependency 'rake-compiler-dock', '~> 1.0'
27
27
  s.add_development_dependency 'minitest', '~> 5.6'
28
28
  s.add_development_dependency 'connection_pool', '~> 2.2'
29
+ s.add_development_dependency 'toxiproxy', '~> 2.0.0'
29
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_tds
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3.pre
4
+ version: 2.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-04-08 00:00:00.000000000 Z
13
+ date: 2021-05-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mini_portile2
@@ -96,6 +96,20 @@ dependencies:
96
96
  - - "~>"
97
97
  - !ruby/object:Gem::Version
98
98
  version: '2.2'
99
+ - !ruby/object:Gem::Dependency
100
+ name: toxiproxy
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 2.0.0
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 2.0.0
99
113
  description: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
100
114
  Developed for the ActiveRecord SQL Server adapter.
101
115
  email:
@@ -124,6 +138,7 @@ files:
124
138
  - appveyor.yml
125
139
  - bin/defncopy-ttds
126
140
  - bin/tsql-ttds
141
+ - docker-compose.yml
127
142
  - exe/.keep
128
143
  - ext/tiny_tds/client.c
129
144
  - ext/tiny_tds/client.h
@@ -177,7 +192,8 @@ files:
177
192
  homepage: http://github.com/rails-sqlserver/tiny_tds
178
193
  licenses:
179
194
  - MIT
180
- metadata: {}
195
+ metadata:
196
+ msys2_mingw_dependencies: freetds
181
197
  post_install_message:
182
198
  rdoc_options:
183
199
  - "--charset=UTF-8"
@@ -190,12 +206,34 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
206
  version: 2.0.0
191
207
  required_rubygems_version: !ruby/object:Gem::Requirement
192
208
  requirements:
193
- - - ">"
209
+ - - ">="
194
210
  - !ruby/object:Gem::Version
195
- version: 1.3.1
211
+ version: '0'
196
212
  requirements: []
197
- rubygems_version: 3.1.2
213
+ rubygems_version: 3.0.3
198
214
  signing_key:
199
215
  specification_version: 4
200
216
  summary: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
201
- test_files: []
217
+ test_files:
218
+ - test/appveyor/dbsetup.ps1
219
+ - test/appveyor/dbsetup.sql
220
+ - test/benchmark/query.rb
221
+ - test/benchmark/query_odbc.rb
222
+ - test/benchmark/query_tinytds.rb
223
+ - test/bin/install-freetds.sh
224
+ - test/bin/install-openssl.sh
225
+ - test/bin/setup.sh
226
+ - test/client_test.rb
227
+ - test/gem_test.rb
228
+ - test/result_test.rb
229
+ - test/schema/1px.gif
230
+ - test/schema/sqlserver_2000.sql
231
+ - test/schema/sqlserver_2005.sql
232
+ - test/schema/sqlserver_2008.sql
233
+ - test/schema/sqlserver_2014.sql
234
+ - test/schema/sqlserver_2016.sql
235
+ - test/schema/sqlserver_azure.sql
236
+ - test/schema/sybase_ase.sql
237
+ - test/schema_test.rb
238
+ - test/test_helper.rb
239
+ - test/thread_test.rb