amrishlal commented on pull request #7678:
URL: https://github.com/apache/pinot/pull/7678#issuecomment-962528789


   The column names in the resultset look good now, but I think there is more 
here than meets the eye. During runtime `AsTransformFunction` is being 
constantly called by `DistinctOperator`. This appears to be redundant since 
`AsTransformFunction` is simply passing the underlying resultset and has no use 
during runtime. I think this can be fixed by making the following modification 
to `BrokerRequestToQueryContextConverter.java`:
   
   ```
             case "DISTINCT":
               // Handle alias
               operands = thriftExpression.getFunctionCall().getOperands();
               for (Expression operand : operands) {
                 if (operand.isSetFunctionCall() && 
operand.getFunctionCall().getOperator().equalsIgnoreCase("AS")) {
                   List<Expression> asOperands = 
operand.getFunctionCall().getOperands();
                   aliasList.add(asOperands.get(1).getIdentifier().getName());
   
                   // Now that alias has been set, we don't need AS function, 
so replace AS function with its first
                   // operand.
                   Expression mainOperand = asOperands.get(0);
                   operand.setType(mainOperand.getType());
                   operand.unsetFunctionCall();
   
                   switch (mainOperand.getType()) {
                     case LITERAL:
                       operand.setLiteral(mainOperand.getLiteral());
                       break;
                     case FUNCTION:
                       operand.setFunctionCall(mainOperand.getFunctionCall());
                       break;
                     case IDENTIFIER:
                       operand.setIdentifier(mainOperand.getIdentifier());
                       break;
                   }
                 } else {
                   aliasList.add(null);
                 }
               }
               break;
   
   ```
   However, this fix still appears a bit "hacky" since AsTransformFunction is 
used only during compile time and then discarded. One way to fix this might be 
to modify `org.apache.pinot.common.request.Function` to contain a list of 
output aliases (?) Since DISTINCT is a Function that outputs an entire row (and 
there are probably other functions like this), it makes sense for `Function` to 
have a list of aliases for the row output as well (?) and this will avoid the 
use of `AsTransformFunction` and all we would need to do is to fetch the list 
of aliases from the Function and set it (?)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to