pinot icon indicating copy to clipboard operation
pinot copied to clipboard

[multistage] support HAVING clause

Open walterddr opened this issue 3 years ago • 1 comments

Add support for HAVING clause for basic operators (=. !=, <, <=, >, >=)

  • adding FilterNode for intermediate stage
  • adding FilterOperator and operands since predicates are not actually functions.

TODO: since intermediate stage treats all operands with data type. it is not suitable to convert it back to literal strings like the FilterContext is doing in the pinot server leaf stage. Thus we need to unify

  1. the Predicate/FilterContext and the intermediate stage FilterOperator/Operands
  2. the TransformFunction vs the PostAggregate ScalarFunction/FunctionInvoker

walterddr avatar Aug 24 '22 15:08 walterddr

Codecov Report

Merging #9274 (eac41f8) into master (718f41f) will increase coverage by 0.98%. The diff coverage is 81.06%.

@@             Coverage Diff              @@
##             master    #9274      +/-   ##
============================================
+ Coverage     68.75%   69.74%   +0.98%     
- Complexity     4755     5046     +291     
============================================
  Files          1859     1873      +14     
  Lines         99129    99721     +592     
  Branches      15077    15167      +90     
============================================
+ Hits          68161    69546    +1385     
+ Misses        26076    25237     -839     
- Partials       4892     4938      +46     
Flag Coverage Δ
integration1 26.08% <0.00%> (-0.34%) :arrow_down:
integration2 24.81% <0.00%> (?)
unittests1 67.10% <81.06%> (+0.01%) :arrow_up:
unittests2 15.34% <81.06%> (+<0.01%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...e/pinot/query/runtime/operator/FilterOperator.java 64.00% <64.00%> (ø)
...ry/runtime/operator/operands/TransformOperand.java 70.00% <70.00%> (ø)
...query/runtime/operator/operands/FilterOperand.java 76.78% <76.78%> (ø)
...ot/query/runtime/executor/WorkerQueryExecutor.java 94.73% <100.00%> (+3.82%) :arrow_up:
...inot/query/runtime/operator/TransformOperator.java 80.00% <100.00%> (-7.15%) :arrow_down:
...ery/runtime/operator/operands/FunctionOperand.java 100.00% <100.00%> (ø)
...uery/runtime/operator/operands/LiteralOperand.java 100.00% <100.00%> (ø)
...ry/runtime/operator/operands/ReferenceOperand.java 100.00% <100.00%> (ø)
...g/apache/pinot/server/api/resources/ErrorInfo.java 0.00% <0.00%> (-100.00%) :arrow_down:
...data/manager/realtime/DefaultSegmentCommitter.java 0.00% <0.00%> (-80.00%) :arrow_down:
... and 190 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

codecov-commenter avatar Aug 24 '22 18:08 codecov-commenter