amalgalite 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +17 -3
- data/ext/amalgalite/amalgalite3.c +10 -0
- data/ext/amalgalite/amalgalite3_database.c +4 -3
- data/ext/amalgalite/amalgalite3_requires_bootstrap.c +1 -1
- data/ext/amalgalite/amalgalite3_statement.c +15 -5
- data/ext/amalgalite/sqlite3.c +7247 -3690
- data/ext/amalgalite/sqlite3.h +226 -108
- data/gemspec.rb +2 -0
- data/lib/amalgalite/database.rb +4 -0
- data/lib/amalgalite/schema.rb +11 -4
- data/lib/amalgalite/statement.rb +1 -1
- data/lib/amalgalite/version.rb +1 -1
- data/spec/database_spec.rb +27 -5
- data/spec/function_spec.rb +6 -3
- data/spec/schema_spec.rb +32 -15
- data/spec/sqlite3/status_spec.rb +5 -1
- data/spec/sqlite3/version_spec.rb +5 -5
- data/tasks/extension.rake +53 -0
- metadata +121 -82
- data/examples/gems.db +0 -0
data/gemspec.rb
CHANGED
@@ -26,6 +26,8 @@ Amalgalite::GEM_SPEC = Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency("configuration", "~> 0.0.5")
|
27
27
|
spec.add_development_dependency("rspec", "~> 1.2.2")
|
28
28
|
spec.add_development_dependency("rake-compiler", "~> 0.5.0")
|
29
|
+
spec.add_development_dependency('archive-tar-minitar', "~> 0.5.2")
|
30
|
+
spec.add_development_dependency('rcov', "~> 0.8.1.2.0")
|
29
31
|
|
30
32
|
if ext_conf = Configuration.for_if_exist?("extension") then
|
31
33
|
spec.extensions << ext_conf.configs
|
data/lib/amalgalite/database.rb
CHANGED
data/lib/amalgalite/schema.rb
CHANGED
@@ -17,6 +17,7 @@ module Amalgalite
|
|
17
17
|
|
18
18
|
attr_reader :catalog
|
19
19
|
attr_reader :schema
|
20
|
+
attr_reader :schema_version
|
20
21
|
attr_writer :dirty
|
21
22
|
attr_reader :db
|
22
23
|
|
@@ -27,21 +28,27 @@ module Amalgalite
|
|
27
28
|
@db = db
|
28
29
|
@catalog = catalog
|
29
30
|
@schema = schema
|
31
|
+
@schema_version = nil
|
30
32
|
@tables = {}
|
31
33
|
@views = {}
|
32
|
-
@dirty = true
|
33
34
|
load_schema!
|
34
35
|
end
|
35
36
|
|
36
|
-
def dirty?()
|
37
|
-
|
37
|
+
def dirty?()
|
38
|
+
return (@schema_version != self.current_version)
|
39
|
+
end
|
40
|
+
|
41
|
+
def current_version
|
42
|
+
@db.first_value_from("PRAGMA schema_version")
|
43
|
+
end
|
38
44
|
|
39
45
|
#
|
40
46
|
# load the schema from the database
|
41
47
|
def load_schema!
|
42
48
|
load_tables
|
43
49
|
load_views
|
44
|
-
@
|
50
|
+
@schema_version = self.current_version
|
51
|
+
nil
|
45
52
|
end
|
46
53
|
|
47
54
|
##
|
data/lib/amalgalite/statement.rb
CHANGED
@@ -322,7 +322,7 @@ module Amalgalite
|
|
322
322
|
# column. The origin column is the original database.table.column the value
|
323
323
|
# comes from.
|
324
324
|
#
|
325
|
-
# The full meta information from
|
325
|
+
# The full meta information from the origin column is also obtained for help
|
326
326
|
# in doing type conversion.
|
327
327
|
#
|
328
328
|
# As iteration over the row meta informatio happens, record if the special
|
data/lib/amalgalite/version.rb
CHANGED
data/spec/database_spec.rb
CHANGED
@@ -352,26 +352,48 @@ describe Amalgalite::Database do
|
|
352
352
|
|
353
353
|
it "can interrupt another thread that is also running in this database" do
|
354
354
|
executions = 0
|
355
|
+
control_queue = Queue.new
|
355
356
|
other = Thread.new( @iso_db ) do |db|
|
357
|
+
looping_sent = false
|
358
|
+
c = 0
|
356
359
|
loop do
|
357
360
|
begin
|
358
|
-
db.execute("select count(
|
361
|
+
db.execute("select count(*) from subcountry")
|
359
362
|
executions += 1
|
363
|
+
if not looping_sent then
|
364
|
+
control_queue.enq :looping
|
365
|
+
looping_sent = true
|
366
|
+
end
|
367
|
+
if c > 20000 then
|
368
|
+
break
|
369
|
+
end
|
370
|
+
c += 1
|
360
371
|
rescue => e
|
361
|
-
Thread.current[:
|
372
|
+
Thread.current[:loop_count] = c
|
373
|
+
Thread.current[:had_error] = e.dup
|
374
|
+
control_queue.enq :boom
|
362
375
|
break
|
363
376
|
end
|
364
377
|
end
|
365
378
|
end
|
366
379
|
|
367
380
|
rudeness = Thread.new( @iso_db ) do |db|
|
368
|
-
|
369
|
-
|
381
|
+
sent = control_queue.deq
|
382
|
+
count = 0
|
383
|
+
loop do
|
384
|
+
@iso_db.interrupt!
|
385
|
+
break unless control_queue.empty?
|
386
|
+
if count > 20000 then
|
387
|
+
break
|
388
|
+
end
|
389
|
+
count += 1
|
390
|
+
end
|
370
391
|
end
|
371
392
|
|
372
393
|
rudeness.join
|
394
|
+
other.join
|
373
395
|
|
374
|
-
|
396
|
+
#$stdout.puts " looped #{other[:loop_count]} times"
|
375
397
|
other[:had_error].should be_an_instance_of( ::Amalgalite::SQLite3::Error )
|
376
398
|
other[:had_error].message.should =~ / interrupted/
|
377
399
|
end
|
data/spec/function_spec.rb
CHANGED
@@ -2,6 +2,8 @@ require 'rubygems'
|
|
2
2
|
require 'spec'
|
3
3
|
|
4
4
|
$: << File.expand_path(File.join(File.dirname(__FILE__),"..","lib"))
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__),"spec_helper.rb"))
|
5
7
|
require 'amalgalite'
|
6
8
|
require 'amalgalite/database'
|
7
9
|
|
@@ -67,10 +69,11 @@ describe "Scalar SQL Functions" do
|
|
67
69
|
|
68
70
|
it "does not allow outrageous arity" do
|
69
71
|
class FunctionTest3 < ::Amalgalite::Function
|
70
|
-
def
|
71
|
-
|
72
|
+
def initialize
|
73
|
+
super( 'ftest3', 128)
|
74
|
+
end
|
72
75
|
end
|
73
|
-
lambda { @iso_db.
|
76
|
+
lambda { @iso_db.define_function("ftest3", FunctionTest3.new) }.should raise_error( ::Amalgalite::SQLite3::Error, /SQLITE_ERROR .* Library used incorrectly/ )
|
74
77
|
end
|
75
78
|
|
76
79
|
it "raises an error if the function returns a complex Ruby object" do
|
data/spec/schema_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'spec'
|
3
3
|
|
4
|
+
require File.expand_path( File.join( File.dirname(__FILE__), 'spec_helper'))
|
4
5
|
$: << File.expand_path(File.join(File.dirname(__FILE__),"..","lib"))
|
5
6
|
require 'amalgalite'
|
6
7
|
require 'amalgalite/schema'
|
@@ -24,28 +25,21 @@ describe Amalgalite::Schema do
|
|
24
25
|
schema.tables.size.should eql(2)
|
25
26
|
end
|
26
27
|
|
27
|
-
it "lazily loads new table schema" do
|
28
|
-
@iso_db.schema.tables.size.should eql(2)
|
29
|
-
sql = "CREATE TABLE t1 ( a, b, c )"
|
30
|
-
@iso_db.execute( sql )
|
31
|
-
@iso_db.schema.tables.size.should eql(2)
|
32
|
-
@iso_db.schema.dirty!
|
33
|
-
@iso_db.schema.tables['t1'].column_names.should eql(%w[ a b c ])
|
34
|
-
@iso_db.schema.tables.size.should eql(3)
|
35
|
-
end
|
36
|
-
|
37
28
|
it "loads the views in the database" do
|
29
|
+
s = @iso_db.schema
|
38
30
|
sql = "CREATE VIEW v1 AS SELECT c.name, c.two_letter, s.name, s.subdivision FROM country AS c JOIN subcountry AS s ON c.two_letter = s.country"
|
39
31
|
@iso_db.execute( sql )
|
32
|
+
s.dirty?.should == true
|
40
33
|
@iso_db.schema.load_views
|
41
34
|
@iso_db.schema.views.size.should eql(1)
|
42
35
|
@iso_db.schema.views["v1"].sql.should eql(sql)
|
43
36
|
end
|
44
37
|
|
45
38
|
it "removes quotes from around default values in columns" do
|
39
|
+
s = @iso_db.schema
|
46
40
|
sql = "CREATE TABLE t1( d1 default 't' )"
|
47
41
|
@iso_db.execute( sql )
|
48
|
-
|
42
|
+
s.dirty?.should == true
|
49
43
|
tt = @iso_db.schema.tables['t1']
|
50
44
|
tt.columns['d1'].default_value.should == "t"
|
51
45
|
end
|
@@ -73,16 +67,16 @@ describe Amalgalite::Schema do
|
|
73
67
|
end
|
74
68
|
|
75
69
|
it "knows the primary key of a table even without an explicity unique index" do
|
70
|
+
s = @iso_db.schema
|
76
71
|
sql = "CREATE TABLE u( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , other text )"
|
77
72
|
@iso_db.execute( sql )
|
78
|
-
|
73
|
+
s.dirty?.should == true
|
79
74
|
ut = @iso_db.schema.tables['u']
|
80
75
|
ut.primary_key.should == [ ut.columns['id'] ]
|
81
76
|
end
|
82
77
|
|
83
78
|
it "knows the primary key of a temporary table" do
|
84
79
|
@iso_db.execute "CREATE TEMPORARY TABLE tt( a, b INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, c )"
|
85
|
-
@iso_db.schema.dirty!
|
86
80
|
tt = @iso_db.schema.load_table( 'tt' )
|
87
81
|
tt.primary_key.should == [ tt.columns['b'] ]
|
88
82
|
|
@@ -90,8 +84,9 @@ describe Amalgalite::Schema do
|
|
90
84
|
|
91
85
|
it "knows what the primary key of a table is when it is a multiple column primary key" do
|
92
86
|
sql = "CREATE TABLE m ( id1, id2, PRIMARY KEY (id2, id1) )"
|
87
|
+
s = @iso_db.schema
|
93
88
|
@iso_db.execute( sql )
|
94
|
-
|
89
|
+
s.dirty?.should == true
|
95
90
|
mt = @iso_db.schema.tables['m']
|
96
91
|
mt.primary_key.should == [ mt.columns['id2'], mt.columns['id1'] ]
|
97
92
|
end
|
@@ -110,9 +105,31 @@ describe Amalgalite::Schema do
|
|
110
105
|
subc.indexes['subcountry_country'].columns.first.should eql(@iso_db.schema.tables['subcountry'].columns['country'])
|
111
106
|
end
|
112
107
|
|
108
|
+
it "knows the schema is dirty when a table is created" do
|
109
|
+
s = @iso_db.schema
|
110
|
+
c = s.tables['country']
|
111
|
+
s.dirty?.should == false
|
112
|
+
@iso_db.execute( "create table x1( a, b )" )
|
113
|
+
s.dirty?.should == true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "knows the schema is dirty when a table is dropped" do
|
117
|
+
s = @iso_db.schema
|
118
|
+
c = s.tables['country']
|
119
|
+
@iso_db.execute( "create table x1( a, b )" )
|
120
|
+
s.dirty?.should == true
|
121
|
+
|
122
|
+
@iso_db.schema.load_schema!
|
123
|
+
s = @iso_db.schema
|
124
|
+
|
125
|
+
s.dirty?.should == false
|
126
|
+
@iso_db.execute("drop table x1")
|
127
|
+
s.dirty?.should == true
|
128
|
+
end
|
129
|
+
|
130
|
+
|
113
131
|
it "can load the schema of a temporary table" do
|
114
132
|
@iso_db.execute "CREATE TEMPORARY TABLE tt( a, b, c )"
|
115
|
-
@iso_db.schema.dirty!
|
116
133
|
@iso_db.schema.tables['tt'].should be_nil
|
117
134
|
@iso_db.schema.load_table('tt').should_not be_nil
|
118
135
|
@iso_db.schema.tables['tt'].should be_temporary
|
data/spec/sqlite3/status_spec.rb
CHANGED
@@ -10,8 +10,12 @@ describe "Amalgalite::SQLite3::Status" do
|
|
10
10
|
|
11
11
|
it "can reset the highwater value" do
|
12
12
|
before = Amalgalite::SQLite3.status.memory_used.highwater
|
13
|
+
before.should > 0
|
14
|
+
|
15
|
+
current = Amalgalite::SQLite3.status.memory_used.current
|
13
16
|
Amalgalite::SQLite3.status.memory_used.reset!
|
14
|
-
Amalgalite::SQLite3.status.memory_used.highwater.should
|
17
|
+
Amalgalite::SQLite3.status.memory_used.highwater.should == current
|
18
|
+
|
15
19
|
after = Amalgalite::SQLite3.status.memory_used.highwater
|
16
20
|
after.should_not eql(before)
|
17
21
|
end
|
@@ -7,16 +7,16 @@ describe "Amalgalite::SQLite3::Version" do
|
|
7
7
|
Amalgalite::SQLite3::Version.to_s.should =~ /\d\.\d\.\d/
|
8
8
|
Amalgalite::SQLite3::Version.runtime_version.should =~ /\d\.\d\.\d/
|
9
9
|
|
10
|
-
Amalgalite::SQLite3::Version.to_i.should eql(
|
11
|
-
Amalgalite::SQLite3::Version.runtime_version_number.should eql(
|
10
|
+
Amalgalite::SQLite3::Version.to_i.should eql(3006019)
|
11
|
+
Amalgalite::SQLite3::Version.runtime_version_number.should eql(3006019)
|
12
12
|
|
13
13
|
Amalgalite::SQLite3::Version::MAJOR.should eql(3)
|
14
14
|
Amalgalite::SQLite3::Version::MINOR.should eql(6)
|
15
|
-
Amalgalite::SQLite3::Version::RELEASE.should eql(
|
15
|
+
Amalgalite::SQLite3::Version::RELEASE.should eql(19)
|
16
16
|
Amalgalite::SQLite3::Version.to_a.should have(3).items
|
17
17
|
|
18
|
-
Amalgalite::SQLite3::Version.compiled_version.should == "3.6.
|
19
|
-
Amalgalite::SQLite3::Version.compiled_version_number.should ==
|
18
|
+
Amalgalite::SQLite3::Version.compiled_version.should == "3.6.19"
|
19
|
+
Amalgalite::SQLite3::Version.compiled_version_number.should == 3006019
|
20
20
|
Amalgalite::SQLite3::Version.compiled_matches_runtime?.should == true
|
21
21
|
end
|
22
22
|
end
|
data/tasks/extension.rake
CHANGED
@@ -91,6 +91,59 @@ if ext_config = Configuration.for_if_exist?('extension') then
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
desc "List the sqlite api calls that are not implemented"
|
95
|
+
task :todo do
|
96
|
+
|
97
|
+
not_implementing = %w[
|
98
|
+
sqlite3_exec
|
99
|
+
sqlite3_open
|
100
|
+
sqlite3_os_end
|
101
|
+
sqlite3_os_init
|
102
|
+
sqlite3_malloc
|
103
|
+
sqlite3_realloc
|
104
|
+
sqlite3_free
|
105
|
+
sqlite3_get_table
|
106
|
+
sqlite3_free_table
|
107
|
+
sqlite3_key
|
108
|
+
sqlite3_rekey
|
109
|
+
sqlite3_next_stmt
|
110
|
+
sqlite3_release_memory
|
111
|
+
sqlite3_sleep
|
112
|
+
sqlite3_snprintf
|
113
|
+
sqlite3_vmprintf
|
114
|
+
sqlite3_strnicmp
|
115
|
+
sqlite3_test_control
|
116
|
+
sqlite3_unlock_notify
|
117
|
+
sqlite3_vfs_find
|
118
|
+
sqlite3_vfs_register
|
119
|
+
sqlite3_vfs_unregister
|
120
|
+
]
|
121
|
+
|
122
|
+
sqlite_h = File.join( *%w[ ext amalgalite sqlite3.h ] )
|
123
|
+
api_todo = {}
|
124
|
+
IO.readlines( sqlite_h ).each do |line|
|
125
|
+
if line =~ /\ASQLITE_API/ then
|
126
|
+
if line !~ /SQLITE_DEPRECATED/ and line !~ /SQLITE_EXPERIMENTAL/ then
|
127
|
+
if md = line.match( /(sqlite3_[^(\s]+)\(/ ) then
|
128
|
+
next if not_implementing.include?(md.captures[0])
|
129
|
+
api_todo[md.captures[0]] = true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
Dir.glob("ext/amalgalite/amalgalite*.c").each do |am_file|
|
136
|
+
IO.readlines( am_file ).each do |am_line|
|
137
|
+
if md = am_line.match( /(sqlite3_[^(\s]+)\(/ ) then
|
138
|
+
api_todo.delete( md.captures[0] )
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
puts "#{api_todo.keys.size} functions to still implement"
|
144
|
+
puts api_todo.keys.sort.join("\n")
|
145
|
+
end
|
146
|
+
|
94
147
|
task :clobber do
|
95
148
|
ext_config.configs.each do |extension|
|
96
149
|
path = Pathname.new(extension)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amalgalite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Hinegardner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-10-30 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -62,7 +62,45 @@ dependencies:
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: 0.5.0
|
64
64
|
version:
|
65
|
-
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: archive-tar-minitar
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.5.2
|
74
|
+
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rcov
|
77
|
+
type: :development
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.8.1.2.0
|
84
|
+
version:
|
85
|
+
description: |-
|
86
|
+
Amalgalite embeds the SQLite database engine in a ruby extension. There is no
|
87
|
+
need to install SQLite separately.
|
88
|
+
|
89
|
+
Look in the examples/ directory to see
|
90
|
+
|
91
|
+
* general usage
|
92
|
+
* blob io
|
93
|
+
* schema information
|
94
|
+
* custom functions
|
95
|
+
* custom aggregates
|
96
|
+
* requiring ruby code from a database
|
97
|
+
|
98
|
+
Also Scroll through Amalgalite::Database for a quick example, and a general
|
99
|
+
overview of the API.
|
100
|
+
|
101
|
+
Amalgalite adds in the following additional non-default SQLite extension(s):
|
102
|
+
|
103
|
+
* {R*Tree index extension}[http://sqlite.org/rtree.html]
|
66
104
|
email: jeremy@hinegardner.org
|
67
105
|
executables:
|
68
106
|
- amalgalite-pack
|
@@ -72,140 +110,141 @@ extra_rdoc_files:
|
|
72
110
|
- README
|
73
111
|
- HISTORY
|
74
112
|
- LICENSE
|
75
|
-
- lib/amalgalite/
|
113
|
+
- lib/amalgalite/taps/io.rb
|
114
|
+
- lib/amalgalite/taps/console.rb
|
115
|
+
- lib/amalgalite/statement.rb
|
76
116
|
- lib/amalgalite/blob.rb
|
77
|
-
- lib/amalgalite/boolean.rb
|
78
|
-
- lib/amalgalite/busy_timeout.rb
|
79
117
|
- lib/amalgalite/column.rb
|
80
|
-
- lib/amalgalite/
|
81
|
-
- lib/amalgalite/database.rb
|
82
|
-
- lib/amalgalite/function.rb
|
83
|
-
- lib/amalgalite/index.rb
|
84
|
-
- lib/amalgalite/packer.rb
|
85
|
-
- lib/amalgalite/paths.rb
|
86
|
-
- lib/amalgalite/profile_tap.rb
|
87
|
-
- lib/amalgalite/progress_handler.rb
|
88
|
-
- lib/amalgalite/requires.rb
|
89
|
-
- lib/amalgalite/schema.rb
|
118
|
+
- lib/amalgalite/trace_tap.rb
|
90
119
|
- lib/amalgalite/sqlite3/constants.rb
|
91
120
|
- lib/amalgalite/sqlite3/database/function.rb
|
92
121
|
- lib/amalgalite/sqlite3/database/status.rb
|
93
|
-
- lib/amalgalite/sqlite3/status.rb
|
94
122
|
- lib/amalgalite/sqlite3/version.rb
|
95
|
-
- lib/amalgalite/sqlite3.rb
|
96
|
-
- lib/amalgalite/statement.rb
|
123
|
+
- lib/amalgalite/sqlite3/status.rb
|
97
124
|
- lib/amalgalite/table.rb
|
98
|
-
- lib/amalgalite/taps/console.rb
|
99
|
-
- lib/amalgalite/taps/io.rb
|
100
|
-
- lib/amalgalite/taps.rb
|
101
|
-
- lib/amalgalite/trace_tap.rb
|
102
|
-
- lib/amalgalite/type_map.rb
|
103
125
|
- lib/amalgalite/type_maps/default_map.rb
|
104
|
-
- lib/amalgalite/type_maps/storage_map.rb
|
105
126
|
- lib/amalgalite/type_maps/text_map.rb
|
127
|
+
- lib/amalgalite/type_maps/storage_map.rb
|
128
|
+
- lib/amalgalite/type_map.rb
|
129
|
+
- lib/amalgalite/profile_tap.rb
|
130
|
+
- lib/amalgalite/requires.rb
|
131
|
+
- lib/amalgalite/boolean.rb
|
132
|
+
- lib/amalgalite/aggregate.rb
|
133
|
+
- lib/amalgalite/index.rb
|
134
|
+
- lib/amalgalite/sqlite3.rb
|
135
|
+
- lib/amalgalite/taps.rb
|
136
|
+
- lib/amalgalite/paths.rb
|
106
137
|
- lib/amalgalite/version.rb
|
138
|
+
- lib/amalgalite/schema.rb
|
139
|
+
- lib/amalgalite/busy_timeout.rb
|
107
140
|
- lib/amalgalite/view.rb
|
141
|
+
- lib/amalgalite/function.rb
|
142
|
+
- lib/amalgalite/database.rb
|
143
|
+
- lib/amalgalite/progress_handler.rb
|
144
|
+
- lib/amalgalite/packer.rb
|
145
|
+
- lib/amalgalite/core_ext/kernel/require.rb
|
108
146
|
- lib/amalgalite.rb
|
109
147
|
files:
|
110
148
|
- bin/amalgalite-pack
|
111
149
|
- ext/amalgalite/amalgalite3.c
|
112
|
-
- ext/amalgalite/
|
113
|
-
- ext/amalgalite/amalgalite3_constants.c
|
150
|
+
- ext/amalgalite/amalgalite3_statement.c
|
114
151
|
- ext/amalgalite/amalgalite3_database.c
|
115
152
|
- ext/amalgalite/amalgalite3_requires_bootstrap.c
|
116
|
-
- ext/amalgalite/amalgalite3_statement.c
|
117
153
|
- ext/amalgalite/sqlite3.c
|
118
|
-
- ext/amalgalite/
|
154
|
+
- ext/amalgalite/amalgalite3_constants.c
|
155
|
+
- ext/amalgalite/amalgalite3_blob.c
|
119
156
|
- ext/amalgalite/sqlite3.h
|
157
|
+
- ext/amalgalite/amalgalite3.h
|
120
158
|
- ext/amalgalite/sqlite3_options.h
|
121
159
|
- ext/amalgalite/sqlite3ext.h
|
122
|
-
- ext/amalgalite/extconf.rb
|
123
160
|
- ext/amalgalite/gen_constants.rb
|
124
|
-
-
|
161
|
+
- ext/amalgalite/extconf.rb
|
125
162
|
- examples/blob.rb
|
126
|
-
- examples/bootstrap.rb
|
127
|
-
- examples/define_aggregate.rb
|
128
|
-
- examples/define_function.rb
|
129
163
|
- examples/gem-db.rb
|
130
|
-
- examples/
|
131
|
-
- examples/
|
164
|
+
- examples/define_function.rb
|
165
|
+
- examples/define_aggregate.rb
|
132
166
|
- examples/requires.rb
|
167
|
+
- examples/bootstrap.rb
|
133
168
|
- examples/schema-info.rb
|
134
|
-
-
|
169
|
+
- examples/require_me.rb
|
170
|
+
- examples/a.rb
|
171
|
+
- lib/amalgalite/taps/io.rb
|
172
|
+
- lib/amalgalite/taps/console.rb
|
173
|
+
- lib/amalgalite/statement.rb
|
135
174
|
- lib/amalgalite/blob.rb
|
136
|
-
- lib/amalgalite/boolean.rb
|
137
|
-
- lib/amalgalite/busy_timeout.rb
|
138
175
|
- lib/amalgalite/column.rb
|
139
|
-
- lib/amalgalite/
|
140
|
-
- lib/amalgalite/database.rb
|
141
|
-
- lib/amalgalite/function.rb
|
142
|
-
- lib/amalgalite/index.rb
|
143
|
-
- lib/amalgalite/packer.rb
|
144
|
-
- lib/amalgalite/paths.rb
|
145
|
-
- lib/amalgalite/profile_tap.rb
|
146
|
-
- lib/amalgalite/progress_handler.rb
|
147
|
-
- lib/amalgalite/requires.rb
|
148
|
-
- lib/amalgalite/schema.rb
|
176
|
+
- lib/amalgalite/trace_tap.rb
|
149
177
|
- lib/amalgalite/sqlite3/constants.rb
|
150
178
|
- lib/amalgalite/sqlite3/database/function.rb
|
151
179
|
- lib/amalgalite/sqlite3/database/status.rb
|
152
|
-
- lib/amalgalite/sqlite3/status.rb
|
153
180
|
- lib/amalgalite/sqlite3/version.rb
|
154
|
-
- lib/amalgalite/sqlite3.rb
|
155
|
-
- lib/amalgalite/statement.rb
|
181
|
+
- lib/amalgalite/sqlite3/status.rb
|
156
182
|
- lib/amalgalite/table.rb
|
157
|
-
- lib/amalgalite/taps/console.rb
|
158
|
-
- lib/amalgalite/taps/io.rb
|
159
|
-
- lib/amalgalite/taps.rb
|
160
|
-
- lib/amalgalite/trace_tap.rb
|
161
|
-
- lib/amalgalite/type_map.rb
|
162
183
|
- lib/amalgalite/type_maps/default_map.rb
|
163
|
-
- lib/amalgalite/type_maps/storage_map.rb
|
164
184
|
- lib/amalgalite/type_maps/text_map.rb
|
185
|
+
- lib/amalgalite/type_maps/storage_map.rb
|
186
|
+
- lib/amalgalite/type_map.rb
|
187
|
+
- lib/amalgalite/profile_tap.rb
|
188
|
+
- lib/amalgalite/requires.rb
|
189
|
+
- lib/amalgalite/boolean.rb
|
190
|
+
- lib/amalgalite/aggregate.rb
|
191
|
+
- lib/amalgalite/index.rb
|
192
|
+
- lib/amalgalite/sqlite3.rb
|
193
|
+
- lib/amalgalite/taps.rb
|
194
|
+
- lib/amalgalite/paths.rb
|
165
195
|
- lib/amalgalite/version.rb
|
196
|
+
- lib/amalgalite/schema.rb
|
197
|
+
- lib/amalgalite/busy_timeout.rb
|
166
198
|
- lib/amalgalite/view.rb
|
199
|
+
- lib/amalgalite/function.rb
|
200
|
+
- lib/amalgalite/database.rb
|
201
|
+
- lib/amalgalite/progress_handler.rb
|
202
|
+
- lib/amalgalite/packer.rb
|
203
|
+
- lib/amalgalite/core_ext/kernel/require.rb
|
167
204
|
- lib/amalgalite.rb
|
168
|
-
- spec/
|
205
|
+
- spec/requires_spec.rb
|
206
|
+
- spec/sqlite3_spec.rb
|
169
207
|
- spec/amalgalite_spec.rb
|
170
|
-
- spec/blob_spec.rb
|
171
|
-
- spec/boolean_spec.rb
|
172
208
|
- spec/busy_handler.rb
|
173
|
-
- spec/
|
209
|
+
- spec/blob_spec.rb
|
174
210
|
- spec/default_map_spec.rb
|
175
|
-
- spec/function_spec.rb
|
176
|
-
- spec/integeration_spec.rb
|
177
|
-
- spec/packer_spec.rb
|
178
|
-
- spec/paths_spec.rb
|
179
|
-
- spec/progress_handler_spec.rb
|
180
|
-
- spec/requires_spec.rb
|
181
|
-
- spec/rtree_spec.rb
|
182
|
-
- spec/schema_spec.rb
|
183
|
-
- spec/spec_helper.rb
|
184
211
|
- spec/sqlite3/constants_spec.rb
|
185
212
|
- spec/sqlite3/database_status_spec.rb
|
186
|
-
- spec/sqlite3/status_spec.rb
|
187
213
|
- spec/sqlite3/version_spec.rb
|
188
|
-
- spec/
|
189
|
-
- spec/statement_spec.rb
|
214
|
+
- spec/sqlite3/status_spec.rb
|
190
215
|
- spec/storage_map_spec.rb
|
191
|
-
- spec/
|
192
|
-
- spec/
|
216
|
+
- spec/spec_helper.rb
|
217
|
+
- spec/statement_spec.rb
|
193
218
|
- spec/type_map_spec.rb
|
219
|
+
- spec/boolean_spec.rb
|
220
|
+
- spec/text_map_spec.rb
|
221
|
+
- spec/integeration_spec.rb
|
222
|
+
- spec/rtree_spec.rb
|
223
|
+
- spec/paths_spec.rb
|
224
|
+
- spec/aggregate_spec.rb
|
194
225
|
- spec/version_spec.rb
|
226
|
+
- spec/progress_handler_spec.rb
|
227
|
+
- spec/tap_spec.rb
|
228
|
+
- spec/schema_spec.rb
|
229
|
+
- spec/function_spec.rb
|
230
|
+
- spec/packer_spec.rb
|
231
|
+
- spec/database_spec.rb
|
195
232
|
- README
|
196
233
|
- HISTORY
|
197
234
|
- LICENSE
|
198
|
-
- tasks/announce.rake
|
199
235
|
- tasks/distribution.rake
|
200
|
-
- tasks/documentation.rake
|
201
|
-
- tasks/extension.rake
|
202
236
|
- tasks/rspec.rake
|
237
|
+
- tasks/documentation.rake
|
203
238
|
- tasks/rubyforge.rake
|
204
|
-
- tasks/
|
239
|
+
- tasks/announce.rake
|
240
|
+
- tasks/extension.rake
|
205
241
|
- tasks/utils.rb
|
242
|
+
- tasks/config.rb
|
206
243
|
- gemspec.rb
|
207
244
|
has_rdoc: true
|
208
245
|
homepage: http://copiousfreetime.rubyforge.org/amalgalite/
|
246
|
+
licenses: []
|
247
|
+
|
209
248
|
post_install_message:
|
210
249
|
rdoc_options:
|
211
250
|
- --main
|
@@ -227,9 +266,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
266
|
requirements: []
|
228
267
|
|
229
268
|
rubyforge_project: copiousfreetime
|
230
|
-
rubygems_version: 1.3.
|
269
|
+
rubygems_version: 1.3.5
|
231
270
|
signing_key:
|
232
|
-
specification_version:
|
271
|
+
specification_version: 3
|
233
272
|
summary: Amalgalite embeds the SQLite database engine in a ruby extension
|
234
273
|
test_files: []
|
235
274
|
|