update the RB_UBF_DL for more recent versions of Ruby 1.9, which doesn't have it

This commit is contained in:
Roger Pack 2008-09-08 12:39:00 -06:00
parent 16d9c043c2
commit 02e265072c
3 changed files with 7 additions and 11 deletions

View File

@ -31,8 +31,9 @@ else
exit 1 exit 1
end end
if have_func('rb_thread_blocking_region') and have_macro('RB_UBF_DFL', 'ruby.h') # check for 1.9
flags << "-DHAVE_TBR" if have_func('rb_thread_blocking_region') and have_macro('RUBY_UBF_IO', 'ruby.h')
$CFLAGS += " -DHAVE_TBR "
end end
# make mysql constant # make mysql constant
@ -71,9 +72,4 @@ File.open('error_const.h', 'w') do |f|
end end
end end
# check for 1.9
if have_func('rb_thread_blocking_region') and have_macro('RB_UBF_DFL', 'ruby.h')
$CFLAGS += " -DHAVE_TBR"
end
create_makefile("mysql") create_makefile("mysql")

View File

@ -711,17 +711,16 @@ static VALUE store_result(VALUE obj)
MYSQL_RES* res = NULL; MYSQL_RES* res = NULL;
#ifndef HAVE_TBR #ifndef HAVE_TBR
res = mysql_store_result(m); res = mysql_store_result(m);
//store_result_to_location(m, &res);
#else #else
mysql_result_to_here_t linker; mysql_result_to_here_t linker;
linker.mysql_instance = m; linker.mysql_instance = m;
linker.store_it_here = &res; linker.store_it_here = &res;
//store_result_to_location((void *) &linker); rb_thread_blocking_region(store_result_to_location, (void *) &linker, RUBY_UBF_IO, 0); /* not sure if this should be RUBY_UBF_IO or RUBY_UBF_PROCESS here -- see Ruby 1.9 ChangeLog */
rb_thread_blocking_region(store_result_to_location, (void *) &linker, RB_UBF_DFL, 0);
#endif #endif
if (res == NULL) if (res == NULL)
mysql_raise(m); mysql_raise(m);
return mysqlres2obj(res); return mysqlres2obj(res);
} }

View File

@ -1,7 +1,8 @@
# shows the effect of using .all_hashes instead of looping on each hash # shows the effect of using .all_hashes instead of looping on each hash
# run it by substiting in a 'long' [many row] query for the query variable and toggling use_all_hashes here at the top # run it by substiting in a 'long' [many row] query for the query variable and toggling use_all_hashes here at the top
# note that we load all the rows first, then run .all_hashes on the result [to see more easily the effect of all hashes] # note that we load all the rows first, then run .all_hashes on the result [to see more easily the effect of all hashes]
# on my machine and a 200_000 row table, it took 3.38s versus 3.65s # on my machine and a 200_000 row table, it took 3.38s versus 3.65s for the old .each_hash way [note also that .each_hash is
# almost as fast, now, as .all_hashes--they've both been optimized]
require 'mysqlplus' require 'mysqlplus'
use_the_all_hashes_method = true use_the_all_hashes_method = true