Update Vendored sqlite3-ruby
This commit is contained in:
parent
9874650e4b
commit
a71e64a172
26 changed files with 6501 additions and 4335 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue