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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a23883464db0f7638a741072ace4c6251c99ccca
4
- data.tar.gz: d09ef94c849e83df926a0b494bd4da4c02925e53
3
+ metadata.gz: bd0467d9928ac5366eec849cb7def564dd0d8ae3
4
+ data.tar.gz: 9588371163cbb077511b8b094360bb4ac4c7573d
5
5
  SHA512:
6
- metadata.gz: ccdef2dbf2a090258ae0c89d5a35ae18c45859a2842c2236989583a8cf9ffe9c6394f734fca5d5e510c67554267c09f97d1f395f65d645deab0c6ac442158728
7
- data.tar.gz: 4ab9d3132fd5d7af46bcc57282f14fc76946a9c94acd077d40b1ee61045b528bde159aefb76f044bf574bfc6a4ec9fd9baea7a1dd53c3ebe010151828e230ab7
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
- if TagExpressionNode === args[1]
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, [args1] + intermediate, fallback: nil).evaluate(environment, options)
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 " \
@@ -1,3 +1,3 @@
1
1
  module Hotdog
2
- VERSION = "0.17.0"
2
+ VERSION = "0.17.1"
3
3
  end
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.0
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-25 00:00:00.000000000 Z
11
+ date: 2016-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler