sequel 0.4.0 → 0.4.1
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.
- data/CHANGELOG +4 -0
- data/README +1 -6
- data/Rakefile +1 -1
- data/bin/sequel +1 -3
- data/lib/sequel.rb +18 -1
- data/lib/sequel/adapters/ado.rb +104 -0
- data/lib/sequel/adapters/db2.rb +160 -0
- data/lib/sequel/adapters/dbi.rb +130 -0
- data/lib/sequel/adapters/informix.rb +78 -0
- data/lib/sequel/adapters/mysql.rb +256 -0
- data/lib/sequel/adapters/odbc.rb +144 -0
- data/lib/sequel/adapters/oracle.rb +109 -0
- data/lib/sequel/adapters/postgres.rb +507 -0
- data/lib/sequel/adapters/sqlite.rb +186 -0
- data/lib/sequel/ado.rb +2 -104
- data/lib/{sequel-core → sequel}/array_keys.rb +0 -0
- data/lib/{sequel-core → sequel}/connection_pool.rb +0 -0
- data/lib/{sequel-core → sequel}/core_ext.rb +0 -0
- data/lib/{sequel-core → sequel}/core_sql.rb +0 -0
- data/lib/{sequel-core → sequel}/database.rb +10 -20
- data/lib/{sequel-core → sequel}/dataset.rb +0 -0
- data/lib/{sequel-core → sequel}/dataset/convenience.rb +0 -0
- data/lib/{sequel-core → sequel}/dataset/sequelizer.rb +0 -0
- data/lib/{sequel-core → sequel}/dataset/sql.rb +0 -0
- data/lib/sequel/db2.rb +2 -160
- data/lib/sequel/dbi.rb +2 -130
- data/lib/{sequel-core → sequel}/error.rb +0 -0
- data/lib/sequel/informix.rb +2 -78
- data/lib/{sequel-core → sequel}/migration.rb +0 -0
- data/lib/{sequel-core → sequel}/model.rb +0 -0
- data/lib/{sequel-core → sequel}/model/base.rb +0 -0
- data/lib/{sequel-core → sequel}/model/caching.rb +0 -0
- data/lib/{sequel-core → sequel}/model/hooks.rb +0 -0
- data/lib/{sequel-core → sequel}/model/record.rb +0 -0
- data/lib/{sequel-core → sequel}/model/relations.rb +0 -0
- data/lib/{sequel-core → sequel}/model/schema.rb +0 -0
- data/lib/sequel/mysql.rb +2 -256
- data/lib/sequel/odbc.rb +2 -144
- data/lib/sequel/oracle.rb +2 -109
- data/lib/sequel/postgres.rb +2 -507
- data/lib/{sequel-core → sequel}/pretty_table.rb +0 -0
- data/lib/{sequel-core → sequel}/schema.rb +0 -0
- data/lib/{sequel-core → sequel}/schema/schema_generator.rb +0 -0
- data/lib/{sequel-core → sequel}/schema/schema_sql.rb +0 -0
- data/lib/sequel/sqlite.rb +2 -186
- data/lib/{sequel-core → sequel}/worker.rb +0 -0
- data/spec/database_spec.rb +7 -9
- metadata +39 -29
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/sequel/sqlite.rb
CHANGED
@@ -1,186 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
end
|
4
|
-
|
5
|
-
require 'sqlite3'
|
6
|
-
|
7
|
-
module Sequel
|
8
|
-
module SQLite
|
9
|
-
class Database < Sequel::Database
|
10
|
-
set_adapter_scheme :sqlite
|
11
|
-
|
12
|
-
def serial_primary_key_options
|
13
|
-
{:primary_key => true, :type => :integer, :auto_increment => true}
|
14
|
-
end
|
15
|
-
|
16
|
-
def connect
|
17
|
-
if @opts[:database].nil? || @opts[:database].empty?
|
18
|
-
@opts[:database] = ':memory:'
|
19
|
-
end
|
20
|
-
db = ::SQLite3::Database.new(@opts[:database])
|
21
|
-
db.type_translation = true
|
22
|
-
# fix for timestamp translation
|
23
|
-
db.translator.add_translator("timestamp") do |t, v|
|
24
|
-
v =~ /^\d+$/ ? Time.at(v.to_i) : Time.parse(v)
|
25
|
-
end
|
26
|
-
db
|
27
|
-
end
|
28
|
-
|
29
|
-
def disconnect
|
30
|
-
@pool.disconnect {|c| c.close}
|
31
|
-
end
|
32
|
-
|
33
|
-
def dataset(opts = nil)
|
34
|
-
SQLite::Dataset.new(self, opts)
|
35
|
-
end
|
36
|
-
|
37
|
-
TABLES_FILTER = "type = 'table' AND NOT name = 'sqlite_sequence'"
|
38
|
-
|
39
|
-
def tables
|
40
|
-
self[:sqlite_master].filter(TABLES_FILTER).map {|r| r[:name].to_sym}
|
41
|
-
end
|
42
|
-
|
43
|
-
def execute(sql)
|
44
|
-
@logger.info(sql) if @logger
|
45
|
-
@pool.hold {|conn| conn.execute_batch(sql); conn.changes}
|
46
|
-
end
|
47
|
-
|
48
|
-
def execute_insert(sql)
|
49
|
-
@logger.info(sql) if @logger
|
50
|
-
@pool.hold {|conn| conn.execute(sql); conn.last_insert_row_id}
|
51
|
-
end
|
52
|
-
|
53
|
-
def single_value(sql)
|
54
|
-
@logger.info(sql) if @logger
|
55
|
-
@pool.hold {|conn| conn.get_first_value(sql)}
|
56
|
-
end
|
57
|
-
|
58
|
-
def execute_select(sql, &block)
|
59
|
-
@logger.info(sql) if @logger
|
60
|
-
@pool.hold {|conn| conn.query(sql, &block)}
|
61
|
-
end
|
62
|
-
|
63
|
-
def pragma_get(name)
|
64
|
-
single_value("PRAGMA #{name}")
|
65
|
-
end
|
66
|
-
|
67
|
-
def pragma_set(name, value)
|
68
|
-
execute("PRAGMA #{name} = #{value}")
|
69
|
-
end
|
70
|
-
|
71
|
-
AUTO_VACUUM = {'0' => :none, '1' => :full, '2' => :incremental}.freeze
|
72
|
-
|
73
|
-
def auto_vacuum
|
74
|
-
AUTO_VACUUM[pragma_get(:auto_vacuum)]
|
75
|
-
end
|
76
|
-
|
77
|
-
def auto_vacuum=(value)
|
78
|
-
value = AUTO_VACUUM.index(value) || (raise SequelError, "Invalid value for auto_vacuum option. Please specify one of :none, :full, :incremental.")
|
79
|
-
pragma_set(:auto_vacuum, value)
|
80
|
-
end
|
81
|
-
|
82
|
-
SYNCHRONOUS = {'0' => :off, '1' => :normal, '2' => :full}.freeze
|
83
|
-
|
84
|
-
def synchronous
|
85
|
-
SYNCHRONOUS[pragma_get(:synchronous)]
|
86
|
-
end
|
87
|
-
|
88
|
-
def synchronous=(value)
|
89
|
-
value = SYNCHRONOUS.index(value) || (raise SequelError, "Invalid value for synchronous option. Please specify one of :off, :normal, :full.")
|
90
|
-
pragma_set(:synchronous, value)
|
91
|
-
end
|
92
|
-
|
93
|
-
TEMP_STORE = {'0' => :default, '1' => :file, '2' => :memory}.freeze
|
94
|
-
|
95
|
-
def temp_store
|
96
|
-
TEMP_STORE[pragma_get(:temp_store)]
|
97
|
-
end
|
98
|
-
|
99
|
-
def temp_store=(value)
|
100
|
-
value = TEMP_STORE.index(value) || (raise SequelError, "Invalid value for temp_store option. Please specify one of :default, :file, :memory.")
|
101
|
-
pragma_set(:temp_store, value)
|
102
|
-
end
|
103
|
-
|
104
|
-
def transaction(&block)
|
105
|
-
@pool.hold do |conn|
|
106
|
-
if conn.transaction_active?
|
107
|
-
return yield(conn)
|
108
|
-
end
|
109
|
-
begin
|
110
|
-
result = nil
|
111
|
-
conn.transaction {result = yield(conn)}
|
112
|
-
result
|
113
|
-
rescue => e
|
114
|
-
raise e unless SequelRollbackError === e
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
class Dataset < Sequel::Dataset
|
121
|
-
def literal(v)
|
122
|
-
case v
|
123
|
-
when Time: literal(v.iso8601)
|
124
|
-
else
|
125
|
-
super
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def insert_sql(*values)
|
130
|
-
if (values.size == 1) && values.first.is_a?(Sequel::Dataset)
|
131
|
-
"INSERT INTO #{@opts[:from]} #{values.first.sql};"
|
132
|
-
else
|
133
|
-
super(*values)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def fetch_rows(sql, &block)
|
138
|
-
@db.execute_select(sql) do |result|
|
139
|
-
@columns = result.columns.map {|c| c.to_sym}
|
140
|
-
column_count = @columns.size
|
141
|
-
result.each do |values|
|
142
|
-
row = {}
|
143
|
-
column_count.times {|i| row[@columns[i]] = values[i]}
|
144
|
-
block.call(row)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def array_tuples_fetch_rows(sql, &block)
|
150
|
-
@db.execute_select(sql) do |result|
|
151
|
-
@columns = result.columns.map {|c| c.to_sym}
|
152
|
-
result.each {|r| r.keys = @columns; block[r]}
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def insert(*values)
|
157
|
-
@db.execute_insert insert_sql(*values)
|
158
|
-
end
|
159
|
-
|
160
|
-
def update(values, opts = nil)
|
161
|
-
@db.execute update_sql(values, opts)
|
162
|
-
end
|
163
|
-
|
164
|
-
def delete(opts = nil)
|
165
|
-
# check if no filter is specified
|
166
|
-
unless (opts && opts[:where]) || @opts[:where]
|
167
|
-
@db.transaction do
|
168
|
-
unfiltered_count = count
|
169
|
-
@db.execute delete_sql(opts)
|
170
|
-
unfiltered_count
|
171
|
-
end
|
172
|
-
else
|
173
|
-
@db.execute delete_sql(opts)
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
EXPLAIN = 'EXPLAIN %s'.freeze
|
178
|
-
|
179
|
-
def explain
|
180
|
-
res = []
|
181
|
-
@db.result_set(EXPLAIN % select_sql(opts), nil) {|r| res << r}
|
182
|
-
res
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
1
|
+
warn "Requiring 'sequel/sqlite' is deprecated. Please modify your code to require 'sequel' instead."
|
2
|
+
require File.join(File.dirname(__FILE__), 'adapters/sqlite')
|
File without changes
|
data/spec/database_spec.rb
CHANGED
@@ -375,9 +375,7 @@ context "A Database adapter with a scheme" do
|
|
375
375
|
c.opts[:database].should == 'db'
|
376
376
|
end
|
377
377
|
|
378
|
-
specify "should
|
379
|
-
Sequel.should respond_to(:ccc)
|
380
|
-
|
378
|
+
specify "should be accessible through Sequel.<adapter>" do
|
381
379
|
# invalid parameters
|
382
380
|
proc {Sequel.ccc('abc', 'def')}.should raise_error(SequelError)
|
383
381
|
|
@@ -396,16 +394,16 @@ context "A Database adapter with a scheme" do
|
|
396
394
|
end
|
397
395
|
|
398
396
|
context "An unknown database scheme" do
|
399
|
-
specify "should raise an
|
400
|
-
proc {Sequel::Database.connect('ddd://localhost/db')}.should raise_error(
|
397
|
+
specify "should raise an error in Sequel::Database.connect" do
|
398
|
+
proc {Sequel::Database.connect('ddd://localhost/db')}.should raise_error(LoadError)
|
401
399
|
end
|
402
400
|
|
403
|
-
specify "should raise an
|
404
|
-
proc {Sequel.connect('ddd://localhost/db')}.should raise_error(
|
401
|
+
specify "should raise an error in Sequel.connect" do
|
402
|
+
proc {Sequel.connect('ddd://localhost/db')}.should raise_error(LoadError)
|
405
403
|
end
|
406
404
|
|
407
|
-
specify "should raise an
|
408
|
-
proc {Sequel.open('ddd://localhost/db')}.should raise_error(
|
405
|
+
specify "should raise an error in Sequel.open" do
|
406
|
+
proc {Sequel.open('ddd://localhost/db')}.should raise_error(LoadError)
|
409
407
|
end
|
410
408
|
end
|
411
409
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2007-11-
|
12
|
+
date: 2007-11-25 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- README
|
55
55
|
- Rakefile
|
56
56
|
- bin/sequel
|
57
|
+
- doc/rdoc
|
57
58
|
- spec/adapters
|
58
59
|
- spec/adapters/mysql_spec.rb
|
59
60
|
- spec/adapters/oracle_spec.rb
|
@@ -74,42 +75,51 @@ files:
|
|
74
75
|
- spec/spec_helper.rb
|
75
76
|
- spec/worker_spec.rb
|
76
77
|
- lib/sequel
|
78
|
+
- lib/sequel/adapters
|
79
|
+
- lib/sequel/adapters/ado.rb
|
80
|
+
- lib/sequel/adapters/db2.rb
|
81
|
+
- lib/sequel/adapters/dbi.rb
|
82
|
+
- lib/sequel/adapters/informix.rb
|
83
|
+
- lib/sequel/adapters/mysql.rb
|
84
|
+
- lib/sequel/adapters/odbc.rb
|
85
|
+
- lib/sequel/adapters/oracle.rb
|
86
|
+
- lib/sequel/adapters/postgres.rb
|
87
|
+
- lib/sequel/adapters/sqlite.rb
|
77
88
|
- lib/sequel/ado.rb
|
89
|
+
- lib/sequel/array_keys.rb
|
90
|
+
- lib/sequel/connection_pool.rb
|
91
|
+
- lib/sequel/core_ext.rb
|
92
|
+
- lib/sequel/core_sql.rb
|
93
|
+
- lib/sequel/database.rb
|
94
|
+
- lib/sequel/dataset
|
95
|
+
- lib/sequel/dataset/convenience.rb
|
96
|
+
- lib/sequel/dataset/sequelizer.rb
|
97
|
+
- lib/sequel/dataset/sql.rb
|
98
|
+
- lib/sequel/dataset.rb
|
78
99
|
- lib/sequel/db2.rb
|
79
100
|
- lib/sequel/dbi.rb
|
101
|
+
- lib/sequel/error.rb
|
80
102
|
- lib/sequel/informix.rb
|
103
|
+
- lib/sequel/migration.rb
|
104
|
+
- lib/sequel/model
|
105
|
+
- lib/sequel/model/base.rb
|
106
|
+
- lib/sequel/model/caching.rb
|
107
|
+
- lib/sequel/model/hooks.rb
|
108
|
+
- lib/sequel/model/record.rb
|
109
|
+
- lib/sequel/model/relations.rb
|
110
|
+
- lib/sequel/model/schema.rb
|
111
|
+
- lib/sequel/model.rb
|
81
112
|
- lib/sequel/mysql.rb
|
82
113
|
- lib/sequel/odbc.rb
|
83
114
|
- lib/sequel/oracle.rb
|
84
115
|
- lib/sequel/postgres.rb
|
116
|
+
- lib/sequel/pretty_table.rb
|
117
|
+
- lib/sequel/schema
|
118
|
+
- lib/sequel/schema/schema_generator.rb
|
119
|
+
- lib/sequel/schema/schema_sql.rb
|
120
|
+
- lib/sequel/schema.rb
|
85
121
|
- lib/sequel/sqlite.rb
|
86
|
-
- lib/sequel
|
87
|
-
- lib/sequel-core/array_keys.rb
|
88
|
-
- lib/sequel-core/connection_pool.rb
|
89
|
-
- lib/sequel-core/core_ext.rb
|
90
|
-
- lib/sequel-core/core_sql.rb
|
91
|
-
- lib/sequel-core/database.rb
|
92
|
-
- lib/sequel-core/dataset
|
93
|
-
- lib/sequel-core/dataset/convenience.rb
|
94
|
-
- lib/sequel-core/dataset/sequelizer.rb
|
95
|
-
- lib/sequel-core/dataset/sql.rb
|
96
|
-
- lib/sequel-core/dataset.rb
|
97
|
-
- lib/sequel-core/error.rb
|
98
|
-
- lib/sequel-core/migration.rb
|
99
|
-
- lib/sequel-core/model
|
100
|
-
- lib/sequel-core/model/base.rb
|
101
|
-
- lib/sequel-core/model/caching.rb
|
102
|
-
- lib/sequel-core/model/hooks.rb
|
103
|
-
- lib/sequel-core/model/record.rb
|
104
|
-
- lib/sequel-core/model/relations.rb
|
105
|
-
- lib/sequel-core/model/schema.rb
|
106
|
-
- lib/sequel-core/model.rb
|
107
|
-
- lib/sequel-core/pretty_table.rb
|
108
|
-
- lib/sequel-core/schema
|
109
|
-
- lib/sequel-core/schema/schema_generator.rb
|
110
|
-
- lib/sequel-core/schema/schema_sql.rb
|
111
|
-
- lib/sequel-core/schema.rb
|
112
|
-
- lib/sequel-core/worker.rb
|
122
|
+
- lib/sequel/worker.rb
|
113
123
|
- lib/sequel.rb
|
114
124
|
- CHANGELOG
|
115
125
|
has_rdoc: true
|