luislavena-sqlite3-ruby 1.2.4.1 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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