use of com.actiontech.dble.plan.visitor.MySQLItemVisitor in project dble by actiontech.
the class DruidSelectParser method isSumFuncOrSubQuery.
private boolean isSumFuncOrSubQuery(String schema, SQLExpr itemExpr) {
MySQLItemVisitor ev = new MySQLItemVisitor(schema, CharsetUtil.getCharsetDefaultIndex("utf8"), DbleServer.getInstance().getTmManager());
itemExpr.accept(ev);
Item selItem = ev.getItem();
return contaisSumFuncOrSubquery(selItem);
}
use of com.actiontech.dble.plan.visitor.MySQLItemVisitor in project dble by actiontech.
the class ShowTables method responseDirect.
private static void responseDirect(ServerConnection c, String cSchema, ShowCreateStmtInfo info) {
ByteBuffer buffer = c.allocate();
Map<String, String> tableMap = getTableSet(cSchema, info);
PackageBufINf bufInf;
if (info.isFull()) {
List<FieldPacket> fieldPackets = new ArrayList<>(2);
bufInf = writeFullTablesHeader(buffer, c, cSchema, fieldPackets);
if (info.getWhere() != null) {
MySQLItemVisitor mev = new MySQLItemVisitor(c.getSchema(), c.getCharset().getResultsIndex(), DbleServer.getInstance().getTmManager());
info.getWhereExpr().accept(mev);
List<Field> sourceFields = HandlerTool.createFields(fieldPackets);
Item whereItem = HandlerTool.createItem(mev.getItem(), sourceFields, 0, false, DMLResponseHandler.HandlerType.WHERE);
bufInf = writeFullTablesRow(bufInf.getBuffer(), c, tableMap, bufInf.getPacketId(), whereItem, sourceFields);
} else {
bufInf = writeFullTablesRow(bufInf.getBuffer(), c, tableMap, bufInf.getPacketId(), null, null);
}
} else {
bufInf = writeTablesHeaderAndRows(buffer, c, tableMap, cSchema);
}
writeRowEof(bufInf.getBuffer(), c, bufInf.getPacketId());
}
use of com.actiontech.dble.plan.visitor.MySQLItemVisitor in project dble by actiontech.
the class ShowTablesHandler method fieldEofResponse.
@Override
public void fieldEofResponse(byte[] header, List<byte[]> fields, List<FieldPacket> fieldPacketsNull, byte[] eof, boolean isLeft, BackendConnection conn) {
ServerConnection source = session.getSource();
buffer = allocBuffer();
PackageBufINf bufInf;
if (info.isFull()) {
List<FieldPacket> fieldPackets = new ArrayList<>(2);
bufInf = ShowTables.writeFullTablesHeader(buffer, source, showTableSchema, fieldPackets);
packetId = bufInf.getPacketId();
buffer = bufInf.getBuffer();
if (info.getWhere() != null) {
MySQLItemVisitor mev = new MySQLItemVisitor(source.getSchema(), source.getCharset().getResultsIndex(), DbleServer.getInstance().getTmManager());
info.getWhereExpr().accept(mev);
sourceFields = HandlerTool.createFields(fieldPackets);
whereItem = HandlerTool.createItem(mev.getItem(), sourceFields, 0, false, DMLResponseHandler.HandlerType.WHERE);
bufInf = ShowTables.writeFullTablesRow(buffer, source, shardingTablesMap, packetId, whereItem, sourceFields);
packetId = bufInf.getPacketId();
buffer = bufInf.getBuffer();
} else {
bufInf = ShowTables.writeFullTablesRow(buffer, source, shardingTablesMap, packetId, null, null);
packetId = bufInf.getPacketId();
buffer = bufInf.getBuffer();
}
} else {
bufInf = ShowTables.writeTablesHeaderAndRows(buffer, source, shardingTablesMap, showTableSchema);
packetId = bufInf.getPacketId();
buffer = bufInf.getBuffer();
}
}
Aggregations