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.
Files changed (48) hide show
  1. data/CHANGELOG +4 -0
  2. data/README +1 -6
  3. data/Rakefile +1 -1
  4. data/bin/sequel +1 -3
  5. data/lib/sequel.rb +18 -1
  6. data/lib/sequel/adapters/ado.rb +104 -0
  7. data/lib/sequel/adapters/db2.rb +160 -0
  8. data/lib/sequel/adapters/dbi.rb +130 -0
  9. data/lib/sequel/adapters/informix.rb +78 -0
  10. data/lib/sequel/adapters/mysql.rb +256 -0
  11. data/lib/sequel/adapters/odbc.rb +144 -0
  12. data/lib/sequel/adapters/oracle.rb +109 -0
  13. data/lib/sequel/adapters/postgres.rb +507 -0
  14. data/lib/sequel/adapters/sqlite.rb +186 -0
  15. data/lib/sequel/ado.rb +2 -104
  16. data/lib/{sequel-core → sequel}/array_keys.rb +0 -0
  17. data/lib/{sequel-core → sequel}/connection_pool.rb +0 -0
  18. data/lib/{sequel-core → sequel}/core_ext.rb +0 -0
  19. data/lib/{sequel-core → sequel}/core_sql.rb +0 -0
  20. data/lib/{sequel-core → sequel}/database.rb +10 -20
  21. data/lib/{sequel-core → sequel}/dataset.rb +0 -0
  22. data/lib/{sequel-core → sequel}/dataset/convenience.rb +0 -0
  23. data/lib/{sequel-core → sequel}/dataset/sequelizer.rb +0 -0
  24. data/lib/{sequel-core → sequel}/dataset/sql.rb +0 -0
  25. data/lib/sequel/db2.rb +2 -160
  26. data/lib/sequel/dbi.rb +2 -130
  27. data/lib/{sequel-core → sequel}/error.rb +0 -0
  28. data/lib/sequel/informix.rb +2 -78
  29. data/lib/{sequel-core → sequel}/migration.rb +0 -0
  30. data/lib/{sequel-core → sequel}/model.rb +0 -0
  31. data/lib/{sequel-core → sequel}/model/base.rb +0 -0
  32. data/lib/{sequel-core → sequel}/model/caching.rb +0 -0
  33. data/lib/{sequel-core → sequel}/model/hooks.rb +0 -0
  34. data/lib/{sequel-core → sequel}/model/record.rb +0 -0
  35. data/lib/{sequel-core → sequel}/model/relations.rb +0 -0
  36. data/lib/{sequel-core → sequel}/model/schema.rb +0 -0
  37. data/lib/sequel/mysql.rb +2 -256
  38. data/lib/sequel/odbc.rb +2 -144
  39. data/lib/sequel/oracle.rb +2 -109
  40. data/lib/sequel/postgres.rb +2 -507
  41. data/lib/{sequel-core → sequel}/pretty_table.rb +0 -0
  42. data/lib/{sequel-core → sequel}/schema.rb +0 -0
  43. data/lib/{sequel-core → sequel}/schema/schema_generator.rb +0 -0
  44. data/lib/{sequel-core → sequel}/schema/schema_sql.rb +0 -0
  45. data/lib/sequel/sqlite.rb +2 -186
  46. data/lib/{sequel-core → sequel}/worker.rb +0 -0
  47. data/spec/database_spec.rb +7 -9
  48. metadata +39 -29
File without changes
File without changes
File without changes
data/lib/sequel/sqlite.rb CHANGED
@@ -1,186 +1,2 @@
1
- if !Object.const_defined?('Sequel')
2
- require File.join(File.dirname(__FILE__), '../sequel')
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
@@ -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 register a convenience method on Sequel" do
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 exception in Sequel::Database.connect" do
400
- proc {Sequel::Database.connect('ddd://localhost/db')}.should raise_error(SequelError)
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 exception in Sequel.connect" do
404
- proc {Sequel.connect('ddd://localhost/db')}.should raise_error(SequelError)
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 exception in Sequel.open" do
408
- proc {Sequel.open('ddd://localhost/db')}.should raise_error(SequelError)
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.0
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-24 00:00:00 +02:00
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-core
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