private void resultToIndexDescProtoBuilder(final String qualifier, final IndexDescProto.Builder builder, final ResultSet res) throws SQLException { builder.setIndexName(res.getString("index_name")); builder.setIndexMethod(getIndexMethod(res.getString("index_type").trim())); builder.setIndexPath(res.getString("path")); String[] columnNames, dataTypes, orders, nullOrders; columnNames = res.getString("column_names").trim().split(","); dataTypes = res.getString("data_types").trim().split("\\|"); orders = res.getString("orders").trim().split(","); nullOrders = res.getString("null_orders").trim().split(","); int columnNum = columnNames.length; for (int i = 0; i < columnNum; i++) { SortSpecProto.Builder colSpecBuilder = SortSpecProto.newBuilder(); colSpecBuilder.setColumn(ColumnProto.newBuilder().setName(IdentifierUtil.buildFQName(qualifier, columnNames[i])) .setType(TypeStringEncoder.decode(dataTypes[i]).getProto()).build()); colSpecBuilder.setAscending(orders[i].equals("true")); colSpecBuilder.setNullFirst(nullOrders[i].equals("true")); builder.addKeySortSpecs(colSpecBuilder.build()); } builder.setIsUnique(res.getBoolean("is_unique")); builder.setIsClustered(res.getBoolean("is_clustered")); }
private void resultToIndexDescProtoBuilder(final String qualifier, final IndexDescProto.Builder builder, final ResultSet res) throws SQLException { builder.setIndexName(res.getString("index_name")); builder.setIndexMethod(getIndexMethod(res.getString("index_type").trim())); builder.setIndexPath(res.getString("path")); String[] columnNames, dataTypes, orders, nullOrders; columnNames = res.getString("column_names").trim().split(","); dataTypes = res.getString("data_types").trim().split(","); orders = res.getString("orders").trim().split(","); nullOrders = res.getString("null_orders").trim().split(","); int columnNum = columnNames.length; for (int i = 0; i < columnNum; i++) { SortSpecProto.Builder colSpecBuilder = SortSpecProto.newBuilder(); colSpecBuilder.setColumn(ColumnProto.newBuilder().setName(CatalogUtil.buildFQName(qualifier, columnNames[i])) .setDataType(CatalogUtil.newSimpleDataType(getDataType(dataTypes[i]))).build()); colSpecBuilder.setAscending(orders[i].equals("true")); colSpecBuilder.setNullFirst(nullOrders[i].equals("true")); builder.addKeySortSpecs(colSpecBuilder.build()); } builder.setIsUnique(res.getBoolean("is_unique")); builder.setIsClustered(res.getBoolean("is_clustered")); }
private void setDistinctAggregationEnforcer( ExecutionBlock firstStageBlock, DistinctGroupbyNode firstStageDistinctNode, ExecutionBlock secondStageBlock, DistinctGroupbyNode secondStageDistinctNode) { firstStageBlock.getEnforcer().enforceDistinctAggregation(firstStageDistinctNode.getPID(), DistinctAggregationAlgorithm.HASH_AGGREGATION, null); List<SortSpecArray> sortSpecArrays = new ArrayList<>(); int index = 0; for (GroupbyNode groupbyNode: firstStageDistinctNode.getSubPlans()) { List<SortSpecProto> sortSpecs = new ArrayList<>(); for (Column column: groupbyNode.getGroupingColumns()) { sortSpecs.add(SortSpecProto.newBuilder().setColumn(column.getProto()).build()); } sortSpecArrays.add( SortSpecArray.newBuilder() .setNodeId(secondStageDistinctNode.getSubPlans().get(index).getPID()) .addAllSortSpecs(sortSpecs).build()); } secondStageBlock.getEnforcer().enforceDistinctAggregation(secondStageDistinctNode.getPID(), DistinctAggregationAlgorithm.SORT_AGGREGATION, sortSpecArrays); }
private void setMultiStageAggregationEnforcer( ExecutionBlock firstStageBlock, DistinctGroupbyNode firstStageDistinctNode, ExecutionBlock secondStageBlock, DistinctGroupbyNode secondStageDistinctNode, ExecutionBlock thirdStageBlock, DistinctGroupbyNode thirdStageDistinctNode) { firstStageBlock.getEnforcer().enforceDistinctAggregation(firstStageDistinctNode.getPID(), true, MultipleAggregationStage.FIRST_STAGE, DistinctAggregationAlgorithm.HASH_AGGREGATION, null); secondStageBlock.getEnforcer().enforceDistinctAggregation(secondStageDistinctNode.getPID(), true, MultipleAggregationStage.SECOND_STAGE, DistinctAggregationAlgorithm.HASH_AGGREGATION, null); List<SortSpecArray> sortSpecArrays = new ArrayList<>(); int index = 0; for (GroupbyNode groupbyNode: firstStageDistinctNode.getSubPlans()) { List<SortSpecProto> sortSpecs = new ArrayList<>(); for (Column column: groupbyNode.getGroupingColumns()) { sortSpecs.add(SortSpecProto.newBuilder().setColumn(column.getProto()).build()); } sortSpecArrays.add( SortSpecArray.newBuilder() .setNodeId(thirdStageDistinctNode.getSubPlans().get(index).getPID()) .addAllSortSpecs(sortSpecs).build()); } thirdStageBlock.getEnforcer().enforceDistinctAggregation(thirdStageDistinctNode.getPID(), true, MultipleAggregationStage.THRID_STAGE, DistinctAggregationAlgorithm.SORT_AGGREGATION, sortSpecArrays); }
private void setMultiStageAggregationEnforcer( ExecutionBlock firstStageBlock, DistinctGroupbyNode firstStageDistinctNode, ExecutionBlock secondStageBlock, DistinctGroupbyNode secondStageDistinctNode, ExecutionBlock thirdStageBlock, DistinctGroupbyNode thirdStageDistinctNode) { firstStageBlock.getEnforcer().enforceDistinctAggregation(firstStageDistinctNode.getPID(), true, MultipleAggregationStage.FIRST_STAGE, DistinctAggregationAlgorithm.HASH_AGGREGATION, null); secondStageBlock.getEnforcer().enforceDistinctAggregation(secondStageDistinctNode.getPID(), true, MultipleAggregationStage.SECOND_STAGE, DistinctAggregationAlgorithm.HASH_AGGREGATION, null); List<SortSpecArray> sortSpecArrays = new ArrayList<SortSpecArray>(); int index = 0; for (GroupbyNode groupbyNode: firstStageDistinctNode.getSubPlans()) { List<SortSpecProto> sortSpecs = new ArrayList<SortSpecProto>(); for (Column column: groupbyNode.getGroupingColumns()) { sortSpecs.add(SortSpecProto.newBuilder().setColumn(column.getProto()).build()); } sortSpecArrays.add( SortSpecArray.newBuilder() .setNodeId(thirdStageDistinctNode.getSubPlans().get(index).getPID()) .addAllSortSpecs(sortSpecs).build()); } thirdStageBlock.getEnforcer().enforceDistinctAggregation(thirdStageDistinctNode.getPID(), true, MultipleAggregationStage.THRID_STAGE, DistinctAggregationAlgorithm.SORT_AGGREGATION, sortSpecArrays); }
private void setDistinctAggregationEnforcer( ExecutionBlock firstStageBlock, DistinctGroupbyNode firstStageDistinctNode, ExecutionBlock secondStageBlock, DistinctGroupbyNode secondStageDistinctNode) { firstStageBlock.getEnforcer().enforceDistinctAggregation(firstStageDistinctNode.getPID(), DistinctAggregationAlgorithm.HASH_AGGREGATION, null); List<SortSpecArray> sortSpecArrays = new ArrayList<SortSpecArray>(); int index = 0; for (GroupbyNode groupbyNode: firstStageDistinctNode.getSubPlans()) { List<SortSpecProto> sortSpecs = new ArrayList<SortSpecProto>(); for (Column column: groupbyNode.getGroupingColumns()) { sortSpecs.add(SortSpecProto.newBuilder().setColumn(column.getProto()).build()); } sortSpecArrays.add( SortSpecArray.newBuilder() .setNodeId(secondStageDistinctNode.getSubPlans().get(index).getPID()) .addAllSortSpecs(sortSpecs).build()); } secondStageBlock.getEnforcer().enforceDistinctAggregation(secondStageDistinctNode.getPID(), DistinctAggregationAlgorithm.SORT_AGGREGATION, sortSpecArrays); }
@Override public SortSpecProto getProto() { SortSpecProto.Builder builder = SortSpecProto.newBuilder(); builder.setColumn(sortKey.getProto()); builder.setAscending(ascending); builder.setNullFirst(nullsFirst); return builder.build(); } }
@Override public SortSpecProto getProto() { SortSpecProto.Builder builder = SortSpecProto.newBuilder(); builder.setColumn(sortKey.getProto()); builder.setAscending(ascending); builder.setNullFirst(nullsFirst); return builder.build(); } }