tiny_tds 1.0.4 → 3.2.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 (64) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +20 -0
  3. data/.gitattributes +1 -0
  4. data/.github/workflows/ci.yml +590 -0
  5. data/.gitignore +2 -0
  6. data/.rubocop.yml +31 -0
  7. data/{CHANGELOG → CHANGELOG.md} +133 -26
  8. data/Gemfile +1 -5
  9. data/ISSUE_TEMPLATE.md +36 -3
  10. data/README.md +147 -85
  11. data/Rakefile +51 -94
  12. data/VERSION +1 -1
  13. data/docker-compose.yml +34 -0
  14. data/ext/tiny_tds/client.c +149 -67
  15. data/ext/tiny_tds/client.h +11 -5
  16. data/ext/tiny_tds/extconf.rb +144 -283
  17. data/ext/tiny_tds/extconsts.rb +4 -11
  18. data/ext/tiny_tds/result.c +68 -50
  19. data/ext/tiny_tds/tiny_tds_ext.c +4 -1
  20. data/lib/tiny_tds/bin.rb +44 -40
  21. data/lib/tiny_tds/client.rb +63 -55
  22. data/lib/tiny_tds/error.rb +0 -3
  23. data/lib/tiny_tds/gem.rb +23 -0
  24. data/lib/tiny_tds/result.rb +0 -3
  25. data/lib/tiny_tds.rb +37 -32
  26. data/{ports/patches/freetds/1.00 → patches/freetds/1.00.27}/0001-mingw_missing_inet_pton.diff +4 -4
  27. data/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff +28 -0
  28. data/patches/libiconv/1.14/1-avoid-gets-error.patch +17 -0
  29. data/setup_cimgruby_dev.sh +25 -0
  30. data/start_dev.sh +21 -0
  31. data/tasks/native_gem.rake +16 -0
  32. data/tasks/package.rake +6 -0
  33. data/tasks/ports.rake +24 -0
  34. data/tasks/test.rake +7 -0
  35. data/test/bin/install-freetds.sh +18 -0
  36. data/test/bin/install-mssql.ps1 +42 -0
  37. data/test/bin/install-mssqltools.sh +9 -0
  38. data/test/bin/install-openssl.sh +18 -0
  39. data/test/bin/restore-from-native-gem.ps1 +10 -0
  40. data/test/bin/setup_tinytds_db.sh +7 -0
  41. data/test/bin/setup_volume_permissions.sh +10 -0
  42. data/test/client_test.rb +161 -112
  43. data/test/gem_test.rb +100 -0
  44. data/test/result_test.rb +293 -313
  45. data/test/schema_test.rb +369 -395
  46. data/test/sql/db-create.sql +18 -0
  47. data/test/sql/db-login.sql +38 -0
  48. data/test/test_helper.rb +116 -85
  49. data/test/thread_test.rb +22 -31
  50. data/tiny_tds.gemspec +27 -24
  51. metadata +109 -56
  52. data/appveyor.yml +0 -51
  53. data/test/appveyor/dbsetup.ps1 +0 -27
  54. data/test/appveyor/dbsetup.sql +0 -9
  55. data/test/benchmark/query.rb +0 -77
  56. data/test/benchmark/query_odbc.rb +0 -106
  57. data/test/benchmark/query_tinytds.rb +0 -126
  58. data/test/schema/sqlserver_2000.sql +0 -140
  59. data/test/schema/sqlserver_2005.sql +0 -140
  60. data/test/schema/sqlserver_2014.sql +0 -140
  61. data/test/schema/sybase_ase.sql +0 -138
  62. /data/bin/{defncopy → defncopy-ttds} +0 -0
  63. /data/bin/{tsql → tsql-ttds} +0 -0
  64. /data/test/schema/{sqlserver_2008.sql → sqlserver_2017.sql} +0 -0
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: 1.0.4
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
@@ -10,106 +10,166 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-05-24 00:00:00.000000000 Z
13
+ date: 2025-02-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: mini_portile2
16
+ name: bigdecimal
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '2.0'
21
+ version: '3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '2.0'
28
+ version: '3'
29
+ - !ruby/object:Gem::Dependency
30
+ name: mini_portile2
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 2.8.0
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 2.8.0
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: rake
31
45
  requirement: !ruby/object:Gem::Requirement
32
46
  requirements:
33
47
  - - "~>"
34
48
  - !ruby/object:Gem::Version
35
- version: '10.4'
49
+ version: 13.0.0
36
50
  type: :development
37
51
  prerelease: false
38
52
  version_requirements: !ruby/object:Gem::Requirement
39
53
  requirements:
40
54
  - - "~>"
41
55
  - !ruby/object:Gem::Version
42
- version: '10.4'
56
+ version: 13.0.0
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: rake-compiler
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
- - - '='
61
+ - - "~>"
48
62
  - !ruby/object:Gem::Version
49
- version: 0.9.5
63
+ version: '1.2'
50
64
  type: :development
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
- - - '='
68
+ - - "~>"
55
69
  - !ruby/object:Gem::Version
56
- version: 0.9.5
70
+ version: '1.2'
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: rake-compiler-dock
59
73
  requirement: !ruby/object:Gem::Requirement
60
74
  requirements:
61
75
  - - "~>"
62
76
  - !ruby/object:Gem::Version
63
- version: 0.5.1
77
+ version: 1.9.1
64
78
  type: :development
65
79
  prerelease: false
66
80
  version_requirements: !ruby/object:Gem::Requirement
67
81
  requirements:
68
82
  - - "~>"
69
83
  - !ruby/object:Gem::Version
70
- version: 0.5.1
84
+ version: 1.9.1
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: minitest
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
89
  - - "~>"
76
90
  - !ruby/object:Gem::Version
77
- version: '5.6'
91
+ version: '5.25'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '5.25'
99
+ - !ruby/object:Gem::Dependency
100
+ name: minitest-reporters
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 1.6.1
78
106
  type: :development
79
107
  prerelease: false
80
108
  version_requirements: !ruby/object:Gem::Requirement
81
109
  requirements:
82
110
  - - "~>"
83
111
  - !ruby/object:Gem::Version
84
- version: '5.6'
112
+ version: 1.6.1
85
113
  - !ruby/object:Gem::Dependency
86
114
  name: connection_pool
87
115
  requirement: !ruby/object:Gem::Requirement
88
116
  requirements:
89
117
  - - "~>"
90
118
  - !ruby/object:Gem::Version
91
- version: '2.2'
119
+ version: 2.2.0
92
120
  type: :development
93
121
  prerelease: false
94
122
  version_requirements: !ruby/object:Gem::Requirement
95
123
  requirements:
96
124
  - - "~>"
97
125
  - !ruby/object:Gem::Version
98
- version: '2.2'
126
+ version: 2.2.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: toxiproxy
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 2.0.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 2.0.0
141
+ - !ruby/object:Gem::Dependency
142
+ name: standard
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: 1.31.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: 1.31.0
99
155
  description: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
100
156
  Developed for the ActiveRecord SQL Server adapter.
101
157
  email:
102
158
  - ken@metaskills.net
103
159
  - will@wbond.net
104
160
  executables:
105
- - defncopy
106
- - tsql
161
+ - defncopy-ttds
162
+ - tsql-ttds
107
163
  extensions:
108
164
  - ext/tiny_tds/extconf.rb
109
165
  extra_rdoc_files: []
110
166
  files:
167
+ - ".codeclimate.yml"
168
+ - ".gitattributes"
169
+ - ".github/workflows/ci.yml"
111
170
  - ".gitignore"
112
- - CHANGELOG
171
+ - ".rubocop.yml"
172
+ - CHANGELOG.md
113
173
  - CODE_OF_CONDUCT.md
114
174
  - Gemfile
115
175
  - ISSUE_TEMPLATE.md
@@ -117,9 +177,9 @@ files:
117
177
  - README.md
118
178
  - Rakefile
119
179
  - VERSION
120
- - appveyor.yml
121
- - bin/defncopy
122
- - bin/tsql
180
+ - bin/defncopy-ttds
181
+ - bin/tsql-ttds
182
+ - docker-compose.yml
123
183
  - exe/.keep
124
184
  - ext/tiny_tds/client.c
125
185
  - ext/tiny_tds/client.h
@@ -133,31 +193,42 @@ files:
133
193
  - lib/tiny_tds/bin.rb
134
194
  - lib/tiny_tds/client.rb
135
195
  - lib/tiny_tds/error.rb
196
+ - lib/tiny_tds/gem.rb
136
197
  - lib/tiny_tds/result.rb
137
198
  - lib/tiny_tds/version.rb
138
- - ports/patches/freetds/1.00/0001-mingw_missing_inet_pton.diff
139
- - test/appveyor/dbsetup.ps1
140
- - test/appveyor/dbsetup.sql
141
- - test/benchmark/query.rb
142
- - test/benchmark/query_odbc.rb
143
- - test/benchmark/query_tinytds.rb
199
+ - patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff
200
+ - patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff
201
+ - patches/libiconv/1.14/1-avoid-gets-error.patch
202
+ - setup_cimgruby_dev.sh
203
+ - start_dev.sh
204
+ - tasks/native_gem.rake
205
+ - tasks/package.rake
206
+ - tasks/ports.rake
207
+ - tasks/test.rake
208
+ - test/bin/install-freetds.sh
209
+ - test/bin/install-mssql.ps1
210
+ - test/bin/install-mssqltools.sh
211
+ - test/bin/install-openssl.sh
212
+ - test/bin/restore-from-native-gem.ps1
213
+ - test/bin/setup_tinytds_db.sh
214
+ - test/bin/setup_volume_permissions.sh
144
215
  - test/client_test.rb
216
+ - test/gem_test.rb
145
217
  - test/result_test.rb
146
218
  - test/schema/1px.gif
147
- - test/schema/sqlserver_2000.sql
148
- - test/schema/sqlserver_2005.sql
149
- - test/schema/sqlserver_2008.sql
150
- - test/schema/sqlserver_2014.sql
219
+ - test/schema/sqlserver_2017.sql
151
220
  - test/schema/sqlserver_azure.sql
152
- - test/schema/sybase_ase.sql
153
221
  - test/schema_test.rb
222
+ - test/sql/db-create.sql
223
+ - test/sql/db-login.sql
154
224
  - test/test_helper.rb
155
225
  - test/thread_test.rb
156
226
  - tiny_tds.gemspec
157
227
  homepage: http://github.com/rails-sqlserver/tiny_tds
158
228
  licenses:
159
229
  - MIT
160
- metadata: {}
230
+ metadata:
231
+ msys2_mingw_dependencies: freetds
161
232
  post_install_message:
162
233
  rdoc_options:
163
234
  - "--charset=UTF-8"
@@ -167,33 +238,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
238
  requirements:
168
239
  - - ">="
169
240
  - !ruby/object:Gem::Version
170
- version: 2.0.0
241
+ version: 2.7.0
171
242
  required_rubygems_version: !ruby/object:Gem::Requirement
172
243
  requirements:
173
244
  - - ">="
174
245
  - !ruby/object:Gem::Version
175
246
  version: '0'
176
247
  requirements: []
177
- rubyforge_project:
178
- rubygems_version: 2.4.5.1
248
+ rubygems_version: 3.1.6
179
249
  signing_key:
180
250
  specification_version: 4
181
251
  summary: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
182
- test_files:
183
- - test/appveyor/dbsetup.ps1
184
- - test/appveyor/dbsetup.sql
185
- - test/benchmark/query.rb
186
- - test/benchmark/query_odbc.rb
187
- - test/benchmark/query_tinytds.rb
188
- - test/client_test.rb
189
- - test/result_test.rb
190
- - test/schema/1px.gif
191
- - test/schema/sqlserver_2000.sql
192
- - test/schema/sqlserver_2005.sql
193
- - test/schema/sqlserver_2008.sql
194
- - test/schema/sqlserver_2014.sql
195
- - test/schema/sqlserver_azure.sql
196
- - test/schema/sybase_ase.sql
197
- - test/schema_test.rb
198
- - test/test_helper.rb
199
- - test/thread_test.rb
252
+ test_files: []
data/appveyor.yml DELETED
@@ -1,51 +0,0 @@
1
- init:
2
- - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
3
- - SET PATH=C:\MinGW\msys\1.0\bin;%PATH%
4
- - SET RAKEOPT=-rdevkit
5
- clone_depth: 5
6
- skip_tags: true
7
- matrix:
8
- fast_finish: true
9
- install:
10
- - ps: Update-AppveyorBuild -Version "$(Get-Content $env:appveyor_build_folder\VERSION).$env:appveyor_build_number"
11
- - ruby --version
12
- - gem --version
13
- - bundle install
14
- - bundle exec rake build
15
- build: off
16
- branches:
17
- except:
18
- - /dev.*/
19
- test_script:
20
- - timeout /t 4 /nobreak > NUL
21
- - powershell -File "%APPVEYOR_BUILD_FOLDER%\test\appveyor\dbsetup.ps1"
22
- - timeout /t 4 /nobreak > NUL
23
- - ps: Start-Service 'MSSQL$SQL2014'
24
- - timeout /t 4 /nobreak > NUL
25
- - sqlcmd -S ".\SQL2014" -U sa -P Password12! -i %APPVEYOR_BUILD_FOLDER%\test\appveyor\dbsetup.sql
26
- - bundle exec rake TINYTDS_UNIT_HOST_TEST=localhost TINYTDS_UNIT_DATASERVER="localhost\SQL2014" TINYTDS_SCHEMA=sqlserver_2014 TDSVER=7.1
27
- - bundle exec rake TINYTDS_UNIT_HOST_TEST=localhost TINYTDS_UNIT_DATASERVER="localhost\SQL2014" TINYTDS_SCHEMA=sqlserver_2014
28
- - ps: Stop-Service 'MSSQL$SQL2014'
29
- - ps: Start-Service 'MSSQL$SQL2012SP1'
30
- - timeout /t 4 /nobreak > NUL
31
- - sqlcmd -S ".\SQL2012SP1" -U sa -P Password12! -i %APPVEYOR_BUILD_FOLDER%\test\appveyor\dbsetup.sql
32
- - bundle exec rake TINYTDS_UNIT_HOST_TEST=localhost TINYTDS_UNIT_DATASERVER="localhost\SQL2012SP1" TINYTDS_SCHEMA=sqlserver_2014
33
- - ps: Stop-Service 'MSSQL$SQL2012SP1'
34
- - ps: Start-Service 'MSSQL$SQL2008R2SP2'
35
- - timeout /t 4 /nobreak > NUL
36
- - sqlcmd -S ".\SQL2008R2SP2" -U sa -P Password12! -i %APPVEYOR_BUILD_FOLDER%\test\appveyor\dbsetup.sql
37
- - bundle exec rake TINYTDS_UNIT_HOST_TEST=localhost TINYTDS_UNIT_DATASERVER="localhost\SQL2008R2SP2" TINYTDS_SCHEMA=sqlserver_2008
38
- - timeout /t 4 /nobreak > NUL
39
- - bundle exec rake TINYTDS_UNIT_HOST_TEST=%CI_AZURE_HOST% TINYTDS_UNIT_HOST=%CI_AZURE_HOST% TINYTDS_SCHEMA=sqlserver_azure
40
- environment:
41
- CI_AZURE_HOST:
42
- secure: 8ydpYysZYKEBKvp6plKlYfepH98/zAuT27FFCaJ9Sss=
43
- TINYTDS_UNIT_AZURE_PASS:
44
- secure: fYKSKV4v+36OFQp2nZdX4DfUpgmy5cm0wuR73cgdmEk=
45
- matrix:
46
- - ruby_version: "200"
47
- - ruby_version: "23"
48
- - ruby_version: "23-x64"
49
- on_failure:
50
- - find -name compile.log | xargs cat
51
-
@@ -1,27 +0,0 @@
1
-
2
- Write-Output "Setting up..."
3
- [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
4
- [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null
5
-
6
- Write-Output "Setting variables..."
7
- $serverName = $env:COMPUTERNAME
8
- $instances = @('SQL2008R2SP2', 'SQL2012SP1', 'SQL2014')
9
- $smo = 'Microsoft.SqlServer.Management.Smo.'
10
- $wmi = new-object ($smo + 'Wmi.ManagedComputer')
11
-
12
- Write-Output "Configure Instances..."
13
- foreach ($instance in $instances) {
14
- Write-Output "Instance $instance ..."
15
- Write-Output "Enable TCP/IP and port 1433..."
16
- $uri = "ManagedComputer[@Name='$serverName']/ServerInstance[@Name='$instance']/ServerProtocol[@Name='Tcp']"
17
- $tcp = $wmi.GetSmoObject($uri)
18
- $tcp.IsEnabled = $true
19
- foreach ($ipAddress in $Tcp.IPAddresses) {
20
- $ipAddress.IPAddressProperties["TcpDynamicPorts"].Value = ""
21
- $ipAddress.IPAddressProperties["TcpPort"].Value = "1433"
22
- }
23
- $tcp.Alter()
24
- }
25
-
26
- Set-Service SQLBrowser -StartupType Manual
27
- Start-Service SQLBrowser
@@ -1,9 +0,0 @@
1
- CREATE DATABASE [tinytdstest];
2
- GO
3
- CREATE LOGIN [tinytds] WITH PASSWORD = '', CHECK_POLICY = OFF, DEFAULT_DATABASE = [tinytdstest];
4
- GO
5
- USE [tinytdstest];
6
- CREATE USER [tinytds] FOR LOGIN [tinytds];
7
- GO
8
- EXEC sp_addrolemember N'db_owner', N'tinytds';
9
- GO
@@ -1,77 +0,0 @@
1
- $:.unshift File.expand_path('../../../lib',__FILE__)
2
- require 'rubygems'
3
- require 'bench_press'
4
- require 'tiny_tds'
5
- require 'odbc'
6
- require 'odbc_utf8'
7
-
8
- extend BenchPress
9
-
10
- author 'Ken Collins'
11
- summary 'Query everything.'
12
-
13
- reps 1_000
14
-
15
- @odbc = ODBC.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
16
- @odbc.use_time = true
17
-
18
- @odbc_utf8 = ODBC_UTF8.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
19
- @odbc_utf8.use_time = true
20
-
21
- @tinytds = TinyTds::Client.new(
22
- :dataserver => ENV['TINYTDS_UNIT_DATASERVER'],
23
- :username => 'tinytds',
24
- :password => '',
25
- :database => 'tinytdstest',
26
- :appname => 'TinyTds Dev',
27
- :login_timeout => 5,
28
- :timeout => 5 )
29
-
30
- @query_all = "SELECT * FROM [datatypes]"
31
-
32
-
33
- measure "ODBC (ascii-8bit)" do
34
- h = @odbc.run(@query_all)
35
- h.fetch_all
36
- h.drop
37
- end
38
-
39
- # measure "ODBC (utf8)" do
40
- # h = @odbc_utf8.run(@query_all)
41
- # h.fetch_all
42
- # h.drop
43
- # end
44
-
45
- measure "TinyTDS (row caching)" do
46
- @tinytds.execute(@query_all).each
47
- end
48
-
49
- measure "TinyTDS (no caching)" do
50
- @tinytds.execute(@query_all).each(:cache_rows => false)
51
- end
52
-
53
-
54
-
55
- =begin
56
-
57
- Author: Ken Collins
58
- Date: January 22, 2011
59
- Summary: Query everything.
60
-
61
- System Information
62
- ------------------
63
- Operating System: Mac OS X 10.6.6 (10J567)
64
- CPU: Intel Core 2 Duo 1.6 GHz
65
- Processor Count: 2
66
- Memory: 4 GB
67
- ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.3], MBARI 0x6770, Ruby Enterprise Edition 2010.02
68
-
69
- "TinyTDS (row caching)" is up to 79% faster over 1,000 repetitions
70
- ------------------------------------------------------------------
71
-
72
- TinyTDS (row caching) 4.90862512588501 secs Fastest
73
- TinyTDS (no caching) 4.91626906394958 secs 0% Slower
74
- ODBC (ascii-8bit) 23.959536075592 secs 79% Slower
75
-
76
- =end
77
-
@@ -1,106 +0,0 @@
1
- require 'rubygems'
2
- require 'bench_press'
3
- begin gem 'odbc', '0.99992' ; rescue Gem::LoadError ; end
4
- require 'odbc'
5
-
6
- extend BenchPress
7
-
8
- author 'Ken Collins'
9
- summary 'Benchmarking ODBC Querys'
10
-
11
- reps 1_000
12
-
13
- @client = ODBC.connect ENV['TINYTDS_UNIT_DATASERVER'], 'tinytds', ''
14
- @client.use_time = true
15
-
16
- @query_nothing = "SELECT NULL AS [null]"
17
- @query_ints = "SELECT [int], [bigint], [smallint], [tinyint] FROM [datatypes]"
18
- @query_binaries = "SELECT [binary_50], [image], [varbinary_50] FROM [datatypes]"
19
- @query_bits = "SELECT [bit] FROM [datatypes]"
20
- @query_chars = "SELECT [char_10], [nchar_10], [ntext], [nvarchar_50], [text], [varchar_50] FROM [datatypes]"
21
- @query_dates = "SELECT [datetime], [smalldatetime] FROM [datatypes]"
22
- @query_decimals = "SELECT [decimal_9_2], [decimal_16_4], [numeric_18_0], [numeric_36_2] FROM [datatypes]"
23
- @query_floats = "SELECT [float], [real] FROM [datatypes]"
24
- @query_moneys = "SELECT [money], [smallmoney] FROM [datatypes]"
25
- @query_guids = "SELECT [uniqueidentifier] FROM [datatypes]"
26
- @query_all = "SELECT * FROM [datatypes]"
27
-
28
- def select_all(query)
29
- h = @client.run(query)
30
- h.fetch_all
31
- h.drop
32
- end
33
-
34
-
35
- measure "Nothing" do
36
- select_all @query_nothing
37
- end
38
-
39
- measure "Integers" do
40
- select_all @query_ints
41
- end
42
-
43
- measure "Binaries" do
44
- select_all @query_binaries
45
- end
46
-
47
- measure "Bits" do
48
- select_all @query_bits
49
- end
50
-
51
- measure "Chars" do
52
- select_all @query_chars
53
- end
54
-
55
- measure "Dates" do
56
- select_all @query_dates
57
- end
58
-
59
- measure "Decimals" do
60
- select_all @query_decimals
61
- end
62
-
63
- measure "Floats" do
64
- select_all @query_floats
65
- end
66
-
67
- measure "Moneys" do
68
- select_all @query_moneys
69
- end
70
-
71
- measure "Guids" do
72
- select_all @query_guids
73
- end
74
-
75
- measure "All" do
76
- select_all @query_all
77
- end
78
-
79
-
80
- =begin
81
-
82
- System Information
83
- ------------------
84
- Operating System: Mac OS X 10.6.4 (10F569)
85
- CPU: Intel Core 2 Duo 2.4 GHz
86
- Processor Count: 2
87
- Memory: 4 GB
88
- ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.4.0]
89
-
90
- "Nothing" is up to 98% faster over 1,000 repetitions
91
- ----------------------------------------------------
92
-
93
- Nothing 0.297961950302124 secs Fastest
94
- Bits 0.377611875534058 secs 21% Slower
95
- Guids 0.381000995635986 secs 21% Slower
96
- Moneys 0.405518054962158 secs 26% Slower
97
- Floats 0.409428119659424 secs 27% Slower
98
- Integers 0.448167085647583 secs 33% Slower
99
- Decimals 0.471596956253052 secs 36% Slower
100
- Dates 0.52501106262207 secs 43% Slower
101
- Binaries 3.66349482536316 secs 91% Slower
102
- Chars 6.82928085327148 secs 95% Slower
103
- All 28.4982612133026 secs 98% Slower
104
-
105
- =end
106
-
@@ -1,126 +0,0 @@
1
- require 'rubygems'
2
- require 'bench_press'
3
- $:.unshift File.expand_path('../../../lib',__FILE__)
4
- require 'tiny_tds'
5
-
6
- extend BenchPress
7
-
8
- author 'Ken Collins'
9
- summary 'Benchmark TinyTds Querys'
10
-
11
- reps 1_000
12
-
13
- @client = TinyTds::Client.new({
14
- :dataserver => ENV['TINYTDS_UNIT_DATASERVER'],
15
- :username => 'tinytds',
16
- :password => '',
17
- :database => 'tinytdstest',
18
- :appname => 'TinyTds Dev',
19
- :login_timeout => 5,
20
- :timeout => 5
21
- })
22
-
23
- @query_nothing = "SELECT NULL AS [null]"
24
- @query_ints = "SELECT [int], [bigint], [smallint], [tinyint] FROM [datatypes]"
25
- @query_binaries = "SELECT [binary_50], [image], [varbinary_50] FROM [datatypes]"
26
- @query_bits = "SELECT [bit] FROM [datatypes]"
27
- @query_chars = "SELECT [char_10], [nchar_10], [ntext], [nvarchar_50], [text], [varchar_50] FROM [datatypes]"
28
- @query_dates = "SELECT [datetime], [smalldatetime] FROM [datatypes]"
29
- @query_decimals = "SELECT [decimal_9_2], [decimal_16_4], [numeric_18_0], [numeric_36_2] FROM [datatypes]"
30
- @query_floats = "SELECT [float], [real] FROM [datatypes]"
31
- @query_moneys = "SELECT [money], [smallmoney] FROM [datatypes]"
32
- @query_guids = "SELECT [uniqueidentifier] FROM [datatypes]"
33
- @query_all = "SELECT * FROM [datatypes]"
34
-
35
- def select_all(query)
36
- @client.execute(query).each
37
- end
38
-
39
-
40
- measure "Nothing" do
41
- select_all @query_nothing
42
- end
43
-
44
- measure "Integers" do
45
- select_all @query_ints
46
- end
47
-
48
- measure "Binaries" do
49
- select_all @query_binaries
50
- end
51
-
52
- measure "Bits" do
53
- select_all @query_bits
54
- end
55
-
56
- measure "Chars" do
57
- select_all @query_chars
58
- end
59
-
60
- measure "Dates" do
61
- select_all @query_dates
62
- end
63
-
64
- measure "Decimals" do
65
- select_all @query_decimals
66
- end
67
-
68
- measure "Floats" do
69
- select_all @query_floats
70
- end
71
-
72
- measure "Moneys" do
73
- select_all @query_moneys
74
- end
75
-
76
- measure "Guids" do
77
- select_all @query_guids
78
- end
79
-
80
- measure "All" do
81
- select_all @query_all
82
- end
83
-
84
-
85
- =begin
86
-
87
- Query Tinytds
88
- =============
89
- Author: Ken Collins
90
- Date: September 11, 2011
91
- Summary: Benchmark TinyTds Querys
92
-
93
- System Information
94
- ------------------
95
- Operating System: Mac OS X 10.7.1 (11B26)
96
- CPU: Quad-Core Intel Xeon 2.66 GHz
97
- Processor Count: 4
98
- Memory: 24 GB
99
- ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin11.1.0], MBARI 0x6770, Ruby Enterprise Edition 2011.03
100
-
101
- ----------------------------------------------------
102
- (before 64bit times) (after 64bit times)
103
- Nothing 0.287657022476196 secs Nothing 0.289273977279663 secs
104
- Bits 0.406533002853394 secs Bits 0.424988031387329 secs
105
- Guids 0.419962882995605 secs Guids 0.427381992340088 secs
106
- Floats 0.452103137969971 secs Floats 0.455377101898193 secs
107
- Moneys 0.481696844100952 secs Moneys 0.485175132751465 secs
108
- Integers 0.496185064315796 secs Integers 0.525003910064697 secs
109
- Binaries 0.538873195648193 secs Decimals 0.541536808013916 secs
110
- Decimals 0.540570974349976 secs Binaries 0.542865991592407 secs
111
- Dates 0.761389970779419 secs Dates 1.51440119743347 secs
112
- Chars 0.793163061141968 secs Chars 0.666505098342896 secs
113
- All 4.4630811214447 secs All 5.17242312431335 secs
114
-
115
- =end
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-