61yao commented on code in PR #10594: URL: https://github.com/apache/pinot/pull/10594#discussion_r1178576475
########## pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java: ########## @@ -121,20 +132,23 @@ private void constructStatementListLegacy(List<TransformFunction> arguments) { for (int i = 0; i < numWhenStatements; i++) { _whenStatements.add(arguments.get(i)); } - for (int i = numWhenStatements; i < numWhenStatements * 2 + 1; i++) { - _elseThenStatements.add(arguments.get(i)); + for (int i = numWhenStatements; i < numWhenStatements * 2; i++) { + _thenStatements.add(arguments.get(i)); + } + if (arguments.size() % 2 != 0) { + _elseStatement = arguments.get(arguments.size() - 1); } } private TransformResultMetadata calculateResultMetadata() { - TransformFunction elseStatement = _elseThenStatements.get(0); + TransformFunction elseStatement = _elseStatement; Review Comment: done ########## pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java: ########## @@ -241,226 +266,768 @@ public TransformResultMetadata getResultMetadata() { } /** - * Evaluate the ValueBlock for the WHEN statements, returns an array with the - * index(1 to N) of matched WHEN clause ordered by match priority, 0 means nothing - * matched, so go to ELSE. + * Evaluate the ValueBlock for the WHEN statements, returns an array with the index(1 to N) of matched WHEN clause + * -1 means there is no match. */ - private int[] getSelectedArray(ValueBlock valueBlock) { + private int[] getSelectedArray(ValueBlock valueBlock, boolean nullHandlingEnabled) { int numDocs = valueBlock.getNumDocs(); if (_selectedResults == null || _selectedResults.length < numDocs) { _selectedResults = new int[numDocs]; - } else { - Arrays.fill(_selectedResults, 0, numDocs, 0); - Arrays.fill(_selections, false); } + Arrays.fill(_selectedResults, 0, numDocs, -1); Review Comment: done -- 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