ffi-mysql 1.0.0 → 1.1.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.
- data/.hgignore +7 -0
- data/.hgtags +2 -0
- data/History.markdown +8 -0
- data/README.markdown +3 -1
- data/announcement.txt +13 -0
- data/lib/ffi-mysql/error.rb +7 -0
- data/lib/ffi-mysql/mysql.rb +328 -16
- data/lib/ffi-mysql/mysql.rb.rej +10 -0
- data/lib/ffi-mysql/version.rb +1 -1
- data/test/test_mysql.rb +1 -2
- metadata +9 -6
- data/test/test_mysql.rb.orig +0 -1488
data/.hgignore
ADDED
data/.hgtags
CHANGED
data/History.markdown
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
+
1.1.0 / 2012-01-21
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* add several methods for compatibility with MySQL 5.0 and MySQL/Ruby
|
5
|
+
2.8.2
|
6
|
+
|
7
|
+
|
1
8
|
1.0.0 / 2010-04-21
|
2
9
|
------------------
|
3
10
|
|
4
11
|
* fix Fixnum size bugs
|
5
12
|
* update to mysql-ruby-2.8.2 test-suite
|
6
13
|
|
14
|
+
|
7
15
|
0.0.2 / 2010-03-08
|
8
16
|
------------------
|
9
17
|
|
data/README.markdown
CHANGED
@@ -31,7 +31,7 @@ for examples.
|
|
31
31
|
REQUIREMENTS
|
32
32
|
------------
|
33
33
|
|
34
|
-
* ffi
|
34
|
+
* ffi ~> 1.0
|
35
35
|
|
36
36
|
INSTALL
|
37
37
|
-------
|
@@ -44,6 +44,8 @@ ACKNOWLEDGEMENTS
|
|
44
44
|
Tomita Masahiro for his MySQL/Ruby and Ruby/MySQL gems from which some
|
45
45
|
of the code has been stolen.
|
46
46
|
|
47
|
+
Norman Meilick for implementing some missing methods.
|
48
|
+
|
47
49
|
LICENSE
|
48
50
|
-------
|
49
51
|
|
data/announcement.txt
ADDED
data/lib/ffi-mysql/error.rb
CHANGED
data/lib/ffi-mysql/mysql.rb
CHANGED
@@ -63,21 +63,56 @@ class Mysql
|
|
63
63
|
:type, FieldType)
|
64
64
|
end
|
65
65
|
|
66
|
-
|
66
|
+
def self.maybe_attach_function name, *args
|
67
|
+
attach_function name, *args
|
68
|
+
rescue FFI::NotFoundError => e
|
69
|
+
define_singleton_method(name) {|*a| raise e}
|
70
|
+
end
|
67
71
|
|
72
|
+
StmtAttrType = enum( :update_max_length, :cursor_type, :prefetch_rows )
|
68
73
|
attach_function :mysql_init, [:pointer], :pointer
|
69
74
|
attach_function :mysql_close, [:pointer], :void
|
75
|
+
attach_function :mysql_errno, [:pointer], :uint
|
70
76
|
attach_function :mysql_error, [:pointer], :string
|
77
|
+
attach_function :mysql_warning_count, [:pointer], :uint
|
78
|
+
attach_function :mysql_debug, [:string], :void
|
79
|
+
attach_function :mysql_dump_debug_info, [:pointer], :int
|
80
|
+
attach_function :mysql_ping, [:pointer], :int
|
81
|
+
attach_function :mysql_refresh, [:pointer, :uint ], :int
|
82
|
+
maybe_attach_function :mysql_reload, [:pointer], :int
|
83
|
+
attach_function :mysql_shutdown, [:pointer], :int
|
84
|
+
attach_function :mysql_change_user, [:pointer, :string, :string, :string], :char
|
85
|
+
attach_function :mysql_select_db, [:pointer, :string], :int
|
86
|
+
attach_function :mysql_thread_id, [:pointer], :ulong
|
87
|
+
attach_function :mysql_kill, [:pointer, :ulong], :int
|
88
|
+
attach_function :mysql_info, [:pointer], :string
|
89
|
+
attach_function :mysql_stat, [:pointer], :string
|
90
|
+
attach_function :mysql_character_set_name, [:pointer], :string
|
91
|
+
attach_function :mysql_set_character_set, [:pointer, :string], :int
|
71
92
|
attach_function :mysql_get_client_version, [], :int
|
72
93
|
attach_function :mysql_get_client_info, [], :string
|
73
94
|
attach_function :mysql_get_server_version, [:pointer], :int
|
74
95
|
attach_function :mysql_get_server_info, [:pointer], :string
|
96
|
+
attach_function :mysql_get_host_info, [:pointer], :string
|
97
|
+
attach_function :mysql_get_proto_info, [:pointer], :uint
|
98
|
+
attach_function :mysql_ssl_set, [:pointer, :string, :string, :string, :string, :string], :int
|
75
99
|
attach_function :mysql_real_connect, [:pointer, :string, :string, :string, :string, :uint, :string, :ulong], :pointer
|
100
|
+
attach_function :mysql_ping, [:pointer], :int
|
76
101
|
attach_function :mysql_options, [:pointer, :int, :pointer], :int
|
77
102
|
attach_function :mysql_set_server_option, [:pointer, :int], :int
|
103
|
+
attach_function :mysql_real_escape_string, [:pointer, :pointer, :char, :ulong], :ulong
|
78
104
|
attach_function :mysql_real_query, [:pointer, :string, :ulong], :int
|
105
|
+
attach_function :mysql_insert_id, [:pointer], :ulong_long
|
106
|
+
attach_function :mysql_list_dbs, [:pointer, :string], :pointer
|
107
|
+
attach_function :mysql_list_fields, [:pointer, :string, :string], :pointer
|
108
|
+
attach_function :mysql_list_processes, [:pointer], :pointer
|
109
|
+
attach_function :mysql_list_tables, [:pointer, :string], :pointer
|
110
|
+
attach_function :mysql_autocommit, [:pointer, :char], :char
|
111
|
+
attach_function :mysql_commit, [:pointer], :char
|
112
|
+
attach_function :mysql_rollback, [:pointer], :char
|
79
113
|
attach_function :mysql_field_count, [:pointer], :uint
|
80
114
|
attach_function :mysql_store_result, [:pointer], :pointer
|
115
|
+
attach_function :mysql_use_result, [:pointer], :pointer
|
81
116
|
attach_function :mysql_free_result, [:pointer], :void
|
82
117
|
attach_function :mysql_next_result, [:pointer], :int
|
83
118
|
attach_function :mysql_more_results, [:pointer], :bool
|
@@ -116,6 +151,7 @@ class Mysql
|
|
116
151
|
attach_function :mysql_stmt_sqlstate, [:pointer], :string
|
117
152
|
attach_function :mysql_stmt_errno, [:pointer], :uint
|
118
153
|
attach_function :mysql_stmt_error, [:pointer], :string
|
154
|
+
|
119
155
|
end
|
120
156
|
|
121
157
|
# Creates a new MySQL object.
|
@@ -142,12 +178,25 @@ class Mysql
|
|
142
178
|
def client_version
|
143
179
|
Mysql.client_version
|
144
180
|
end
|
181
|
+
alias get_client_version client_version
|
145
182
|
|
146
183
|
# @return [String] string containing the client's version
|
147
184
|
def self.client_info
|
148
185
|
C::mysql_get_client_info
|
149
186
|
end
|
150
187
|
|
188
|
+
# @return [String] string containing the client's version
|
189
|
+
def client_info
|
190
|
+
Mysql.client_info
|
191
|
+
end
|
192
|
+
alias get_client_info client_info
|
193
|
+
|
194
|
+
# Does a DBUG_PUSH with the given string.
|
195
|
+
def self.debug(arg)
|
196
|
+
C::mysql_debug(arg)
|
197
|
+
self
|
198
|
+
end
|
199
|
+
|
151
200
|
# Escape special character in MySQL.
|
152
201
|
# === Note
|
153
202
|
# In Ruby 1.8, this is not safe for multibyte charset such as 'SJIS'.
|
@@ -196,6 +245,22 @@ class Mysql
|
|
196
245
|
end
|
197
246
|
end
|
198
247
|
|
248
|
+
# Set SSL settings (must be called before real_connect)
|
249
|
+
#
|
250
|
+
# @param [String] key path to the key file
|
251
|
+
# @param [String] cert path to the certificate file
|
252
|
+
# @param [String] ca path to the certificate authority file
|
253
|
+
# @param [String] capath path name to a directory with SSL CA certificates in pem format
|
254
|
+
# @param [String] cipher list of permissible ciphers to use
|
255
|
+
#
|
256
|
+
# Any unused SSL parameters may be given as NULL.
|
257
|
+
def ssl_set(key, cert, ca, capath, cipher)
|
258
|
+
if C::mysql_ssl_set(@mysql, key, cert, ca, capath, cipher) != 0
|
259
|
+
raise Error.new(error, errno)
|
260
|
+
end
|
261
|
+
self
|
262
|
+
end
|
263
|
+
|
199
264
|
# Opens a new connection to a MySQL server.
|
200
265
|
#
|
201
266
|
# @param [String] host the MySQL server
|
@@ -210,7 +275,7 @@ class Mysql
|
|
210
275
|
ObjectSpace.define_finalizer( self, Mysql.finalizer(@mysql, @mysql_free))
|
211
276
|
|
212
277
|
if C::mysql_real_connect( @mysql, host, user, passwd, db, port, sock, flag ).null?
|
213
|
-
raise Mysql::Error,
|
278
|
+
raise Mysql::Error, error
|
214
279
|
end
|
215
280
|
|
216
281
|
@connected = true
|
@@ -224,8 +289,154 @@ class Mysql
|
|
224
289
|
@mysql = nil
|
225
290
|
@mysql_free[0] = true
|
226
291
|
@connected = false
|
292
|
+
self
|
293
|
+
end
|
294
|
+
|
295
|
+
# Checks whether the connection to the server is working.
|
296
|
+
def ping
|
297
|
+
if C::mysql_ping(@mysql) != 0
|
298
|
+
raise Error.new(error, errno)
|
299
|
+
end
|
300
|
+
self
|
301
|
+
end
|
302
|
+
|
303
|
+
# @return [Integer] error code for the most recently failed API function
|
304
|
+
def errno
|
305
|
+
C::mysql_errno(@mysql)
|
306
|
+
end
|
307
|
+
|
308
|
+
# @return [String] error message for the most recently failing API function
|
309
|
+
def error
|
310
|
+
C::mysql_error(@mysql)
|
311
|
+
end
|
312
|
+
|
313
|
+
# @return [Integer] the number of errors, warnings and notes generated during the previous SQL statement
|
314
|
+
def warning_count
|
315
|
+
C::mysql_warning_count(@mysql)
|
316
|
+
end
|
317
|
+
|
318
|
+
# Write debug information to the log
|
319
|
+
# Raises an error when there is a problem, otherwise returns self.
|
320
|
+
def dump_debug_info
|
321
|
+
if C::mysql_dump_debug_info(@mysql) != 0
|
322
|
+
raise Error.new(error, errno)
|
323
|
+
end
|
324
|
+
self
|
325
|
+
end
|
326
|
+
|
327
|
+
# Check whether the connection to the server is working.
|
328
|
+
# Raises an error when there is a problem, otherwise returns self.
|
329
|
+
def ping
|
330
|
+
if C::mysql_ping(@mysql) != 0
|
331
|
+
raise Error.new(error, errno)
|
332
|
+
end
|
333
|
+
self
|
334
|
+
end
|
335
|
+
|
336
|
+
# Flush tables or caches, or reset replication server information.
|
337
|
+
#
|
338
|
+
# @param [Integer] options bit mask of REFRESH_... values
|
339
|
+
def refresh(options)
|
340
|
+
if C::mysql_refresh(@mysql, options) != 0
|
341
|
+
raise Error.new(error, errno)
|
342
|
+
end
|
343
|
+
self
|
344
|
+
end
|
345
|
+
|
346
|
+
# Asks the MySQL server to reload the grant table.
|
347
|
+
def reload
|
348
|
+
if C::mysql_reload(@mysql) != 0
|
349
|
+
raise Error.new(error, errno)
|
350
|
+
end
|
351
|
+
self
|
352
|
+
end
|
353
|
+
|
354
|
+
# Asks the MySQL server to shut down.
|
355
|
+
def shutdown
|
356
|
+
if C::mysql_shutdown(@mysql) != 0
|
357
|
+
raise Error.new(error, errno)
|
358
|
+
end
|
359
|
+
self
|
360
|
+
end
|
361
|
+
|
362
|
+
# Change the user and change to a different database
|
363
|
+
#
|
364
|
+
# @param [String] user user to change to
|
365
|
+
# @param [String] password password of user
|
366
|
+
# @param [String] db name of database to change to
|
367
|
+
#
|
368
|
+
# Raises an error when there is a problem, otherwise returns self.
|
369
|
+
def change_user(user, password, db)
|
370
|
+
if C::mysql_change_user(@mysql, user, password, db) != 0
|
371
|
+
raise Error.new(error, errno)
|
372
|
+
end
|
373
|
+
self
|
374
|
+
end
|
375
|
+
|
376
|
+
# Change the current database
|
377
|
+
#
|
378
|
+
# @param [String] db name of database to change to
|
379
|
+
#
|
380
|
+
# Raises an error when there is a problem, otherwise returns self.
|
381
|
+
def select_db(db)
|
382
|
+
if C::mysql_select_db(@mysql, db) != 0
|
383
|
+
raise Error.new(error, errno)
|
384
|
+
end
|
385
|
+
self
|
227
386
|
end
|
228
387
|
|
388
|
+
# Returns the thread ID of the current connection
|
389
|
+
# @return [Integer] thread id of the current connection
|
390
|
+
def thread_id
|
391
|
+
C::mysql_thread_id(@mysql)
|
392
|
+
end
|
393
|
+
|
394
|
+
# Asks the server to kill the specified thread.
|
395
|
+
# @param [Integer] pid thread id to kill
|
396
|
+
def kill(pid)
|
397
|
+
if C::mysql_kill(@mysql, pid) != 0
|
398
|
+
raise Error.new(error, errno)
|
399
|
+
end
|
400
|
+
self
|
401
|
+
end
|
402
|
+
|
403
|
+
# Return information about the most recently executed statement
|
404
|
+
# @return [String] information about statement
|
405
|
+
def info
|
406
|
+
C::mysql_info(@mysql)
|
407
|
+
end
|
408
|
+
|
409
|
+
# Return information about the server status
|
410
|
+
# @return [String] string describing the server status
|
411
|
+
def stat
|
412
|
+
C::mysql_stat(@mysql)
|
413
|
+
end
|
414
|
+
|
415
|
+
# @return [String] default character set name for the current connection
|
416
|
+
def character_set_name
|
417
|
+
C::mysql_character_set_name(@mysql)
|
418
|
+
end
|
419
|
+
|
420
|
+
# Set default character set for the current connection.
|
421
|
+
# @param [String] csname default character set to use
|
422
|
+
def set_character_set(csname)
|
423
|
+
if C::mysql_set_character_set(@mysql, csname) != 0
|
424
|
+
raise Error.new(error, errno)
|
425
|
+
end
|
426
|
+
self
|
427
|
+
end
|
428
|
+
|
429
|
+
# Returns a legal SQL string to be used in SQL statements
|
430
|
+
# @param [String] str The string to be escaped
|
431
|
+
# @return [String] The escaped string
|
432
|
+
def real_escape_string(str)
|
433
|
+
to = FFI::MemoryPointer.new(str.size * 2 + 1, 1, false)
|
434
|
+
len = C::mysql_real_escape_string(@mysql, to, str, str.size)
|
435
|
+
to.read_string(len)
|
436
|
+
end
|
437
|
+
alias :escape_string :real_escape_string
|
438
|
+
alias :quote :real_escape_string
|
439
|
+
|
229
440
|
# @return [Integer] the version of the server
|
230
441
|
def server_version
|
231
442
|
C::mysql_get_server_version(@mysql)
|
@@ -238,12 +449,23 @@ class Mysql
|
|
238
449
|
end
|
239
450
|
alias get_server_info server_info
|
240
451
|
|
452
|
+
# @return [String] string containing the host name and connection type
|
453
|
+
def host_info
|
454
|
+
C::mysql_get_host_info(@mysql)
|
455
|
+
end
|
456
|
+
alias get_host_info host_info
|
457
|
+
|
458
|
+
# @return [Integer] containing the current connection's procol version
|
459
|
+
def proto_info
|
460
|
+
C::mysql_get_proto_info(@mysql)
|
461
|
+
end
|
462
|
+
alias get_proto_info proto_info
|
463
|
+
|
241
464
|
# @return [String] the SQLSTATE error code for the most recent statement
|
242
465
|
def sqlstate
|
243
466
|
C::mysql_sqlstate(@mysql)
|
244
467
|
end
|
245
468
|
|
246
|
-
|
247
469
|
# Sets extra connection options.
|
248
470
|
#
|
249
471
|
# @param [Integer] option the option to set
|
@@ -262,7 +484,7 @@ class Mysql
|
|
262
484
|
else
|
263
485
|
raise ArgumentError, "value must one of [String, Integer, nil, true, false]"
|
264
486
|
end
|
265
|
-
raise Error,
|
487
|
+
raise Error.new(error, errno) if result != 0
|
266
488
|
self
|
267
489
|
end
|
268
490
|
|
@@ -271,12 +493,11 @@ class Mysql
|
|
271
493
|
# @param [Integer] option server option
|
272
494
|
def set_server_option( option )
|
273
495
|
if C::mysql_set_server_option( @mysql, option ) != 0
|
274
|
-
raise Error,
|
496
|
+
raise Error.new(error, errno)
|
275
497
|
end
|
276
498
|
self
|
277
499
|
end
|
278
500
|
|
279
|
-
|
280
501
|
# Sets the auto-reconnect flag of mysql
|
281
502
|
#
|
282
503
|
# @param [true,false] The new reconnect state.
|
@@ -291,6 +512,89 @@ class Mysql
|
|
291
512
|
@reconnect
|
292
513
|
end
|
293
514
|
|
515
|
+
# Returns the value generated for an AUTO_INCREMENT column by
|
516
|
+
# the previous INSERT or UPDATE statement.
|
517
|
+
def insert_id
|
518
|
+
C::mysql_insert_id(@mysql)
|
519
|
+
end
|
520
|
+
|
521
|
+
# Returns a list of all databases on the server matching a pattern
|
522
|
+
# @param [String,nil] wild The pattern the databases must match
|
523
|
+
def list_dbs(wild = nil)
|
524
|
+
res = C::mysql_list_dbs(@mysql, wild)
|
525
|
+
if res.null?
|
526
|
+
raise Error.new(error, errno)
|
527
|
+
end
|
528
|
+
res = Result.new(@mysql, res)
|
529
|
+
dbs = []
|
530
|
+
res.each do |row|
|
531
|
+
dbs << row[0]
|
532
|
+
end
|
533
|
+
dbs
|
534
|
+
end
|
535
|
+
|
536
|
+
# Returns a result consisting the field names in the given table matching a pattern
|
537
|
+
# @param [String] table The table whose fields should be returned
|
538
|
+
# @param [String,nil] wild The pattern the field names must match
|
539
|
+
# @return [Result] A MySQL result of the field names
|
540
|
+
def list_fields(table, wild = nil)
|
541
|
+
res = C::mysql_list_fields(@mysql, table, wild)
|
542
|
+
if res.null?
|
543
|
+
raise Error.new(error, errno)
|
544
|
+
end
|
545
|
+
Result.new(@mysql, res)
|
546
|
+
end
|
547
|
+
|
548
|
+
# Returns a result describing the current server threads
|
549
|
+
# @return [Result] A MySQL result of the current server threads
|
550
|
+
def list_processes
|
551
|
+
res = C::mysql_list_processes(@mysql)
|
552
|
+
if res.null?
|
553
|
+
raise Error.new(error, errno)
|
554
|
+
end
|
555
|
+
Result.new(@mysql, res)
|
556
|
+
end
|
557
|
+
|
558
|
+
# Returns a result consisting the table names matching a pattern
|
559
|
+
# @param [String,nil] wild The pattern the table names must match
|
560
|
+
# @return [Array<String>] The table names
|
561
|
+
def list_tables(wild = nil)
|
562
|
+
res = C::mysql_list_tables(@mysql, wild)
|
563
|
+
if res.null?
|
564
|
+
raise Error.new(error, errno)
|
565
|
+
end
|
566
|
+
res = Result.new(@mysql, res)
|
567
|
+
tables = []
|
568
|
+
res.each do |row|
|
569
|
+
tables << row[0]
|
570
|
+
end
|
571
|
+
tables
|
572
|
+
end
|
573
|
+
|
574
|
+
# Sets autocommit mode on if mode is true, off if mode is false.
|
575
|
+
def autocommit(mode)
|
576
|
+
if C::mysql_autocommit(@mysql, mode ? 1 : 0) != 0
|
577
|
+
raise Error.new(error, errno)
|
578
|
+
end
|
579
|
+
self
|
580
|
+
end
|
581
|
+
|
582
|
+
# Commit transaction
|
583
|
+
def commit
|
584
|
+
if C::mysql_commit(@mysql) != 0
|
585
|
+
raise Error.new(error, errno)
|
586
|
+
end
|
587
|
+
self
|
588
|
+
end
|
589
|
+
|
590
|
+
# Rollback the current transaction
|
591
|
+
def rollback
|
592
|
+
if C::mysql_rollback(@mysql) != 0
|
593
|
+
raise Error.new(error, errno)
|
594
|
+
end
|
595
|
+
self
|
596
|
+
end
|
597
|
+
|
294
598
|
# Execute a query statement.
|
295
599
|
#
|
296
600
|
# @param [String] sql the SQL statement
|
@@ -300,7 +604,7 @@ class Mysql
|
|
300
604
|
def query(sql)
|
301
605
|
raise Error, "Not connected" unless @connected
|
302
606
|
if C::mysql_real_query(@mysql, sql, sql.size) != 0
|
303
|
-
raise Error,
|
607
|
+
raise Error.new(error, errno)
|
304
608
|
end
|
305
609
|
|
306
610
|
if block_given?
|
@@ -321,11 +625,26 @@ class Mysql
|
|
321
625
|
self
|
322
626
|
end
|
323
627
|
end
|
628
|
+
alias real_query query
|
324
629
|
|
325
630
|
# Stores the current result in a result set.
|
326
631
|
# @return [Result] the result set
|
327
632
|
def store_result
|
328
|
-
|
633
|
+
res = C::mysql_store_result(@mysql)
|
634
|
+
if res.null?
|
635
|
+
raise Error.new(error, errno)
|
636
|
+
end
|
637
|
+
Result.new(@mysql, res)
|
638
|
+
end
|
639
|
+
|
640
|
+
# Initialize result set retrieval but do not read data.
|
641
|
+
# @return [Result] the result set
|
642
|
+
def use_result
|
643
|
+
res = C::mysql_use_result(@mysql)
|
644
|
+
if res.null?
|
645
|
+
raise Error.new(error, errno)
|
646
|
+
end
|
647
|
+
Result.new(@mysql, res)
|
329
648
|
end
|
330
649
|
|
331
650
|
# Advances to the next result set.
|
@@ -337,7 +656,7 @@ class Mysql
|
|
337
656
|
elsif result < 0
|
338
657
|
false
|
339
658
|
else
|
340
|
-
raise Error,
|
659
|
+
raise Error.new(error, errno)
|
341
660
|
end
|
342
661
|
end
|
343
662
|
|
@@ -368,11 +687,4 @@ class Mysql
|
|
368
687
|
def prepare( stmt )
|
369
688
|
stmt_init.prepare(stmt)
|
370
689
|
end
|
371
|
-
|
372
|
-
# Returns the current error message.
|
373
|
-
def error_msg
|
374
|
-
C::mysql_error(@mysql)
|
375
|
-
end
|
376
|
-
private :error_msg
|
377
|
-
|
378
690
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
--- mysql.rb
|
2
|
+
+++ mysql.rb
|
3
|
+
@@ -74,6 +74,7 @@
|
4
|
+
attach_function :mysql_ping, [:pointer], :int
|
5
|
+
attach_function :mysql_refresh, [:pointer, :uint ], :int
|
6
|
+
attach_function :mysql_reload, [:pointer], :int
|
7
|
+
+ attach_function :mysql_shutdown, [:pointer], :int
|
8
|
+
attach_function :mysql_change_user, [:pointer, :string, :string, :string], :char
|
9
|
+
attach_function :mysql_select_db, [:pointer, :string], :int
|
10
|
+
attach_function :mysql_thread_id, [:pointer], :ulong
|
data/lib/ffi-mysql/version.rb
CHANGED
data/test/test_mysql.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
#!/usr/local/bin/ruby
|
2
|
-
# $Id: test.rb 244 2009-02-01 08:43:39Z tommy $
|
3
2
|
|
4
3
|
require "test/unit"
|
5
4
|
require 'ostruct'
|
@@ -30,7 +29,7 @@ class TC_Mysql < Test::Unit::TestCase
|
|
30
29
|
end
|
31
30
|
|
32
31
|
def test_version()
|
33
|
-
assert_equal("1.
|
32
|
+
assert_equal("1.1.0", Mysql::VERSION)
|
34
33
|
end
|
35
34
|
|
36
35
|
def test_init()
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: ffi-mysql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.
|
5
|
+
version: 1.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Frank Fischer
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2012-01-21 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 3.
|
35
|
+
version: 3.7.3
|
36
36
|
type: :development
|
37
37
|
version_requirements: *id002
|
38
38
|
description: Pure Ruby FFI interface to MySQL.
|
@@ -41,24 +41,27 @@ executables: []
|
|
41
41
|
|
42
42
|
extensions: []
|
43
43
|
|
44
|
-
extra_rdoc_files:
|
45
|
-
|
44
|
+
extra_rdoc_files:
|
45
|
+
- announcement.txt
|
46
|
+
- lib/ffi-mysql/mysql.rb.rej
|
46
47
|
files:
|
48
|
+
- .hgignore
|
47
49
|
- .hgtags
|
48
50
|
- History.markdown
|
49
51
|
- README.markdown
|
50
52
|
- Rakefile
|
53
|
+
- announcement.txt
|
51
54
|
- lib/ffi-mysql.rb
|
52
55
|
- lib/ffi-mysql/constants.rb
|
53
56
|
- lib/ffi-mysql/error.rb
|
54
57
|
- lib/ffi-mysql/field.rb
|
55
58
|
- lib/ffi-mysql/mysql.rb
|
59
|
+
- lib/ffi-mysql/mysql.rb.rej
|
56
60
|
- lib/ffi-mysql/result.rb
|
57
61
|
- lib/ffi-mysql/stmt.rb
|
58
62
|
- lib/ffi-mysql/time.rb
|
59
63
|
- lib/ffi-mysql/version.rb
|
60
64
|
- test/test_mysql.rb
|
61
|
-
- test/test_mysql.rb.orig
|
62
65
|
has_rdoc: true
|
63
66
|
homepage: http://bitbucket.org/lyro/ffi-mysql
|
64
67
|
licenses: []
|