sequel 4.23.0 → 4.24.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -0
- data/Rakefile +1 -1
- data/doc/release_notes/4.24.0.txt +99 -0
- data/doc/sql.rdoc +10 -1
- data/lib/sequel/adapters/jdbc.rb +7 -0
- data/lib/sequel/adapters/jdbc/cubrid.rb +1 -1
- data/lib/sequel/adapters/jdbc/db2.rb +1 -1
- data/lib/sequel/adapters/jdbc/derby.rb +1 -1
- data/lib/sequel/adapters/jdbc/h2.rb +1 -1
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -1
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -1
- data/lib/sequel/adapters/jdbc/mysql.rb +2 -2
- data/lib/sequel/adapters/jdbc/oracle.rb +1 -1
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +1 -1
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -1
- data/lib/sequel/adapters/postgres.rb +14 -6
- data/lib/sequel/adapters/shared/mssql.rb +1 -1
- data/lib/sequel/core.rb +12 -1
- data/lib/sequel/database/connecting.rb +1 -2
- data/lib/sequel/extensions/pg_inet_ops.rb +200 -0
- data/lib/sequel/plugins/association_pks.rb +63 -18
- data/lib/sequel/plugins/auto_validations.rb +43 -9
- data/lib/sequel/plugins/class_table_inheritance.rb +236 -179
- data/lib/sequel/plugins/update_refresh.rb +26 -1
- data/lib/sequel/plugins/validation_helpers.rb +7 -2
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/oracle_spec.rb +1 -1
- data/spec/adapters/postgres_spec.rb +61 -0
- data/spec/core_extensions_spec.rb +5 -1
- data/spec/extensions/association_pks_spec.rb +73 -1
- data/spec/extensions/auto_validations_spec.rb +34 -0
- data/spec/extensions/class_table_inheritance_spec.rb +58 -54
- data/spec/extensions/pg_inet_ops_spec.rb +101 -0
- data/spec/extensions/spec_helper.rb +5 -5
- data/spec/extensions/update_refresh_spec.rb +12 -0
- data/spec/extensions/validation_helpers_spec.rb +7 -0
- data/spec/integration/plugin_test.rb +48 -13
- metadata +6 -4
- data/lib/sequel/adapters/db2.rb +0 -229
- data/lib/sequel/adapters/dbi.rb +0 -102
data/lib/sequel/adapters/dbi.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
require 'dbi'
|
2
|
-
Sequel::Deprecation.deprecate 'The dbi adapter is deprecated and will be removed in a future version of Sequel. Please switch to another adapter.'
|
3
|
-
|
4
|
-
module Sequel
|
5
|
-
module DBI
|
6
|
-
class Database < Sequel::Database
|
7
|
-
set_adapter_scheme :dbi
|
8
|
-
|
9
|
-
DBI_ADAPTERS = {
|
10
|
-
:ado => "ADO",
|
11
|
-
:db2 => "DB2",
|
12
|
-
:frontbase => "FrontBase",
|
13
|
-
:interbase => "InterBase",
|
14
|
-
:msql => "Msql",
|
15
|
-
:mysql => "Mysql",
|
16
|
-
:odbc => "ODBC",
|
17
|
-
:oracle => "Oracle",
|
18
|
-
:pg => "pg",
|
19
|
-
:proxy => "Proxy",
|
20
|
-
:sqlite => "SQLite",
|
21
|
-
:sqlrelay => "SQLRelay"
|
22
|
-
}
|
23
|
-
|
24
|
-
# Converts a uri to an options hash. These options are then passed
|
25
|
-
# to a newly created database object.
|
26
|
-
def self.uri_to_options(uri) # :nodoc:
|
27
|
-
database = (m = /\/(.*)/.match(uri.path)) && (m[1])
|
28
|
-
if m = /dbi-(.+)/.match(uri.scheme)
|
29
|
-
adapter = DBI_ADAPTERS[m[1].to_sym] || m[1]
|
30
|
-
database = "#{adapter}:dbname=#{database}"
|
31
|
-
end
|
32
|
-
{
|
33
|
-
:user => uri.user,
|
34
|
-
:password => uri.password,
|
35
|
-
:host => uri.host,
|
36
|
-
:port => uri.port,
|
37
|
-
:database => database
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
private_class_method :uri_to_options
|
42
|
-
|
43
|
-
def connect(server)
|
44
|
-
opts = server_opts(server)
|
45
|
-
dbname = opts[:database]
|
46
|
-
if dbname !~ /^DBI:/ then
|
47
|
-
dbname = "DBI:#{dbname}"
|
48
|
-
[:host, :port].each{|sym| dbname += ";#{sym}=#{opts[sym]}" unless blank_object?(opts[sym])}
|
49
|
-
end
|
50
|
-
::DBI.connect(dbname, opts[:user], opts[:password])
|
51
|
-
end
|
52
|
-
|
53
|
-
def disconnect_connection(c)
|
54
|
-
c.disconnect
|
55
|
-
end
|
56
|
-
|
57
|
-
def execute(sql, opts=OPTS)
|
58
|
-
synchronize(opts[:server]) do |conn|
|
59
|
-
r = log_yield(sql){conn.execute(sql)}
|
60
|
-
yield(r) if block_given?
|
61
|
-
r
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def execute_dui(sql, opts=OPTS)
|
66
|
-
synchronize(opts[:server]){|conn| log_yield(sql){conn.do(sql)}}
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
def adapter_initialize
|
72
|
-
case @opts[:db_type]
|
73
|
-
when 'mssql'
|
74
|
-
Sequel.require 'adapters/shared/mssql'
|
75
|
-
extend Sequel::MSSQL::DatabaseMethods
|
76
|
-
extend_datasets Sequel::MSSQL::DatasetMethods
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
class Dataset < Sequel::Dataset
|
82
|
-
Database::DatasetClass = self
|
83
|
-
|
84
|
-
def fetch_rows(sql)
|
85
|
-
execute(sql) do |s|
|
86
|
-
begin
|
87
|
-
columns = cols = s.column_names.map{|c| output_identifier(c)}
|
88
|
-
@columns = columns
|
89
|
-
s.fetch do |r|
|
90
|
-
row = {}
|
91
|
-
cols.each{|c| row[c] = r.shift}
|
92
|
-
yield row
|
93
|
-
end
|
94
|
-
ensure
|
95
|
-
s.finish rescue nil
|
96
|
-
end
|
97
|
-
end
|
98
|
-
self
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|