hotdog 0.17.0 → 0.17.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.
- checksums.yaml +4 -4
- data/lib/hotdog/expression/semantics.rb +34 -18
- data/lib/hotdog/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd0467d9928ac5366eec849cb7def564dd0d8ae3
|
4
|
+
data.tar.gz: 9588371163cbb077511b8b094360bb4ac4c7573d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f7f359862f6d3b7b79a89d03b04406e3a4efb07655084f9526346c1db88601b45252918a910e5c2081bafff8b8ef334d9555e37b12c2db73915dda1a2c1b748
|
7
|
+
data.tar.gz: cd802bb419145c53342d0409aa1623e376b7577aaa09be595f2474c13bae62a2b96470d258839b0e9c12f69c002dda5b7e98204c1b81b9a75342fc30a337663c
|
@@ -437,10 +437,6 @@ module Hotdog
|
|
437
437
|
@args = args
|
438
438
|
end
|
439
439
|
|
440
|
-
def optimize(options={})
|
441
|
-
self
|
442
|
-
end
|
443
|
-
|
444
440
|
def dump(options={})
|
445
441
|
args = @args.map { |arg|
|
446
442
|
if ExpressionNode === arg
|
@@ -452,6 +448,38 @@ module Hotdog
|
|
452
448
|
{funcall: @function.to_s, args: args}
|
453
449
|
end
|
454
450
|
|
451
|
+
def optimize(options={})
|
452
|
+
case function
|
453
|
+
when :HEAD
|
454
|
+
@args[0] = @args[0].optimize(options)
|
455
|
+
when :GROUP_BY
|
456
|
+
@args[0] = @args[0].optimize(options)
|
457
|
+
if TagExpressionNode === args[1]
|
458
|
+
# workaround for expressions like `ORDER_BY((environment:development),role)`
|
459
|
+
@args[1] = @args[1].tag_name
|
460
|
+
else
|
461
|
+
@args[1] = @args[1]
|
462
|
+
end
|
463
|
+
when :ORDER_BY
|
464
|
+
@args[0] = @args[0].optimize(options)
|
465
|
+
if @args[1]
|
466
|
+
if TagExpressionNode === @args[1]
|
467
|
+
# workaround for expressions like `ORDER_BY((environment:development),role)`
|
468
|
+
@args[1] = @args[1].tag_name
|
469
|
+
else
|
470
|
+
@args[1] = @args[1]
|
471
|
+
end
|
472
|
+
end
|
473
|
+
when :REVERSE
|
474
|
+
@args[0] = @args[0].optimize(options)
|
475
|
+
when :SHUFFLE
|
476
|
+
@args[0] = @args[0].optimize(options)
|
477
|
+
when :TAIL
|
478
|
+
@args[0] = @args[0].optimize(options)
|
479
|
+
end
|
480
|
+
self
|
481
|
+
end
|
482
|
+
|
455
483
|
def evaluate(environment, options={})
|
456
484
|
case function
|
457
485
|
when :HEAD
|
@@ -462,27 +490,15 @@ module Hotdog
|
|
462
490
|
"INNER JOIN tags ON hosts_tags.tag_id = tags.id " \
|
463
491
|
"WHERE tags.name = ? AND hosts_tags.host_id IN (%s) " \
|
464
492
|
"GROUP BY tags.value;" % intermediate.map { "?" }.join(", ")
|
465
|
-
|
466
|
-
# workaround for expressions like `ORDER_BY((environment:development),role)`
|
467
|
-
args1 = args[1].tag_name
|
468
|
-
else
|
469
|
-
args1 = args[1]
|
470
|
-
end
|
471
|
-
QueryExpressionNode.new(q, [args1] + intermediate, fallback: nil).evaluate(environment, options)
|
493
|
+
QueryExpressionNode.new(q, [args[1]] + intermediate, fallback: nil).evaluate(environment, options)
|
472
494
|
when :ORDER_BY
|
473
495
|
intermediate = args[0].evaluate(environment, options)
|
474
496
|
if args[1]
|
475
|
-
if TagExpressionNode === args[1]
|
476
|
-
# workaround for expressions like `ORDER_BY((environment:development),role)`
|
477
|
-
args1 = args[1].tag_name
|
478
|
-
else
|
479
|
-
args1 = args[1]
|
480
|
-
end
|
481
497
|
q = "SELECT DISTINCT hosts_tags.host_id FROM hosts_tags " \
|
482
498
|
"INNER JOIN tags ON hosts_tags.tag_id = tags.id " \
|
483
499
|
"WHERE tags.name = ? AND hosts_tags.host_id IN (%s) " \
|
484
500
|
"ORDER BY tags.value;" % intermediate.map { "?" }.join(", ")
|
485
|
-
QueryExpressionNode.new(q, [
|
501
|
+
QueryExpressionNode.new(q, [args[1]] + intermediate, fallback: nil).evaluate(environment, options)
|
486
502
|
else
|
487
503
|
q = "SELECT DISTINCT hosts_tags.host_id FROM hosts_tags " \
|
488
504
|
"INNER JOIN tags ON hosts_tags.tag_id = tags.id " \
|
data/lib/hotdog/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotdog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yamashita Yuu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|