use of com.actiontech.dble.plan.common.item.function.sumfunc.ItemSum in project dble by actiontech.
the class OrderedGroupByHandler method sendGroupRowPacket.
private void sendGroupRowPacket(MySQLConnection conn) {
RowDataPacket newRp = new RowDataPacket(this.fieldPackets.size() + this.sums.size());
for (ItemSum sum : this.sums) {
byte[] tmp = sum.getRowPacketByte();
newRp.add(tmp);
}
for (int i = 0; i < originRp.getFieldCount(); i++) {
newRp.add(originRp.getValue(i));
}
nextHandler.rowResponse(null, newRp, this.isLeft, conn);
}
use of com.actiontech.dble.plan.common.item.function.sumfunc.ItemSum in project dble by actiontech.
the class OrderedGroupByHandler method prepareSumAggregators.
/**
* see Sql_executor.cc
*
* @return
*/
protected void prepareSumAggregators(List<ItemSum> functions, List<ItemSum> sumFunctions, List<FieldPacket> packets, boolean isAllPushDown, boolean needDistinct, MySQLConnection conn) {
LOGGER.info("prepare_sum_aggregators");
for (int i = 0; i < functions.size(); i++) {
ItemSum func = functions.get(i);
ResultStore store = null;
if (func.hasWithDistinct()) {
ItemSum selFunc = sumFunctions.get(i);
List<Order> orders = HandlerTool.makeOrder(selFunc.arguments());
RowDataComparator distinctCmp = new RowDataComparator(packets, orders, isAllPushDown, this.type());
store = new DistinctLocalResult(pool, packets.size(), distinctCmp, this.charset).setMemSizeController(session.getOtherBufferMC());
distinctStores.add(store);
}
func.setAggregator(needDistinct && func.hasWithDistinct() ? AggregatorType.DISTINCT_AGGREGATOR : AggregatorType.SIMPLE_AGGREGATOR, store);
}
}
use of com.actiontech.dble.plan.common.item.function.sumfunc.ItemSum in project dble by actiontech.
the class OrderedGroupByHandler method sendGroupFieldPackets.
/**
* new fieldPackets: generated function result + origin fieldpackets
*/
private void sendGroupFieldPackets(BackendConnection conn) {
List<FieldPacket> newFps = new ArrayList<>();
for (ItemSum sum1 : sums) {
Item sum = sum1;
FieldPacket tmp = new FieldPacket();
sum.makeField(tmp);
newFps.add(tmp);
}
newFps.addAll(this.fieldPackets);
nextHandler.fieldEofResponse(null, null, newFps, null, this.isLeft, conn);
}
Aggregations