tiny_tds 2.1.2 → 3.0.0

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.
Files changed (51) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +470 -0
  3. data/.gitignore +2 -0
  4. data/CHANGELOG.md +39 -1
  5. data/Gemfile +0 -7
  6. data/ISSUE_TEMPLATE.md +1 -1
  7. data/README.md +50 -59
  8. data/Rakefile +15 -10
  9. data/VERSION +1 -1
  10. data/docker-compose.yml +34 -0
  11. data/ext/tiny_tds/client.c +100 -59
  12. data/ext/tiny_tds/client.h +5 -3
  13. data/ext/tiny_tds/extconf.rb +38 -16
  14. data/ext/tiny_tds/extconsts.rb +4 -10
  15. data/ext/tiny_tds/result.c +52 -45
  16. data/ext/tiny_tds/tiny_tds_ext.c +4 -1
  17. data/lib/tiny_tds/gem.rb +1 -6
  18. data/setup_cimgruby_dev.sh +25 -0
  19. data/start_dev.sh +21 -0
  20. data/tasks/native_gem.rake +15 -6
  21. data/tasks/ports/freetds.rb +1 -6
  22. data/tasks/ports/libiconv.rb +0 -17
  23. data/tasks/ports/openssl.rb +2 -18
  24. data/tasks/ports/recipe.rb +16 -4
  25. data/tasks/ports.rake +61 -40
  26. data/test/bin/install-mssql.ps1 +42 -0
  27. data/test/bin/install-mssqltools.sh +9 -0
  28. data/test/bin/setup_tinytds_db.sh +7 -0
  29. data/test/bin/setup_volume_permissions.sh +10 -0
  30. data/test/client_test.rb +101 -59
  31. data/test/gem_test.rb +25 -28
  32. data/test/result_test.rb +130 -182
  33. data/test/schema_test.rb +366 -388
  34. data/test/sql/db-create.sql +18 -0
  35. data/test/sql/db-login.sql +38 -0
  36. data/test/test_helper.rb +63 -31
  37. data/test/thread_test.rb +1 -1
  38. data/tiny_tds.gemspec +10 -7
  39. metadata +70 -52
  40. data/.travis.yml +0 -24
  41. data/BACKERS.md +0 -32
  42. data/appveyor.yml +0 -51
  43. data/test/appveyor/dbsetup.ps1 +0 -27
  44. data/test/appveyor/dbsetup.sql +0 -9
  45. data/test/bin/setup.sh +0 -19
  46. data/test/schema/sqlserver_2000.sql +0 -140
  47. data/test/schema/sqlserver_2005.sql +0 -140
  48. data/test/schema/sqlserver_2014.sql +0 -140
  49. data/test/schema/sqlserver_2016.sql +0 -140
  50. data/test/schema/sybase_ase.sql +0 -138
  51. /data/test/schema/{sqlserver_2008.sql → sqlserver_2017.sql} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2122d9b48df66ded292ff0e42ba758237376d686
4
- data.tar.gz: 2cd078c914b8287bb99db513810e1498707b40ad
2
+ SHA256:
3
+ metadata.gz: 6b414774cfa843b715b006c293997efc9c41e7166d5f0bb730253564ba21a319
4
+ data.tar.gz: 6e4609d32b55b051ce5578bea58c9b154cafa71913473bc9fdc036ff110be754
5
5
  SHA512:
6
- metadata.gz: 5a70deed6ccd0fd09086c2a16cadb9fa8dc136f3cd6f951a3fbe7a0fc31f5282cc70c08bfe770f6f29970e39cdaa84519dceddc0c624449e9fe45e046d4075c9
7
- data.tar.gz: ef92d35e3e3f7a98818fcf42fc029a4480dfd449dc9da54aa48d180a26435f33d2528fabac0d9cd81d0aaec715ca5180ef470066b75a8e02f11dd0468a5e9f0c
6
+ metadata.gz: 1b52cdf3a47058ca14e54d8f86f584b1ed2a878aad8fa40dee756e4021022efcf9f3f31de8598dc057f397406d7384727c5d9bad18b329c4286de1aff60226f0
7
+ data.tar.gz: 2592253cfb513f39d6df67c7c9f6e23ea22fa6c036f149525ad4d6075f4b2e9b7962df87da94cb5c92ae990b552f84ca91db7371b69207c022f4dd329d288db3
@@ -0,0 +1,470 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ cross-compile:
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ platform:
14
+ - "x64-mingw32"
15
+ - "x64-mingw-ucrt"
16
+ name: cross-compile-windows
17
+ runs-on: ubuntu-22.04
18
+ container:
19
+ image: "ghcr.io/rake-compiler/rake-compiler-dock-image:1.4.0-mri-${{ matrix.platform }}"
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - run: git config --global --add safe.directory /__w/tiny_tds/tiny_tds # shrug
24
+
25
+ - name: Install gems
26
+ shell: bash
27
+ run: bundle install
28
+
29
+ - name: Write used versions into file
30
+ shell: bash
31
+ run: bundle exec rake ports:version_file[${{ matrix.platform }}]
32
+
33
+ - name: Cache ports
34
+ uses: actions/cache@v4
35
+ with:
36
+ path: ports
37
+ key: cross-compiled-v3-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }}
38
+ restore-keys: |
39
+ cross-compiled-v3-${{ matrix.platform }}-${{ hashFiles('**/.ports_versions') }}
40
+ cross-compiled-v3-${{ matrix.platform }}-
41
+
42
+ - name: Build gem
43
+ shell: bash
44
+ run: bundle exec rake gem:for_platform[${{ matrix.platform }}]
45
+
46
+ - uses: actions/upload-artifact@v4
47
+ with:
48
+ name: gem-${{ matrix.platform }}
49
+ path: pkg/*.gem
50
+
51
+ install-windows-mingw:
52
+ needs:
53
+ - cross-compile
54
+ strategy:
55
+ fail-fast: false
56
+ matrix:
57
+ ruby-version:
58
+ - "2.7"
59
+ - "3.0"
60
+
61
+ name: install-windows-mingw
62
+ runs-on: windows-latest
63
+ steps:
64
+ - uses: actions/checkout@v4
65
+
66
+ - uses: ruby/setup-ruby@v1
67
+ with:
68
+ ruby-version: ${{ matrix.ruby-version }}
69
+ bundler-cache: true
70
+
71
+ - name: Download precompiled gem
72
+ uses: actions/download-artifact@v4
73
+ with:
74
+ name: gem-x64-mingw32
75
+
76
+ - name: Install native gem
77
+ shell: pwsh
78
+ run: |
79
+ $rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim()
80
+ $gemVersion = (Get-Content VERSION).Trim()
81
+ $gemToInstall = "./tiny_tds-$gemVersion-$rubyArchitecture.gem"
82
+
83
+ Write-Host "Looking to install $gemToInstall"
84
+ gem install "$gemToInstall"
85
+
86
+ - name: Test if TinyTDS loads
87
+ shell: pwsh
88
+ run: |
89
+ ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path"
90
+ exit $LASTEXITCODE
91
+
92
+ test-windows-mingw:
93
+ needs:
94
+ - cross-compile
95
+ strategy:
96
+ fail-fast: false
97
+ matrix:
98
+ force-encryption:
99
+ - false
100
+ - true
101
+ mssql-version:
102
+ - 2017
103
+ - 2019
104
+ - 2022
105
+ ruby-version:
106
+ - "2.7"
107
+ - "3.0"
108
+
109
+ name: test-windows-mingw
110
+ runs-on: windows-latest
111
+ steps:
112
+ - uses: actions/checkout@v4
113
+
114
+ - uses: ruby/setup-ruby@v1
115
+ with:
116
+ ruby-version: ${{ matrix.ruby-version }}
117
+ bundler-cache: true
118
+
119
+ - name: Download precompiled gem
120
+ uses: actions/download-artifact@v4
121
+ with:
122
+ name: gem-x64-mingw32
123
+
124
+ - name: Install native gem and restore cross-compiled code from it
125
+ shell: pwsh
126
+ run: |
127
+ $rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim()
128
+ $gemVersion = (Get-Content VERSION).Trim()
129
+ $gemToUnpack = "./tiny_tds-$gemVersion-$rubyArchitecture.gem"
130
+
131
+ Write-Host "Looking to unpack $gemToUnpack"
132
+ gem unpack --target ./tmp "$gemToUnpack"
133
+
134
+ # Restore precompiled code
135
+ $source = (Resolve-Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\lib\tiny_tds").Path
136
+ $destination = (Resolve-Path ".\lib\tiny_tds").Path
137
+ Get-ChildItem $source -Recurse -Exclude "*.rb" | Copy-Item -Destination {Join-Path $destination $_.FullName.Substring($source.length)}
138
+
139
+ # Restore ports
140
+ Copy-Item -Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\ports" -Destination "." -Recurse
141
+
142
+ - name: Setup MSSQL
143
+ uses: rails-sqlserver/setup-mssql@v1
144
+ with:
145
+ components: sqlcmd,sqlengine
146
+ version: ${{ matrix.mssql-version }}
147
+ sa-password: c0MplicatedP@ssword
148
+ force-encryption: ${{ matrix.force-encryption }}
149
+
150
+ - name: Setup MSSQL database
151
+ shell: pwsh
152
+ run: |
153
+ & sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql
154
+ & sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql
155
+
156
+ - name: Install toxiproxy-server
157
+ shell: pwsh
158
+ run: |
159
+ choco install toxiproxy-server --version=2.5.0 -y
160
+ Start-Process toxiproxy-server
161
+
162
+ - name: Test gem
163
+ shell: pwsh
164
+ run: bundle exec rake test
165
+ env:
166
+ TOXIPROXY_HOST: "localhost"
167
+
168
+ - name: Test Summary
169
+ uses: test-summary/action@v2
170
+ with:
171
+ paths: "test/reports/TEST-*.xml"
172
+ if: always()
173
+
174
+ install-windows-ucrt:
175
+ needs:
176
+ - cross-compile
177
+ strategy:
178
+ fail-fast: false
179
+ matrix:
180
+ ruby-version:
181
+ - "3.1"
182
+ - "3.2"
183
+ - "3.3"
184
+
185
+ name: install-windows-ucrt
186
+ runs-on: windows-latest
187
+ steps:
188
+ - uses: actions/checkout@v4
189
+
190
+ - uses: ruby/setup-ruby@v1
191
+ with:
192
+ ruby-version: ${{ matrix.ruby-version }}
193
+ bundler-cache: true
194
+
195
+ - name: Download precompiled gem
196
+ uses: actions/download-artifact@v4
197
+ with:
198
+ name: gem-x64-mingw-ucrt
199
+
200
+ - name: Install native gem
201
+ shell: pwsh
202
+ run: |
203
+ $rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim()
204
+ $gemVersion = (Get-Content VERSION).Trim()
205
+ $gemToInstall = "./tiny_tds-$gemVersion-$rubyArchitecture.gem"
206
+
207
+ Write-Host "Looking to install $gemToInstall"
208
+ gem install "$gemToInstall"
209
+
210
+ - name: Test if TinyTDS loads
211
+ shell: pwsh
212
+ run: |
213
+ ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path"
214
+ exit $LASTEXITCODE
215
+
216
+ test-windows-ucrt:
217
+ needs:
218
+ - cross-compile
219
+ strategy:
220
+ fail-fast: false
221
+ matrix:
222
+ force-encryption:
223
+ - false
224
+ - true
225
+ mssql-version:
226
+ - 2017
227
+ - 2019
228
+ - 2022
229
+ ruby-version:
230
+ - "3.1"
231
+ - "3.2"
232
+ - "3.3"
233
+ name: test-windows-ucrt
234
+ runs-on: windows-latest
235
+ steps:
236
+ - uses: actions/checkout@v4
237
+
238
+ - uses: ruby/setup-ruby@v1
239
+ with:
240
+ ruby-version: ${{ matrix.ruby-version }}
241
+ bundler-cache: true
242
+
243
+ - name: Download precompiled gem
244
+ uses: actions/download-artifact@v4
245
+ with:
246
+ name: gem-x64-mingw-ucrt
247
+
248
+ - name: Install native gem and restore cross-compiled code from it
249
+ shell: pwsh
250
+ run: |
251
+ $rubyArchitecture = (ruby -e "puts RbConfig::CONFIG['arch']").Trim()
252
+ $gemVersion = (Get-Content VERSION).Trim()
253
+ $gemToUnpack = "./tiny_tds-$gemVersion-$rubyArchitecture.gem"
254
+
255
+ Write-Host "Looking to unpack $gemToUnpack"
256
+ gem unpack --target ./tmp "$gemToUnpack"
257
+
258
+ # Restore precompiled code
259
+ $source = (Resolve-Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\lib\tiny_tds").Path
260
+ $destination = (Resolve-Path ".\lib\tiny_tds").Path
261
+ Get-ChildItem $source -Recurse -Exclude "*.rb" | Copy-Item -Destination {Join-Path $destination $_.FullName.Substring($source.length)}
262
+
263
+ # Restore ports
264
+ Copy-Item -Path ".\tmp\tiny_tds-$gemVersion-$rubyArchitecture\ports" -Destination "." -Recurse
265
+
266
+ - name: Setup MSSQL
267
+ uses: rails-sqlserver/setup-mssql@v1
268
+ with:
269
+ components: sqlcmd,sqlengine
270
+ version: ${{ matrix.mssql-version }}
271
+ sa-password: c0MplicatedP@ssword
272
+ force-encryption: ${{ matrix.force-encryption }}
273
+
274
+ - name: Setup MSSQL database
275
+ shell: pwsh
276
+ run: |
277
+ & sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql
278
+ & sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql
279
+
280
+ - name: Install toxiproxy-server
281
+ shell: pwsh
282
+ run: |
283
+ choco install toxiproxy-server --version=2.5.0 -y
284
+ Start-Process toxiproxy-server
285
+
286
+ - name: Test gem
287
+ shell: pwsh
288
+ run: bundle exec rake test
289
+ env:
290
+ TOXIPROXY_HOST: "localhost"
291
+
292
+ - name: Test Summary
293
+ uses: test-summary/action@v2
294
+ with:
295
+ paths: "test/reports/TEST-*.xml"
296
+ if: always()
297
+
298
+ install-windows-native:
299
+ strategy:
300
+ fail-fast: false
301
+ matrix:
302
+ ruby-version:
303
+ - "2.7"
304
+ - "3.0"
305
+ - "3.1"
306
+ - "3.2"
307
+ - "3.3"
308
+
309
+ name: install-windows-native
310
+ runs-on: windows-latest
311
+ steps:
312
+ - uses: actions/checkout@v4
313
+
314
+ - uses: ruby/setup-ruby@v1
315
+ with:
316
+ ruby-version: ${{ matrix.ruby-version }}
317
+ bundler-cache: true
318
+
319
+ - name: Build gem
320
+ shell: pwsh
321
+ run: gem build tiny_tds.gemspec
322
+
323
+ - name: Install gem
324
+ shell: pwsh
325
+ run: |
326
+ $gemVersion = (Get-Content VERSION).Trim()
327
+ gem install "tiny_tds-$gemVersion.gem"
328
+
329
+ - name: Test if TinyTDS loads
330
+ shell: pwsh
331
+ run: |
332
+ ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path"
333
+ exit $LASTEXITCODE
334
+
335
+ compile-native-ports:
336
+ runs-on: ubuntu-22.04
337
+ name: cross-compile-linux
338
+ steps:
339
+ - uses: actions/checkout@v4
340
+
341
+ - uses: ruby/setup-ruby@v1
342
+ with:
343
+ ruby-version: 3.3
344
+ bundler-cache: true
345
+
346
+ - name: Write used versions into file
347
+ run: bundle exec rake ports:version_file
348
+
349
+ - name: Cache ports
350
+ uses: actions/cache@v4
351
+ with:
352
+ path: ports
353
+ key: native-v3-${{ hashFiles('**/.ports_versions') }}
354
+ restore-keys: |
355
+ native-v3-${{ hashFiles('* */.ports_versions') }}
356
+ native-v3-
357
+
358
+ - name: Build required libraries
359
+ run: |
360
+ bundle exec rake ports
361
+
362
+ test-linux:
363
+ needs:
364
+ - compile-native-ports
365
+ name: test-linux
366
+ strategy:
367
+ fail-fast: false
368
+ matrix:
369
+ mssql-version:
370
+ - 2017
371
+ - 2019
372
+ - 2022
373
+ ruby-version:
374
+ - "2.7"
375
+ - "3.0"
376
+ - "3.1"
377
+ - "3.2"
378
+ - "3.3"
379
+ runs-on: ubuntu-22.04
380
+ steps:
381
+ - uses: actions/checkout@v4
382
+
383
+ - uses: ruby/setup-ruby@v1
384
+ with:
385
+ ruby-version: ${{ matrix.ruby-version }}
386
+ bundler-cache: true
387
+
388
+ - name: Write used versions into file
389
+ run: |
390
+ bundle exec rake ports:version_file
391
+
392
+ - name: Cache ports
393
+ uses: actions/cache@v4
394
+ with:
395
+ path: ports
396
+ key: native-v3-${{ hashFiles('**/.ports_versions') }}
397
+ fail-on-cache-miss: true
398
+
399
+ - name: Build gem
400
+ run: |
401
+ bundle exec rake build
402
+
403
+ - name: Setup MSSQL
404
+ uses: rails-sqlserver/setup-mssql@v1
405
+ with:
406
+ components: sqlcmd,sqlengine
407
+ version: ${{ matrix.mssql-version }}
408
+ sa-password: "c0MplicatedP@ssword"
409
+
410
+ - name: Setup MSSQL database
411
+ run: |
412
+ sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-create.sql
413
+ sqlcmd -S localhost -U sa -P "c0MplicatedP@ssword" -i ./test/sql/db-login.sql
414
+
415
+ - name: Install toxiproxy-server
416
+ run: |
417
+ wget -O toxiproxy-2.5.0.deb https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy_2.5.0_linux_amd64.deb
418
+ sudo dpkg -i toxiproxy-2.5.0.deb
419
+ sudo toxiproxy-server &
420
+
421
+ - name: Run tests
422
+ run: bundle exec rake test
423
+ env:
424
+ TOXIPROXY_HOST: "localhost"
425
+
426
+ - name: Test Summary
427
+ uses: test-summary/action@v2
428
+ with:
429
+ paths: "test/reports/TEST-*.xml"
430
+ if: always()
431
+
432
+ install_macos:
433
+ strategy:
434
+ fail-fast: false
435
+ matrix:
436
+ ruby-version:
437
+ - "2.7"
438
+ - "3.0"
439
+ - "3.1"
440
+ - "3.2"
441
+ - "3.3"
442
+
443
+ name: install-macos-m1
444
+ runs-on: macos-14
445
+ steps:
446
+ - uses: actions/checkout@v4
447
+
448
+ - name: Install FreeTDS
449
+ run: brew install freetds
450
+ shell: bash
451
+
452
+ - uses: ruby/setup-ruby@v1
453
+ with:
454
+ ruby-version: ${{ matrix.ruby-version }}
455
+ bundler-cache: true
456
+
457
+ - name: Build gem
458
+ shell: bash
459
+ run: gem build tiny_tds.gemspec
460
+
461
+ - name: Install gem and test if TinyTDS loads
462
+ shell: bash
463
+ run: |
464
+ gemVersion=$(<VERSION tr -d '[:space:]')
465
+ gem install "tiny_tds-$gemVersion.gem"
466
+
467
+ - name: Test if TinyTDS loads
468
+ shell: bash
469
+ run: |
470
+ ruby -e "require 'tiny_tds'; puts TinyTds::Gem.root_path"
data/.gitignore CHANGED
@@ -18,3 +18,5 @@ misc
18
18
  /exe/*
19
19
  /ports/*
20
20
  !/ports/patches/
21
+ test/reports
22
+ .ports_versions
data/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ ## 3.0.0
2
+
3
+ * Drop support for Ruby < 2.7
4
+ * Drop support for SQL Server < 2017
5
+ * Drop support for FreeTDS < 1.0
6
+ * No longer provide a 32-bit Windows build
7
+ * Raise error if FreeTDS is unable to send command buffer to the server
8
+ * Use freetds v1.4.23, libiconv v1.17 and OpenSSL v3.4.0 for Windows builds
9
+ * Add `bigdecimal` to dependencies
10
+
11
+ ## 2.1.7
12
+ * Add Ruby 3.3 to the cross compile list
13
+
14
+ ## 2.1.6
15
+
16
+ * Add Ruby 3.0, 3.1, and 3.2 to the cross compile list
17
+ * Fix segfault when asking if client was dead after closing it. Fixes #519.
18
+ * Mark `alloc` function as undefined on `TinyTds::Result`. Fixes #515.
19
+ * Fix Gem installation on Windows by adding default freetds msys path. Fixes #522
20
+ * Search for `freetds` in `/opt/homebrew` when installing on Apple Silicon. Fixes #484, #492 and #508.
21
+
22
+ ## 2.1.5
23
+
24
+ * Fix compilation errors for Amazon Linux 1. Fixes #495.
25
+ * Fix segfault for login timeouts
26
+
27
+ ## 2.1.4
28
+
29
+ * Improve handling of network related timeouts
30
+ * Fix error reporting when preceded by info message
31
+
32
+ ## 2.1.3
33
+
34
+ * Removed old/unused appveyor config
35
+ * Remove old Rubies from CI & cross compile list
36
+ * Add Ruby 2.6 and 2.7 to the cross compile list
37
+
1
38
  ## 2.1.2
2
39
 
3
40
  * Use Kernel.BigDecimal vs BigDecimal.new. Fixes #409.
@@ -207,6 +244,8 @@ Use both dbsetversion() vs. dbsetlversion. Partially reverts #62.
207
244
  state of the client and the need to use Result#cancel to stop processing active results. It is also
208
245
  safe to call Result#cancel over and over again.
209
246
  * Look for the syb headers only.
247
+ * Fix minitest global matchers warnings.
248
+ * Fix test warnings.
210
249
 
211
250
 
212
251
  ## 0.3.2
@@ -252,4 +291,3 @@ Use both dbsetversion() vs. dbsetlversion. Partially reverts #62.
252
291
 
253
292
 
254
293
  ## 0.1.0 Initial release!
255
-
data/Gemfile CHANGED
@@ -1,9 +1,2 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
-
4
- group :development do
5
- end
6
-
7
- group :test do
8
- gem 'minitest'
9
- end
data/ISSUE_TEMPLATE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  * On Windows? If so, do you need devkit for your ruby install?
4
4
  * Using Ubuntu? If so, you may have forgotten to install FreeTDS first.
5
- * Are you using FreeTDS 0.95.80 or later? Check `$ tsql -C` to find out.
5
+ * Are you using FreeTDS 1.0.0 or later? Check `$ tsql -C` to find out.
6
6
  * If not, please update then uninstall the TinyTDS gem and re-install it.
7
7
  * Have you made sure to [enable SQL Server authentication](http://bit.ly/1Kw3set)?
8
8
  * Doing work with threads and the raw client? Use the ConnectionPool gem?