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.
- checksums.yaml +5 -5
- data/.codeclimate.yml +20 -0
- data/.gitattributes +1 -0
- data/.github/workflows/ci.yml +590 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +31 -0
- data/{CHANGELOG → CHANGELOG.md} +133 -26
- data/Gemfile +1 -5
- data/ISSUE_TEMPLATE.md +36 -3
- data/README.md +147 -85
- data/Rakefile +51 -94
- data/VERSION +1 -1
- data/docker-compose.yml +34 -0
- data/ext/tiny_tds/client.c +149 -67
- data/ext/tiny_tds/client.h +11 -5
- data/ext/tiny_tds/extconf.rb +144 -283
- data/ext/tiny_tds/extconsts.rb +4 -11
- data/ext/tiny_tds/result.c +68 -50
- data/ext/tiny_tds/tiny_tds_ext.c +4 -1
- data/lib/tiny_tds/bin.rb +44 -40
- data/lib/tiny_tds/client.rb +63 -55
- data/lib/tiny_tds/error.rb +0 -3
- data/lib/tiny_tds/gem.rb +23 -0
- data/lib/tiny_tds/result.rb +0 -3
- data/lib/tiny_tds.rb +37 -32
- data/{ports/patches/freetds/1.00 → patches/freetds/1.00.27}/0001-mingw_missing_inet_pton.diff +4 -4
- data/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff +28 -0
- data/patches/libiconv/1.14/1-avoid-gets-error.patch +17 -0
- data/setup_cimgruby_dev.sh +25 -0
- data/start_dev.sh +21 -0
- data/tasks/native_gem.rake +16 -0
- data/tasks/package.rake +6 -0
- data/tasks/ports.rake +24 -0
- data/tasks/test.rake +7 -0
- data/test/bin/install-freetds.sh +18 -0
- data/test/bin/install-mssql.ps1 +42 -0
- data/test/bin/install-mssqltools.sh +9 -0
- data/test/bin/install-openssl.sh +18 -0
- data/test/bin/restore-from-native-gem.ps1 +10 -0
- data/test/bin/setup_tinytds_db.sh +7 -0
- data/test/bin/setup_volume_permissions.sh +10 -0
- data/test/client_test.rb +161 -112
- data/test/gem_test.rb +100 -0
- data/test/result_test.rb +293 -313
- data/test/schema_test.rb +369 -395
- data/test/sql/db-create.sql +18 -0
- data/test/sql/db-login.sql +38 -0
- data/test/test_helper.rb +116 -85
- data/test/thread_test.rb +22 -31
- data/tiny_tds.gemspec +27 -24
- metadata +109 -56
- data/appveyor.yml +0 -51
- data/test/appveyor/dbsetup.ps1 +0 -27
- data/test/appveyor/dbsetup.sql +0 -9
- data/test/benchmark/query.rb +0 -77
- data/test/benchmark/query_odbc.rb +0 -106
- data/test/benchmark/query_tinytds.rb +0 -126
- data/test/schema/sqlserver_2000.sql +0 -140
- data/test/schema/sqlserver_2005.sql +0 -140
- data/test/schema/sqlserver_2014.sql +0 -140
- data/test/schema/sybase_ase.sql +0 -138
- /data/bin/{defncopy → defncopy-ttds} +0 -0
- /data/bin/{tsql → tsql-ttds} +0 -0
- /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:
|
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:
|
13
|
+
date: 2025-02-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: bigdecimal
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
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: '
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
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:
|
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:
|
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:
|
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
|
-
-
|
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
|
-
-
|
121
|
-
- bin/
|
122
|
-
-
|
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
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
-
|
143
|
-
-
|
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/
|
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.
|
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
|
-
|
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
|
-
|
data/test/appveyor/dbsetup.ps1
DELETED
@@ -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
|
data/test/appveyor/dbsetup.sql
DELETED
@@ -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
|
data/test/benchmark/query.rb
DELETED
@@ -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
|
-
|