bmg 0.20.1 → 0.20.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35789fefdd2032b4e807b730fb2fc6f5abe163e1
4
- data.tar.gz: 2f20b907d1f66560cbe802c6b3fe3e4064b7bfd0
3
+ metadata.gz: bb2c9a67394ec85b7898ecf5c3d0b0dcf9532666
4
+ data.tar.gz: 6a8c8ed5c60392299225c7187e2d05ac95b59798
5
5
  SHA512:
6
- metadata.gz: 8c1182190f70a94825505f358701e3ba728eadcfe7026da40f10b7b7dc9b2ff21d8f2f9ec2ccf24baa880b81728e9ef530830e168a33a2742a196c135445d0e5
7
- data.tar.gz: b2e7ef1f3bf5983cfd3ff6fbaff820a04f9f118e39df88728ad6c87fec7261269b9fe22f60d44f9d141ce47c78db5e91399345475835f5c88c7b44b16a1c5873
6
+ metadata.gz: 633a62f541c6f2fe87d20de2809fd2dc3166d1118320623ea3c16edd54435a164ef45d11d8a8475f927203abb0e247083525d280393dc30c0ffc06ff485c70ba
7
+ data.tar.gz: c8b357936dc6511d3e955b80da8b48dee258adef5d2ad1cd1024fd45c3bd895ed31a382fcf27141c32afa9d0e7728c38866bd1f720830b29fdb941f98dec1411
@@ -68,6 +68,20 @@ module Bmg
68
68
 
69
69
  protected ### optimization
70
70
 
71
+ def _allbut(type, butlist)
72
+ new_roots = wrapped_roots!
73
+ separator = @options[:split]
74
+ down = operand.type.attrlist!.select { |attr|
75
+ root = attr.to_s.split(separator).map(&:to_sym).first
76
+ butlist.include?(root)
77
+ }
78
+ r = operand.allbut(down)
79
+ r = r.autowrap(options) unless (butlist & new_roots == new_roots)
80
+ r
81
+ rescue UnknownAttributesError
82
+ super
83
+ end
84
+
71
85
  def _autowrap(type, opts)
72
86
  if same_options?(opts)
73
87
  self
@@ -122,11 +136,12 @@ module Bmg
122
136
  end
123
137
 
124
138
  def _project(type, attrlist)
125
- if (wrapped_roots! & attrlist).empty?
126
- operand.project(attrlist).autowrap(options)
127
- else
128
- super
129
- end
139
+ separator = @options[:split]
140
+ to_keep = operand.type.attrlist!.select { |attr|
141
+ root = attr.to_s.split(separator).map(&:to_sym).first
142
+ attrlist.include?(root)
143
+ }
144
+ operand.project(to_keep).autowrap(options)
130
145
  rescue UnknownAttributesError
131
146
  super
132
147
  end
@@ -169,6 +184,7 @@ module Bmg
169
184
 
170
185
  def wrapped_roots_of!(r, opts)
171
186
  raise UnknownAttributesError unless r.type.knows_attrlist?
187
+
172
188
  Support.wrapped_roots(r.type.to_attrlist, opts[:split])
173
189
  end
174
190
 
@@ -67,6 +67,10 @@ module Bmg
67
67
  operand.restrict(predicate).project(attrlist)
68
68
  end
69
69
 
70
+ def _allbut(type, butlist)
71
+ Project.new(type, @operand, attrlist - butlist)
72
+ end
73
+
70
74
  protected ### inspect
71
75
 
72
76
  def args
@@ -11,7 +11,7 @@ module Bmg
11
11
  def on_with_exp(sexpr)
12
12
  if sequel_db.select(1).supports_cte?
13
13
  dataset = apply(sexpr.select_exp)
14
- apply(sexpr.with_spec).each_pair do |name,subquery|
14
+ apply(sexpr.with_spec).each_pair do |name, subquery|
15
15
  dataset = dataset.with(name, subquery)
16
16
  end
17
17
  dataset
@@ -39,6 +39,10 @@ module Bmg
39
39
  not(group_by_clause.nil?)
40
40
  end
41
41
 
42
+ def order_by?
43
+ not(order_by_clause.nil?)
44
+ end
45
+
42
46
  def ordering
43
47
  obc = order_by_clause
44
48
  obc && order_by_clause.to_ordering
@@ -18,12 +18,19 @@ module Bmg
18
18
  alias :on_intersect :on_set_operator
19
19
 
20
20
  def on_select_exp(sexpr)
21
- sexpr = builder.from_self(sexpr) if obc = sexpr.limit_or_offset?
21
+ sexpr = builder.from_self(sexpr) if must_from_self?(sexpr)
22
+
22
23
  limit_clause = builder.limit_clause(limit)
23
24
  offset_clause = builder.offset_clause(offset)
24
25
  sexpr.with_push(limit_clause, offset_clause)
25
26
  end
26
27
 
28
+ private
29
+
30
+ def must_from_self?(sexpr)
31
+ sexpr.limit_or_offset?
32
+ end
33
+
27
34
  end # class LimitOffset
28
35
  end # class Processor
29
36
  end # module Sql
@@ -17,7 +17,7 @@ module Bmg
17
17
  alias :on_intersect :on_set_operator
18
18
 
19
19
  def on_select_exp(sexpr)
20
- if obc = sexpr.order_by_clause
20
+ if sexpr.order_by? || sexpr.group_by?
21
21
  sexpr = builder.from_self(sexpr)
22
22
  call(sexpr)
23
23
  else
data/lib/bmg/type.rb CHANGED
@@ -46,6 +46,11 @@ module Bmg
46
46
  attr_accessor :attrlist
47
47
  protected :attrlist=
48
48
 
49
+ def attrlist!
50
+ knows_attrlist!
51
+ attrlist
52
+ end
53
+
49
54
  def with_attrlist(attrlist)
50
55
  dup.tap{|x|
51
56
  x.attrlist = attrlist
data/lib/bmg/version.rb CHANGED
@@ -2,7 +2,7 @@ module Bmg
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 20
5
- TINY = 1
5
+ TINY = 4
6
6
  end
7
7
  VERSION = "#{Version::MAJOR}.#{Version::MINOR}.#{Version::TINY}"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.1
4
+ version: 0.20.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernard Lambeau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-31 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: predicate