tiny_tds 3.2.0-aarch64-linux-gnu

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 (71) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +20 -0
  3. data/.gitattributes +1 -0
  4. data/.github/workflows/ci.yml +590 -0
  5. data/.gitignore +22 -0
  6. data/.rubocop.yml +31 -0
  7. data/CHANGELOG.md +305 -0
  8. data/CODE_OF_CONDUCT.md +31 -0
  9. data/Gemfile +2 -0
  10. data/ISSUE_TEMPLATE.md +38 -0
  11. data/MIT-LICENSE +23 -0
  12. data/README.md +493 -0
  13. data/Rakefile +67 -0
  14. data/VERSION +1 -0
  15. data/bin/defncopy-ttds +3 -0
  16. data/bin/tsql-ttds +3 -0
  17. data/docker-compose.yml +34 -0
  18. data/exe/.keep +0 -0
  19. data/ext/tiny_tds/client.c +492 -0
  20. data/ext/tiny_tds/client.h +53 -0
  21. data/ext/tiny_tds/extconf.rb +190 -0
  22. data/ext/tiny_tds/extconsts.rb +8 -0
  23. data/ext/tiny_tds/result.c +626 -0
  24. data/ext/tiny_tds/result.h +32 -0
  25. data/ext/tiny_tds/tiny_tds_ext.c +15 -0
  26. data/ext/tiny_tds/tiny_tds_ext.h +17 -0
  27. data/lib/tiny_tds/2.7/tiny_tds.so +0 -0
  28. data/lib/tiny_tds/3.0/tiny_tds.so +0 -0
  29. data/lib/tiny_tds/3.1/tiny_tds.so +0 -0
  30. data/lib/tiny_tds/3.2/tiny_tds.so +0 -0
  31. data/lib/tiny_tds/3.3/tiny_tds.so +0 -0
  32. data/lib/tiny_tds/3.4/tiny_tds.so +0 -0
  33. data/lib/tiny_tds/bin.rb +90 -0
  34. data/lib/tiny_tds/client.rb +132 -0
  35. data/lib/tiny_tds/error.rb +12 -0
  36. data/lib/tiny_tds/gem.rb +23 -0
  37. data/lib/tiny_tds/result.rb +5 -0
  38. data/lib/tiny_tds/version.rb +3 -0
  39. data/lib/tiny_tds.rb +42 -0
  40. data/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff +34 -0
  41. data/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff +28 -0
  42. data/patches/libiconv/1.14/1-avoid-gets-error.patch +17 -0
  43. data/ports/aarch64-linux-gnu/bin/defncopy +0 -0
  44. data/ports/aarch64-linux-gnu/bin/tsql +0 -0
  45. data/ports/aarch64-linux-gnu/lib/libsybdb.so.5 +0 -0
  46. data/setup_cimgruby_dev.sh +25 -0
  47. data/start_dev.sh +21 -0
  48. data/tasks/native_gem.rake +16 -0
  49. data/tasks/package.rake +6 -0
  50. data/tasks/ports.rake +24 -0
  51. data/tasks/test.rake +7 -0
  52. data/test/bin/install-freetds.sh +18 -0
  53. data/test/bin/install-mssql.ps1 +42 -0
  54. data/test/bin/install-mssqltools.sh +9 -0
  55. data/test/bin/install-openssl.sh +18 -0
  56. data/test/bin/restore-from-native-gem.ps1 +10 -0
  57. data/test/bin/setup_tinytds_db.sh +7 -0
  58. data/test/bin/setup_volume_permissions.sh +10 -0
  59. data/test/client_test.rb +266 -0
  60. data/test/gem_test.rb +100 -0
  61. data/test/result_test.rb +708 -0
  62. data/test/schema/1px.gif +0 -0
  63. data/test/schema/sqlserver_2017.sql +140 -0
  64. data/test/schema/sqlserver_azure.sql +140 -0
  65. data/test/schema_test.rb +417 -0
  66. data/test/sql/db-create.sql +18 -0
  67. data/test/sql/db-login.sql +38 -0
  68. data/test/test_helper.rb +244 -0
  69. data/test/thread_test.rb +89 -0
  70. data/tiny_tds.gemspec +31 -0
  71. metadata +259 -0
@@ -0,0 +1,244 @@
1
+ require "bundler"
2
+ Bundler.require :development, :test
3
+ require "tiny_tds"
4
+ require "minitest/autorun"
5
+ require "toxiproxy"
6
+
7
+ require "minitest/reporters"
8
+ Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new, Minitest::Reporters::JUnitReporter.new]
9
+
10
+ TINYTDS_SCHEMAS = ["sqlserver_2017", "sqlserver_azure"].freeze
11
+
12
+ module TinyTds
13
+ class TestCase < Minitest::Spec
14
+ class << self
15
+ def current_schema
16
+ ENV["TINYTDS_SCHEMA"] || "sqlserver_2017"
17
+ end
18
+
19
+ TINYTDS_SCHEMAS.each do |schema|
20
+ define_method :"#{schema}?" do
21
+ schema == current_schema
22
+ end
23
+ end
24
+ end
25
+
26
+ after { close_client }
27
+
28
+ protected
29
+
30
+ TINYTDS_SCHEMAS.each do |schema|
31
+ define_method :"#{schema}?" do
32
+ schema == self.class.current_schema
33
+ end
34
+ end
35
+
36
+ def current_schema
37
+ self.class.current_schema
38
+ end
39
+
40
+ def close_client(client = @client)
41
+ client.close if defined?(client) && client.is_a?(TinyTds::Client)
42
+ end
43
+
44
+ def new_connection(options = {})
45
+ client = TinyTds::Client.new(connection_options(options))
46
+ if sqlserver_azure?
47
+ client.execute("SET ANSI_NULLS ON").do
48
+ client.execute("SET CURSOR_CLOSE_ON_COMMIT OFF").do
49
+ client.execute("SET ANSI_NULL_DFLT_ON ON").do
50
+ client.execute("SET IMPLICIT_TRANSACTIONS OFF").do
51
+ client.execute("SET ANSI_PADDING ON").do
52
+ client.execute("SET QUOTED_IDENTIFIER ON").do
53
+ client.execute("SET ANSI_WARNINGS ON").do
54
+ else
55
+ client.execute("SET ANSI_DEFAULTS ON").do
56
+ client.execute("SET CURSOR_CLOSE_ON_COMMIT OFF").do
57
+ client.execute("SET IMPLICIT_TRANSACTIONS OFF").do
58
+ end
59
+ client.execute("SET TEXTSIZE 2147483647").do
60
+ client.execute("SET CONCAT_NULL_YIELDS_NULL ON").do
61
+ client
62
+ end
63
+
64
+ def connection_options(options = {})
65
+ username = (sqlserver_azure? ? ENV["TINYTDS_UNIT_AZURE_USER"] : ENV["TINYTDS_UNIT_USER"]) || "tinytds"
66
+ password = (sqlserver_azure? ? ENV["TINYTDS_UNIT_AZURE_PASS"] : ENV["TINYTDS_UNIT_PASS"]) || ""
67
+ {dataserver: sqlserver_azure? ? nil : ENV["TINYTDS_UNIT_DATASERVER"],
68
+ host: ENV["TINYTDS_UNIT_HOST"] || "localhost",
69
+ port: ENV["TINYTDS_UNIT_PORT"] || "1433",
70
+ tds_version: ENV["TINYTDS_UNIT_VERSION"],
71
+ username: username,
72
+ password: password,
73
+ database: ENV["TINYTDS_UNIT_DATABASE"] || "tinytdstest",
74
+ appname: "TinyTds Dev",
75
+ login_timeout: 5,
76
+ timeout: connection_timeout,
77
+ azure: sqlserver_azure?}.merge(options)
78
+ end
79
+
80
+ def connection_timeout
81
+ sqlserver_azure? ? 20 : 8
82
+ end
83
+
84
+ def assert_client_works(client)
85
+ _(client.execute("SELECT 'client_works' as [client_works]").each).must_equal [{"client_works" => "client_works"}]
86
+ end
87
+
88
+ def assert_new_connections_work
89
+ client = new_connection
90
+ client.execute("SELECT 'new_connections_work' as [new_connections_work]").each
91
+ client.close
92
+ end
93
+
94
+ def assert_raise_tinytds_error(action)
95
+ result = nil
96
+ error_raised = false
97
+ begin
98
+ result = action.call
99
+ rescue TinyTds::Error => e
100
+ error_raised = true
101
+ end
102
+ assert error_raised, "expected a TinyTds::Error but none happened"
103
+ yield e
104
+ ensure
105
+ close_client(result)
106
+ end
107
+
108
+ def inspect_tinytds_exception
109
+ yield
110
+ rescue TinyTds::Error => e
111
+ props = {source: e.source, message: e.message, severity: e.severity,
112
+ db_error_number: e.db_error_number, os_error_number: e.os_error_number}
113
+ raise "TinyTds::Error - #{props.inspect}"
114
+ end
115
+
116
+ def assert_binary_encoding(value)
117
+ assert_equal Encoding.find("BINARY"), value.encoding
118
+ end
119
+
120
+ def assert_utf8_encoding(value)
121
+ assert_equal Encoding.find("UTF-8"), value.encoding
122
+ end
123
+
124
+ def rubyRbx?
125
+ RUBY_DESCRIPTION =~ /rubinius/i
126
+ end
127
+
128
+ def ruby_windows?
129
+ RbConfig::CONFIG["host_os"] =~ /ming/
130
+ end
131
+
132
+ def ruby_darwin?
133
+ RbConfig::CONFIG["host_os"] =~ /darwin/
134
+ end
135
+
136
+ def load_current_schema
137
+ loader = new_connection
138
+ schema_file = File.expand_path File.join(File.dirname(__FILE__), "schema", "#{current_schema}.sql")
139
+ schema_sql = File.open(schema_file, "rb:UTF-8") { |f| f.read }
140
+ loader.execute(drop_sql).do
141
+ loader.execute(schema_sql).do
142
+ loader.execute(sp_sql).do
143
+ loader.execute(sp_error_sql).do
144
+ loader.execute(sp_several_prints_sql).do
145
+ loader.close
146
+ true
147
+ end
148
+
149
+ def drop_sql
150
+ %|IF EXISTS (
151
+ SELECT TABLE_NAME
152
+ FROM INFORMATION_SCHEMA.TABLES
153
+ WHERE TABLE_CATALOG = 'tinytdstest'
154
+ AND TABLE_TYPE = 'BASE TABLE'
155
+ AND TABLE_NAME = 'datatypes'
156
+ ) DROP TABLE [datatypes]
157
+ IF EXISTS (
158
+ SELECT name FROM sysobjects
159
+ WHERE name = 'tinytds_TestReturnCodes' AND type = 'P'
160
+ ) DROP PROCEDURE tinytds_TestReturnCodes
161
+ IF EXISTS (
162
+ SELECT name FROM sysobjects
163
+ WHERE name = 'tinytds_TestPrintWithError' AND type = 'P'
164
+ ) DROP PROCEDURE tinytds_TestPrintWithError
165
+ IF EXISTS (
166
+ SELECT name FROM sysobjects
167
+ WHERE name = 'tinytds_TestSeveralPrints' AND type = 'P'
168
+ ) DROP PROCEDURE tinytds_TestSeveralPrints|
169
+ end
170
+
171
+ def sp_sql
172
+ %|CREATE PROCEDURE tinytds_TestReturnCodes
173
+ AS
174
+ SELECT 1 as [one]
175
+ RETURN(420) |
176
+ end
177
+
178
+ def sp_error_sql
179
+ %|CREATE PROCEDURE tinytds_TestPrintWithError
180
+ AS
181
+ PRINT 'hello'
182
+ RAISERROR('Error following print', 16, 1)|
183
+ end
184
+
185
+ def sp_several_prints_sql
186
+ %(CREATE PROCEDURE tinytds_TestSeveralPrints
187
+ AS
188
+ PRINT 'hello 1'
189
+ PRINT 'hello 2'
190
+ PRINT 'hello 3')
191
+ end
192
+
193
+ def find_value(id, column, query_options = {})
194
+ query_options[:timezone] ||= :utc
195
+ sql = "SELECT [#{column}] FROM [datatypes] WHERE [id] = #{id}"
196
+ @client.execute(sql).each(query_options).first[column.to_s]
197
+ end
198
+
199
+ def local_offset
200
+ TinyTds::Client.local_offset
201
+ end
202
+
203
+ def utc_offset
204
+ ::Time.local(2010).utc_offset
205
+ end
206
+
207
+ def rollback_transaction(client)
208
+ client.execute("BEGIN TRANSACTION").do
209
+ yield
210
+ ensure
211
+ client.execute("ROLLBACK TRANSACTION").do
212
+ end
213
+
214
+ def init_toxiproxy
215
+ # In order for toxiproxy to work for local docker instances of mssql, the containers must be on the same network
216
+ # and the host used below must match the mssql container name so toxiproxy knows where to proxy to.
217
+ # localhost from the perspective of toxiproxy's container is its own container an *not* the mssql container it needs to proxy to.
218
+ # docker-compose.yml handles this automatically for us. In instances where someone is using their own local mssql container they'll
219
+ # need to set up the networks manually and set TINYTDS_UNIT_HOST to their mssql container name
220
+ # For anything other than localhost just use the environment config
221
+ toxi_host = ENV["TOXIPROXY_HOST"] || "localhost"
222
+ toxi_api_port = 8474
223
+ toxi_test_port = 1234
224
+ Toxiproxy.host = "http://#{toxi_host}:#{toxi_api_port}"
225
+
226
+ toxi_upstream_host = ENV["TINYTDS_UNIT_HOST_TEST"] || ENV["TINYTDS_UNIT_HOST"] || "localhost"
227
+ toxi_upstream_port = ENV["TINYTDS_UNIT_PORT"] || 1433
228
+
229
+ puts "\n-------------------------"
230
+ puts "Toxiproxy api listener: #{toxi_host}:#{toxi_api_port}"
231
+ puts "Toxiproxy unit test listener: #{toxi_host}:#{toxi_test_port}"
232
+ puts "Toxiproxy upstream sqlserver: #{toxi_upstream_host}:#{toxi_upstream_port}"
233
+ puts "-------------------------"
234
+
235
+ Toxiproxy.populate([
236
+ {
237
+ name: "sqlserver_test",
238
+ listen: "#{toxi_host}:#{toxi_test_port}",
239
+ upstream: "#{toxi_upstream_host}:#{toxi_upstream_port}"
240
+ }
241
+ ])
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,89 @@
1
+ require "test_helper"
2
+ require "logger"
3
+ require "benchmark"
4
+
5
+ class ThreadTest < TinyTds::TestCase
6
+ describe "Threaded SELECT queries" do
7
+ before do
8
+ @logger = Logger.new $stdout
9
+ @logger.level = Logger::WARN
10
+ @poolsize = 4
11
+ @numthreads = 10
12
+ @query = "waitfor delay '00:00:01'"
13
+ @pool = ConnectionPool.new(size: @poolsize, timeout: 5) { new_connection }
14
+ end
15
+
16
+ after do
17
+ @pool.shutdown { |c| c.close }
18
+ end
19
+
20
+ it "should finish faster in parallel" do
21
+ skip if sqlserver_azure?
22
+ x = Benchmark.realtime do
23
+ threads = []
24
+ @numthreads.times do |i|
25
+ start = Time.new
26
+ threads << Thread.new do
27
+ ts = Time.new
28
+ @pool.with { |c| c.execute(@query).do }
29
+ te = Time.new
30
+ @logger.info "Thread #{i} finished in #{te - ts} thread seconds, #{te - start} real seconds"
31
+ end
32
+ end
33
+ threads.each { |t| t.join }
34
+ end
35
+ assert x < @numthreads, "#{x} is not faster than #{@numthreads} seconds"
36
+ mintime = (1.0 * @numthreads / @poolsize).ceil
37
+ @logger.info "#{@numthreads} queries on #{@poolsize} threads: #{x} sec. Minimum time: #{mintime} sec."
38
+ assert x > mintime, "#{x} is not slower than #{mintime} seconds"
39
+ end
40
+
41
+ it "should not crash on error in parallel" do
42
+ skip if sqlserver_azure?
43
+ threads = []
44
+ @numthreads.times do |i|
45
+ threads << Thread.new do
46
+ @pool.with do |client|
47
+ result = client.execute "select dbname()"
48
+ result.each { |r| puts r }
49
+ rescue => _e
50
+ # We are throwing an error on purpose here since 0.6.1 would
51
+ # segfault on errors thrown in threads
52
+ end
53
+ end
54
+ end
55
+ threads.each { |t| t.join }
56
+ assert true
57
+ end
58
+
59
+ it "should cancel when hitting timeout in thread" do
60
+ exception = false
61
+
62
+ thread = Thread.new do
63
+ @pool.with do |client|
64
+ delay = ("0" + (connection_timeout + 2).to_s)[-2, 2] # Two seconds longer than default.
65
+ result = client.execute "waitfor delay '00:00:#{delay}'; select db_name()"
66
+ result.each { |r| puts r }
67
+ rescue TinyTds::Error => e
68
+ if e.message == "Adaptive Server connection timed out"
69
+ exception = true
70
+ end
71
+ end
72
+ end
73
+
74
+ timer_thread = Thread.new do
75
+ # Sleep until after the timeout should have been reached
76
+ sleep(connection_timeout + 2)
77
+ if !exception
78
+ thread.kill
79
+ raise "Timeout passed without query timing out"
80
+ end
81
+ end
82
+
83
+ thread.join
84
+ timer_thread.join
85
+
86
+ assert exception
87
+ end
88
+ end
89
+ end
data/tiny_tds.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
2
+ require "tiny_tds/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "tiny_tds"
6
+ s.version = TinyTds::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Ken Collins", "Erik Bryn", "Will Bond"]
9
+ s.email = ["ken@metaskills.net", "will@wbond.net"]
10
+ s.homepage = "http://github.com/rails-sqlserver/tiny_tds"
11
+ s.summary = "TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library."
12
+ s.description = "TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library. Developed for the ActiveRecord SQL Server adapter."
13
+ s.files = `git ls-files`.split("\n") + Dir.glob("exe/*")
14
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
+ s.require_paths = ["lib"]
16
+ s.rdoc_options = ["--charset=UTF-8"]
17
+ s.extensions = ["ext/tiny_tds/extconf.rb"]
18
+ s.license = "MIT"
19
+ s.required_ruby_version = ">= 2.7.0"
20
+ s.metadata["msys2_mingw_dependencies"] = "freetds"
21
+ s.add_dependency "bigdecimal", "~> 3"
22
+ s.add_development_dependency "mini_portile2", "~> 2.8.0"
23
+ s.add_development_dependency "rake", "~> 13.0.0"
24
+ s.add_development_dependency "rake-compiler", "~> 1.2"
25
+ s.add_development_dependency "rake-compiler-dock", "~> 1.9.1"
26
+ s.add_development_dependency "minitest", "~> 5.25"
27
+ s.add_development_dependency "minitest-reporters", "~> 1.6.1"
28
+ s.add_development_dependency "connection_pool", "~> 2.2.0"
29
+ s.add_development_dependency "toxiproxy", "~> 2.0.0"
30
+ s.add_development_dependency "standard", "~> 1.31.0"
31
+ end
metadata ADDED
@@ -0,0 +1,259 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tiny_tds
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.2.0
5
+ platform: aarch64-linux-gnu
6
+ authors:
7
+ - Ken Collins
8
+ - Erik Bryn
9
+ - Will Bond
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2025-02-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bigdecimal
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mini_portile2
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 2.8.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.8.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 13.0.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 13.0.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake-compiler
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.2'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.2'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake-compiler-dock
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 1.9.1
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.9.1
84
+ - !ruby/object:Gem::Dependency
85
+ name: minitest
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '5.25'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '5.25'
98
+ - !ruby/object:Gem::Dependency
99
+ name: minitest-reporters
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 1.6.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 1.6.1
112
+ - !ruby/object:Gem::Dependency
113
+ name: connection_pool
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 2.2.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 2.2.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: toxiproxy
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 2.0.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 2.0.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: standard
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 1.31.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 1.31.0
154
+ description: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
155
+ Developed for the ActiveRecord SQL Server adapter.
156
+ email:
157
+ - ken@metaskills.net
158
+ - will@wbond.net
159
+ executables:
160
+ - defncopy-ttds
161
+ - tsql-ttds
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - ".codeclimate.yml"
166
+ - ".gitattributes"
167
+ - ".github/workflows/ci.yml"
168
+ - ".gitignore"
169
+ - ".rubocop.yml"
170
+ - CHANGELOG.md
171
+ - CODE_OF_CONDUCT.md
172
+ - Gemfile
173
+ - ISSUE_TEMPLATE.md
174
+ - MIT-LICENSE
175
+ - README.md
176
+ - Rakefile
177
+ - VERSION
178
+ - bin/defncopy-ttds
179
+ - bin/tsql-ttds
180
+ - docker-compose.yml
181
+ - exe/.keep
182
+ - ext/tiny_tds/client.c
183
+ - ext/tiny_tds/client.h
184
+ - ext/tiny_tds/extconf.rb
185
+ - ext/tiny_tds/extconsts.rb
186
+ - ext/tiny_tds/result.c
187
+ - ext/tiny_tds/result.h
188
+ - ext/tiny_tds/tiny_tds_ext.c
189
+ - ext/tiny_tds/tiny_tds_ext.h
190
+ - lib/tiny_tds.rb
191
+ - lib/tiny_tds/2.7/tiny_tds.so
192
+ - lib/tiny_tds/3.0/tiny_tds.so
193
+ - lib/tiny_tds/3.1/tiny_tds.so
194
+ - lib/tiny_tds/3.2/tiny_tds.so
195
+ - lib/tiny_tds/3.3/tiny_tds.so
196
+ - lib/tiny_tds/3.4/tiny_tds.so
197
+ - lib/tiny_tds/bin.rb
198
+ - lib/tiny_tds/client.rb
199
+ - lib/tiny_tds/error.rb
200
+ - lib/tiny_tds/gem.rb
201
+ - lib/tiny_tds/result.rb
202
+ - lib/tiny_tds/version.rb
203
+ - patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff
204
+ - patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff
205
+ - patches/libiconv/1.14/1-avoid-gets-error.patch
206
+ - ports/aarch64-linux-gnu/bin/defncopy
207
+ - ports/aarch64-linux-gnu/bin/tsql
208
+ - ports/aarch64-linux-gnu/lib/libsybdb.so.5
209
+ - setup_cimgruby_dev.sh
210
+ - start_dev.sh
211
+ - tasks/native_gem.rake
212
+ - tasks/package.rake
213
+ - tasks/ports.rake
214
+ - tasks/test.rake
215
+ - test/bin/install-freetds.sh
216
+ - test/bin/install-mssql.ps1
217
+ - test/bin/install-mssqltools.sh
218
+ - test/bin/install-openssl.sh
219
+ - test/bin/restore-from-native-gem.ps1
220
+ - test/bin/setup_tinytds_db.sh
221
+ - test/bin/setup_volume_permissions.sh
222
+ - test/client_test.rb
223
+ - test/gem_test.rb
224
+ - test/result_test.rb
225
+ - test/schema/1px.gif
226
+ - test/schema/sqlserver_2017.sql
227
+ - test/schema/sqlserver_azure.sql
228
+ - test/schema_test.rb
229
+ - test/sql/db-create.sql
230
+ - test/sql/db-login.sql
231
+ - test/test_helper.rb
232
+ - test/thread_test.rb
233
+ - tiny_tds.gemspec
234
+ homepage: http://github.com/rails-sqlserver/tiny_tds
235
+ licenses:
236
+ - MIT
237
+ metadata: {}
238
+ rdoc_options:
239
+ - "--charset=UTF-8"
240
+ require_paths:
241
+ - lib
242
+ required_ruby_version: !ruby/object:Gem::Requirement
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: '2.7'
247
+ - - "<"
248
+ - !ruby/object:Gem::Version
249
+ version: 3.5.dev
250
+ required_rubygems_version: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - ">="
253
+ - !ruby/object:Gem::Version
254
+ version: 3.3.22
255
+ requirements: []
256
+ rubygems_version: 3.6.2
257
+ specification_version: 4
258
+ summary: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
259
+ test_files: []