sequel 5.20.0 → 5.21.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 +24 -0
- data/doc/opening_databases.rdoc +2 -1
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/sharding.rdoc +2 -0
- data/lib/sequel/adapters/ado.rb +27 -19
- data/lib/sequel/adapters/jdbc/mysql.rb +2 -2
- data/lib/sequel/adapters/shared/sqlite.rb +11 -1
- data/lib/sequel/adapters/sqlite.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -0
- data/lib/sequel/extensions/named_timezones.rb +2 -0
- data/lib/sequel/extensions/pg_json.rb +316 -123
- data/lib/sequel/extensions/server_block.rb +15 -4
- data/lib/sequel/plugins/rcte_tree.rb +6 -0
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mssql_spec.rb +24 -0
- data/spec/adapters/mysql_spec.rb +0 -5
- data/spec/adapters/postgres_spec.rb +180 -1
- data/spec/extensions/pg_json_spec.rb +206 -29
- data/spec/extensions/rcte_tree_spec.rb +6 -0
- data/spec/extensions/server_block_spec.rb +38 -0
- data/spec/integration/dataset_test.rb +1 -1
- metadata +4 -2
@@ -254,6 +254,12 @@ describe Sequel::Model, "rcte_tree" do
|
|
254
254
|
@db.sqls.must_equal ["SELECT * FROM nodes",
|
255
255
|
'WITH t AS (SELECT parent_id AS x_root_x, nodes.* FROM nodes WHERE ((parent_id IN (2, 6, 7)) AND (i = 1)) UNION ALL SELECT t.x_root_x, nodes.* FROM nodes INNER JOIN t ON (t.id = nodes.parent_id) WHERE (i = 1)) SELECT * FROM t AS nodes WHERE (i = 1)']
|
256
256
|
end
|
257
|
+
|
258
|
+
it "should disallow eager graphing of ancestors and descendants" do
|
259
|
+
@c.plugin :rcte_tree
|
260
|
+
proc{@c.eager_graph(:ancestors)}.must_raise Sequel::Error
|
261
|
+
proc{@c.eager_graph(:descendants)}.must_raise Sequel::Error
|
262
|
+
end
|
257
263
|
end
|
258
264
|
|
259
265
|
describe Sequel::Model, "rcte_tree with composite keys" do
|
@@ -95,3 +95,41 @@ describe "Database#with_server multi threaded" do
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
+
describe "Database#with_server with invalid servers" do
|
99
|
+
def sqls(server)
|
100
|
+
@db.with_server(server) do
|
101
|
+
@db[:t].all
|
102
|
+
@db[:t].insert
|
103
|
+
@db[:t].update(:a=>1)
|
104
|
+
@db[:t].delete
|
105
|
+
end
|
106
|
+
@db.sqls
|
107
|
+
end
|
108
|
+
|
109
|
+
it "when single threaded and no servers_hash" do
|
110
|
+
@db = Sequel.mock(:single_threaded=>true, :servers=>{:a=>{}}).extension(:server_block)
|
111
|
+
sqls(:a).must_equal ["SELECT * FROM t -- a", "INSERT INTO t DEFAULT VALUES -- a", "UPDATE t SET a = 1 -- a", "DELETE FROM t -- a"]
|
112
|
+
sqls(:c).must_equal ["SELECT * FROM t", "INSERT INTO t DEFAULT VALUES", "UPDATE t SET a = 1", "DELETE FROM t"]
|
113
|
+
end
|
114
|
+
|
115
|
+
it "when multi-threaded and no servers_hash" do
|
116
|
+
@db = Sequel.mock(:servers=>{:a=>{}}).extension(:server_block)
|
117
|
+
sqls(:a).must_equal ["SELECT * FROM t -- a", "INSERT INTO t DEFAULT VALUES -- a", "UPDATE t SET a = 1 -- a", "DELETE FROM t -- a"]
|
118
|
+
sqls(:c).must_equal ["SELECT * FROM t", "INSERT INTO t DEFAULT VALUES", "UPDATE t SET a = 1", "DELETE FROM t"]
|
119
|
+
end
|
120
|
+
|
121
|
+
it "when single threaded and servers_hash" do
|
122
|
+
@db = Sequel.mock(:single_threaded=>true, :servers=>{:a=>{}, :b=>{}}, :servers_hash=>Hash.new{|_,k| raise}.merge!(:c=>:b)).extension(:server_block)
|
123
|
+
sqls(:a).must_equal ["SELECT * FROM t -- a", "INSERT INTO t DEFAULT VALUES -- a", "UPDATE t SET a = 1 -- a", "DELETE FROM t -- a"]
|
124
|
+
sqls(:c).must_equal ["SELECT * FROM t -- b", "INSERT INTO t DEFAULT VALUES -- b", "UPDATE t SET a = 1 -- b", "DELETE FROM t -- b"]
|
125
|
+
proc{sqls(:d)}.must_raise(RuntimeError)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "when multi-threaded and servers_hash" do
|
129
|
+
@db = Sequel.mock(:servers=>{:a=>{}, :b=>{}}, :servers_hash=>Hash.new{|_,k| raise}.merge!(:c=>:b)).extension(:server_block)
|
130
|
+
sqls(:a).must_equal ["SELECT * FROM t -- a", "INSERT INTO t DEFAULT VALUES -- a", "UPDATE t SET a = 1 -- a", "DELETE FROM t -- a"]
|
131
|
+
sqls(:c).must_equal ["SELECT * FROM t -- b", "INSERT INTO t DEFAULT VALUES -- b", "UPDATE t SET a = 1 -- b", "DELETE FROM t -- b"]
|
132
|
+
proc{sqls(:d)}.must_raise(RuntimeError)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
@@ -957,7 +957,7 @@ if DB.dataset.supports_window_functions?
|
|
957
957
|
must_equal [{:sum=>110, :id=>1}, {:sum=>1100, :id=>2}, {:sum=>11000, :id=>3}, {:sum=>110000, :id=>4}, {:sum=>100000, :id=>5}, {:sum=>nil, :id=>6}]
|
958
958
|
end
|
959
959
|
|
960
|
-
cspecify "should give correct results for aggregate window functions with offsets for RANGES", :mssql, :sqlite, [proc{DB.server_version < 110000}, :postgres] do
|
960
|
+
cspecify "should give correct results for aggregate window functions with offsets for RANGES", :mssql, [proc{DB.sqlite_version < 32800}, :sqlite], [proc{DB.server_version < 110000}, :postgres] do
|
961
961
|
@ds.select(:id){sum(:amount).over(:order=>:group_id, :frame=>{:type=>:range, :start=>1}).as(:sum)}.all.
|
962
962
|
must_equal [{:sum=>111, :id=>1}, {:sum=>111, :id=>2}, {:sum=>111, :id=>3}, {:sum=>111111, :id=>4}, {:sum=>111111, :id=>5}, {:sum=>111111, :id=>6}]
|
963
963
|
@ds.select(:id){sum(:amount).over(:order=>:group_id, :frame=>{:type=>:range, :start=>0, :end=>1}).as(:sum)}.all.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -204,6 +204,7 @@ extra_rdoc_files:
|
|
204
204
|
- doc/release_notes/5.18.0.txt
|
205
205
|
- doc/release_notes/5.19.0.txt
|
206
206
|
- doc/release_notes/5.20.0.txt
|
207
|
+
- doc/release_notes/5.21.0.txt
|
207
208
|
files:
|
208
209
|
- CHANGELOG
|
209
210
|
- MIT-LICENSE
|
@@ -295,6 +296,7 @@ files:
|
|
295
296
|
- doc/release_notes/5.19.0.txt
|
296
297
|
- doc/release_notes/5.2.0.txt
|
297
298
|
- doc/release_notes/5.20.0.txt
|
299
|
+
- doc/release_notes/5.21.0.txt
|
298
300
|
- doc/release_notes/5.3.0.txt
|
299
301
|
- doc/release_notes/5.4.0.txt
|
300
302
|
- doc/release_notes/5.5.0.txt
|