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.
@@ -1,4 +1,14 @@
1
- === 1.2.4.1 / 5 Jul 2009
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.
@@ -7,7 +7,6 @@ Rakefile
7
7
  ext/sqlite3_api/extconf.rb
8
8
  ext/sqlite3_api/sqlite3_api.i
9
9
  ext/sqlite3_api/sqlite3_api_wrap.c
10
- ext/sqlite3_api/win32/build.bat
11
10
  faq/faq.rb
12
11
  faq/faq.yml
13
12
  lib/sqlite3.rb
@@ -12,14 +12,12 @@ module SQLite3
12
12
  #
13
13
  # require 'sqlite3'
14
14
  #
15
- # db = SQLite3::Database.new( "data.db" )
16
- #
17
- # db.execute( "select * from table" ) do |row|
18
- # p row
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
@@ -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| new_row[idx] = value }
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
@@ -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
- return @types
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
@@ -4,13 +4,13 @@ module SQLite3
4
4
 
5
5
  MAJOR = 1
6
6
  MINOR = 2
7
- TINY = 4
8
- BUILD = 1
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.4.1'
13
+ VERSION = '1.2.5'
14
14
  end
15
15
 
16
16
  end
@@ -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
@@ -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.1
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-04 20:00:00 -07:00
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