diff options
-rw-r--r-- | lib/sqlite3/statement.rb | 2 | ||||
-rw-r--r-- | test/tc_integration.rb | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlite3/statement.rb b/lib/sqlite3/statement.rb index 0de27f1..20de9ee 100644 --- a/lib/sqlite3/statement.rb +++ b/lib/sqlite3/statement.rb @@ -117,6 +117,8 @@ module SQLite3 must_be_open! if Fixnum === param case value + when Bignum then + @driver.bind_int64( @handle, param, value ) when Integer then @driver.bind_int( @handle, param, value ) when Numeric then diff --git a/test/tc_integration.rb b/test/tc_integration.rb index e197006..8bb4c4a 100644 --- a/test/tc_integration.rb +++ b/test/tc_integration.rb @@ -743,6 +743,17 @@ module Integration assert_equal 1, @stmt.execute!.length end + define_method( "test_bind_param_with_various_types" ) do + @db.transaction do + @db.execute "create table all_types ( a integer primary key, b float, c string, d integer )" + @db.execute "insert into all_types ( b, c, d ) values ( 1.4, 'hello', 68719476735 )" + end + + assert_equal 1, @db.execute( "select * from all_types where b = ?", 1.4 ).length + assert_equal 1, @db.execute( "select * from all_types where c = ?", 'hello').length + assert_equal 1, @db.execute( "select * from all_types where d = ?", 68719476735).length + end + define_method( "test_execute_no_bind_no_block" ) do assert_instance_of SQLite3::ResultSet, @stmt.execute end |