Source:
<code>private void handleSubquery(ExpressionContext expression, List<IndexSegment> indexSegments, TimerContext timerContext, ExecutorService executorService, long endTimeMs) throws Exception { FunctionContext function = expression.getFunction(); <START> if (function == null) { <END> return; } List<ExpressionContext> arguments = function.getArguments(); if (StringUtils.remove(function.getFunctionName(), '_').equalsIgnoreCase(IN_PARTITIONED_SUBQUERY)) { Preconditions .checkState(arguments.size() == 2, "IN_PARTITIONED_SUBQUERY requires 2 arguments: expression, subquery"); ExpressionContext subqueryExpression = arguments.get(1); Preconditions.checkState(subqueryExpression.getType() == ExpressionContext.Type.LITERAL, "Second argument of IN_PARTITIONED_SUBQUERY must be a literal (subquery)"); QueryContext subquery = QueryContextConverterUtils.getQueryContextFromSQL(subqueryExpression.getLiteral()); DataTable dataTable = processQuery(indexSegments, subquery, timerContext, executorService, null, endTimeMs, false); IdSet idSet = dataTable.getObject(0, 0); String serializedIdSet = idSet.toBase64String(); function.setFunctionName(TransformFunctionType.INIDSET.name()); arguments.set(1, ExpressionContext.forLiteral(serializedIdSet)); } else { for (ExpressionContext argument : arguments) { handleSubquery(argument, indexSegments, timerContext, executorService, endTimeMs); } } }</code><technical_language>add java docs this method is</technical_language>

Target:
private void handleSubquery(ExpressionContext expression, List<IndexSegment> indexSegments, TimerContext timerContext, ExecutorService executorService, long endTimeMs) throws Exception { FunctionContext function = expression.getFunction(); if (function == null) { return; } List<ExpressionContext> arguments = function.getArguments(); if (StringUtils.remove(function.getFunctionName(), '_').equalsIgnoreCase(IN_PARTITIONED_SUBQUERY)) { Preconditions .checkState(arguments.size() == 2, "IN_PARTITIONED_SUBQUERY requires 2 arguments: expression, subquery"); ExpressionContext subqueryExpression = arguments.get(1); Preconditions.checkState(subqueryExpression.getType() == ExpressionContext.Type.LITERAL, "Second argument of IN_PARTITIONED_SUBQUERY must be a literal (subquery)"); QueryContext subquery = QueryContextConverterUtils.getQueryContextFromSQL(subqueryExpression.getLiteral()); AggregationFunction[] aggregationFunctions = subquery.getAggregationFunctions(); Preconditions.checkState(aggregationFunctions != null && aggregationFunctions.length == 1 && aggregationFunctions[0].getType() == AggregationFunctionType.IDSET && subquery.getGroupByExpressions() == null, "Subquery in IN_PARTITIONED_SUBQUERY should be an ID_SET aggregation only query, found: %s", subqueryExpression.getLiteral()); DataTable dataTable = processQuery(indexSegments, subquery, timerContext, executorService, null, endTimeMs, false); IdSet idSet = dataTable.getObject(0, 0); String serializedIdSet = idSet.toBase64String(); function.setFunctionName(TransformFunctionType.INIDSET.name()); arguments.set(1, ExpressionContext.forLiteral(serializedIdSet)); } else { for (ExpressionContext argument : arguments) { handleSubquery(argument, indexSegments, timerContext, executorService, endTimeMs); } } }