Update Vendored sqlite3-ruby

This commit is contained in:
Jacques Distler 2009-12-22 20:48:32 -06:00
parent 9874650e4b
commit a71e64a172
26 changed files with 6501 additions and 4335 deletions

View file

@ -12,14 +12,12 @@ module SQLite3
#
# require 'sqlite3'
#
# db = SQLite3::Database.new( "data.db" )
#
# db.execute( "select * from table" ) do |row|
# p row
# SQLite3::Database.new( "data.db" ) do |db|
# db.execute( "select * from table" ) do |row|
# p row
# end
# end
#
# db.close
#
# It wraps the lower-level methods provides by the selected driver, and
# includes the Pragmas module for access to various pragma convenience
# methods.
@ -69,7 +67,7 @@ module SQLite3
#
# By default, the new database will return result rows as arrays
# (#results_as_hash) and has type translation disabled (#type_translation=).
def initialize( file_name, options={} )
def initialize( file_name, options={} ) # :yields: db
utf16 = options.fetch(:utf16, false)
load_driver( options[:driver] )
@ -83,6 +81,14 @@ module SQLite3
@type_translation = options.fetch(:type_translation,false)
@translator = nil
@transaction_active = false
if block_given?
begin
yield self
ensure
self.close
end
end
end
# Return +true+ if the string is a valid (ie, parsable) SQL statement, and

View file

@ -10,7 +10,7 @@ module SQLite3 ; module Driver; module DL;
"libsqlite3.dylib"
when /linux/, /freebsd|netbsd|openbsd|dragonfly/, /solaris/
"libsqlite3.so"
when /win32/
when /mswin|mingw/
"sqlite3.dll"
else
abort <<-EOF

View file

@ -1,4 +1,12 @@
require 'sqlite3_api'
# support multiple ruby version (fat binaries under windows)
begin
require 'sqlite3_api'
rescue LoadError
if RUBY_PLATFORM =~ /mingw|mswin/ then
RUBY_VERSION =~ /(\d+.\d+)/
require "#{$1}/sqlite3_api"
end
end
module SQLite3 ; module Driver ; module Native

View file

@ -122,7 +122,10 @@ module SQLite3
if @db.results_as_hash
new_row = HashWithTypes[ *( @stmt.columns.zip( row ).to_a.flatten ) ]
row.each_with_index { |value,idx| new_row[idx] = value }
row.each_with_index { |value,idx|
value.taint
new_row[idx] = value
}
row = new_row
else
if row.respond_to?(:fields)
@ -131,6 +134,7 @@ module SQLite3
row = ArrayWithTypesAndFields.new(row)
end
row.fields = @stmt.columns
row.each { |column| column.taint }
end
row.types = @stmt.types

View file

@ -31,6 +31,7 @@ module SQLite3
# statement (i.e., separated by semicolons), then the #remainder property
# will be set to the trailing text.
def initialize( db, sql, utf16=false )
raise ArgumentError, "nil argument passed as sql text" unless sql
@db = db
@driver = @db.driver
@closed = false
@ -193,8 +194,8 @@ module SQLite3
# that this may execute the statement in order to obtain the metadata; this
# makes it a (potentially) expensive operation.
def types
get_metadata unless @types
return @types
get_metadata unless defined?(@types)
@types
end
# A convenience method for obtaining the metadata about the query. Note

View file

@ -4,11 +4,13 @@ module SQLite3
MAJOR = 1
MINOR = 2
TINY = 4
TINY = 5
BUILD = nil
STRING = [ MAJOR, MINOR, TINY ].join( "." )
STRING = [ MAJOR, MINOR, TINY, BUILD ].compact.join( "." )
#:beta-tag:
VERSION = '1.2.5'
end
end