luislavena-sqlite3-ruby 1.2.4.1 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -1
- data/Manifest.txt +0 -1
- data/lib/sqlite3/database.rb +13 -7
- data/lib/sqlite3/resultset.rb +5 -1
- data/lib/sqlite3/statement.rb +2 -2
- data/lib/sqlite3/version.rb +4 -4
- data/tasks/gem.rake +1 -1
- data/test/test_database.rb +24 -0
- data/test/test_integration_resultset.rb +17 -0
- metadata +2 -3
- data/ext/sqlite3_api/win32/build.bat +0 -7
data/History.txt
CHANGED
@@ -1,4 +1,14 @@
|
|
1
|
-
=== 1.2.
|
1
|
+
=== 1.2.5 / 25 Jul 2009
|
2
|
+
|
3
|
+
* Check for illegal nil before executing SQL [Erik Veenstra]
|
4
|
+
* Switch to Hoe for gem task management and packaging.
|
5
|
+
* Advertise rake-compiler as development dependency.
|
6
|
+
* Build gem binaries for Windows.
|
7
|
+
* Improved Ruby 1.9 support compatibility.
|
8
|
+
* Taint returned values. Patch #20325.
|
9
|
+
|
10
|
+
|
11
|
+
=== 1.2.4.1 (internal) / 5 Jul 2009
|
2
12
|
|
3
13
|
* Check for illegal nil before executing SQL [Erik Veenstra]
|
4
14
|
* Switch to Hoe for gem task management and packaging.
|
data/Manifest.txt
CHANGED
data/lib/sqlite3/database.rb
CHANGED
@@ -12,14 +12,12 @@ module SQLite3
|
|
12
12
|
#
|
13
13
|
# require 'sqlite3'
|
14
14
|
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
15
|
+
# SQLite3::Database.new( "data.db" ) do |db|
|
16
|
+
# db.execute( "select * from table" ) do |row|
|
17
|
+
# p row
|
18
|
+
# end
|
19
19
|
# end
|
20
20
|
#
|
21
|
-
# db.close
|
22
|
-
#
|
23
21
|
# It wraps the lower-level methods provides by the selected driver, and
|
24
22
|
# includes the Pragmas module for access to various pragma convenience
|
25
23
|
# methods.
|
@@ -69,7 +67,7 @@ module SQLite3
|
|
69
67
|
#
|
70
68
|
# By default, the new database will return result rows as arrays
|
71
69
|
# (#results_as_hash) and has type translation disabled (#type_translation=).
|
72
|
-
def initialize( file_name, options={} )
|
70
|
+
def initialize( file_name, options={} ) # :yields: db
|
73
71
|
utf16 = options.fetch(:utf16, false)
|
74
72
|
load_driver( options[:driver] )
|
75
73
|
|
@@ -83,6 +81,14 @@ module SQLite3
|
|
83
81
|
@type_translation = options.fetch(:type_translation,false)
|
84
82
|
@translator = nil
|
85
83
|
@transaction_active = false
|
84
|
+
|
85
|
+
if block_given?
|
86
|
+
begin
|
87
|
+
yield self
|
88
|
+
ensure
|
89
|
+
self.close
|
90
|
+
end
|
91
|
+
end
|
86
92
|
end
|
87
93
|
|
88
94
|
# Return +true+ if the string is a valid (ie, parsable) SQL statement, and
|
data/lib/sqlite3/resultset.rb
CHANGED
@@ -122,7 +122,10 @@ module SQLite3
|
|
122
122
|
|
123
123
|
if @db.results_as_hash
|
124
124
|
new_row = HashWithTypes[ *( @stmt.columns.zip( row ).to_a.flatten ) ]
|
125
|
-
row.each_with_index { |value,idx|
|
125
|
+
row.each_with_index { |value,idx|
|
126
|
+
value.taint
|
127
|
+
new_row[idx] = value
|
128
|
+
}
|
126
129
|
row = new_row
|
127
130
|
else
|
128
131
|
if row.respond_to?(:fields)
|
@@ -131,6 +134,7 @@ module SQLite3
|
|
131
134
|
row = ArrayWithTypesAndFields.new(row)
|
132
135
|
end
|
133
136
|
row.fields = @stmt.columns
|
137
|
+
row.each { |column| column.taint }
|
134
138
|
end
|
135
139
|
|
136
140
|
row.types = @stmt.types
|
data/lib/sqlite3/statement.rb
CHANGED
@@ -194,8 +194,8 @@ module SQLite3
|
|
194
194
|
# that this may execute the statement in order to obtain the metadata; this
|
195
195
|
# makes it a (potentially) expensive operation.
|
196
196
|
def types
|
197
|
-
get_metadata unless @types
|
198
|
-
|
197
|
+
get_metadata unless defined?(@types)
|
198
|
+
@types
|
199
199
|
end
|
200
200
|
|
201
201
|
# A convenience method for obtaining the metadata about the query. Note
|
data/lib/sqlite3/version.rb
CHANGED
@@ -4,13 +4,13 @@ module SQLite3
|
|
4
4
|
|
5
5
|
MAJOR = 1
|
6
6
|
MINOR = 2
|
7
|
-
TINY =
|
8
|
-
BUILD =
|
7
|
+
TINY = 5
|
8
|
+
BUILD = nil
|
9
9
|
|
10
|
-
STRING = [ MAJOR, MINOR, TINY, BUILD ].join( "." )
|
10
|
+
STRING = [ MAJOR, MINOR, TINY, BUILD ].compact.join( "." )
|
11
11
|
#:beta-tag:
|
12
12
|
|
13
|
-
VERSION = '1.2.
|
13
|
+
VERSION = '1.2.5'
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
data/tasks/gem.rake
CHANGED
@@ -23,7 +23,7 @@ HOE = Hoe.spec 'sqlite3-ruby' do
|
|
23
23
|
clean_globs.push('**/test.db')
|
24
24
|
end
|
25
25
|
|
26
|
-
file "#{HOE.spec.name}.gemspec" => ['Rakefile', 'tasks/gem.rake'] do |t|
|
26
|
+
file "#{HOE.spec.name}.gemspec" => ['Rakefile', 'tasks/gem.rake', 'lib/sqlite3/version.rb'] do |t|
|
27
27
|
puts "Generating #{t.name}"
|
28
28
|
File.open(t.name, 'w') { |f| f.puts HOE.spec.to_yaml }
|
29
29
|
end
|
data/test/test_database.rb
CHANGED
@@ -11,6 +11,18 @@ class TC_Database_Init < Test::Unit::TestCase
|
|
11
11
|
assert !db.results_as_hash
|
12
12
|
assert !db.type_translation
|
13
13
|
end
|
14
|
+
|
15
|
+
def test_new_with_block
|
16
|
+
driver = Driver.new
|
17
|
+
driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
|
18
|
+
Driver.stubs(:new).returns(driver)
|
19
|
+
returned_db = SQLite3::Database.new( "foo.db", :driver => Driver ) do |db|
|
20
|
+
assert !db.closed?
|
21
|
+
assert !db.results_as_hash
|
22
|
+
assert !db.type_translation
|
23
|
+
end
|
24
|
+
assert returned_db.closed?
|
25
|
+
end
|
14
26
|
|
15
27
|
def test_open
|
16
28
|
driver = Driver.new
|
@@ -22,6 +34,18 @@ class TC_Database_Init < Test::Unit::TestCase
|
|
22
34
|
assert !db.type_translation
|
23
35
|
end
|
24
36
|
|
37
|
+
def test_open_with_block
|
38
|
+
driver = Driver.new
|
39
|
+
driver.expects(:open).once.with('foo.db', false).returns([0, 'cookie'])
|
40
|
+
Driver.stubs(:new).returns(driver)
|
41
|
+
returned_db = SQLite3::Database.open( "foo.db", :driver => Driver ) do |db|
|
42
|
+
assert !db.closed?
|
43
|
+
assert !db.results_as_hash
|
44
|
+
assert !db.type_translation
|
45
|
+
end
|
46
|
+
assert returned_db.closed?
|
47
|
+
end
|
48
|
+
|
25
49
|
def test_with_type_translation
|
26
50
|
db = SQLite3::Database.open( "foo.db", :driver => Driver,
|
27
51
|
:type_translation => true )
|
@@ -105,6 +105,23 @@ class TC_ResultSet < Test::Unit::TestCase
|
|
105
105
|
@result.next )
|
106
106
|
end
|
107
107
|
|
108
|
+
def test_tainted_results_as_hash
|
109
|
+
@db.results_as_hash = true
|
110
|
+
@result.reset( 1 )
|
111
|
+
row = @result.next
|
112
|
+
row.each do |_, v|
|
113
|
+
assert_equal true, v.tainted?
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_tainted_row_values
|
118
|
+
@result.reset( 1 )
|
119
|
+
row = @result.next
|
120
|
+
row.each do |v|
|
121
|
+
assert_equal true, v.tainted?
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
108
125
|
def test_each
|
109
126
|
called = 0
|
110
127
|
@result.reset( 1, 2 )
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: luislavena-sqlite3-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-24 20:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -68,7 +68,6 @@ files:
|
|
68
68
|
- ext/sqlite3_api/extconf.rb
|
69
69
|
- ext/sqlite3_api/sqlite3_api.i
|
70
70
|
- ext/sqlite3_api/sqlite3_api_wrap.c
|
71
|
-
- ext/sqlite3_api/win32/build.bat
|
72
71
|
- faq/faq.rb
|
73
72
|
- faq/faq.yml
|
74
73
|
- lib/sqlite3.rb
|
@@ -1,7 +0,0 @@
|
|
1
|
-
REM This is not guaranteed to work, ever. It's just a little helper
|
2
|
-
REM script that I threw together to help me build the win32 version of
|
3
|
-
REM the library. If someone with more win32-fu than I wants to make
|
4
|
-
REM something more robust, please feel free! I'd love to include it.
|
5
|
-
REM -- Jamis Buck
|
6
|
-
|
7
|
-
cl /LD /Ie:\WinSDK\Include /Ic:\ruby\lib\ruby\1.8\i386-mswin32 /Ic:\ruby\sqlite3 /Ic:\ruby\src\ruby-1.8.4_2006-04-14 sqlite3_api_wrap.c /link /LIBPATH:c:\ruby\sqlite3 /LIBPATH:e:\WinSDK\Lib /LIBPATH:c:\ruby\lib sqlite3.lib msvcrt-ruby18.lib
|