use of com.actiontech.dble.net.mysql.FieldPacket in project dble by actiontech.
the class ShowCreateView method sendOutTheViewInfo.
public static void sendOutTheViewInfo(ServerConnection c, String schema, String viewName) throws Exception {
// check if the view or schema is not exists
if (schema == null || "".equals(schema)) {
throw new Exception(" No database selected");
}
SchemaMeta schemaMeta = DbleServer.getInstance().getTmManager().getCatalogs().get(schema);
if (schemaMeta == null) {
throw new Exception("Table '" + schema + "." + viewName + "' doesn't exist");
}
ViewMeta view = schemaMeta.getViewMetas().get(viewName);
if (view == null) {
throw new Exception("Table '" + schema + "." + viewName + "' doesn't exist");
}
ByteBuffer buffer = c.allocate();
// write header
buffer = HEADER.write(buffer, c, true);
// write fields
for (FieldPacket field : FIELDS) {
buffer = field.write(buffer, c, true);
}
// write eof
buffer = EOF.write(buffer, c, true);
// write rows
byte packetId = EOF.getPacketId();
RowDataPacket row = getRow(view, c.getCharset().getResults(), c.getCharset().getCollation());
row.setPacketId(++packetId);
buffer = row.write(buffer, c, true);
// write last eof
EOFPacket lastEof = new EOFPacket();
lastEof.setPacketId(++packetId);
buffer = lastEof.write(buffer, c, true);
// write buffer
c.write(buffer);
}
use of com.actiontech.dble.net.mysql.FieldPacket in project dble by actiontech.
the class OneRawSQLQueryResultHandler method onHeader.
@Override
public void onHeader(List<byte[]> fields) {
fieldCount = fields.size();
fetchColPosMap = new HashMap<>();
for (String watchFd : fetchCols) {
for (int i = 0; i < fieldCount; i++) {
byte[] field = fields.get(i);
FieldPacket fieldPkg = new FieldPacket();
fieldPkg.read(field);
String fieldName = new String(fieldPkg.getName());
if (watchFd.equalsIgnoreCase(fieldName)) {
fetchColPosMap.put(fieldName, i);
}
}
}
}
use of com.actiontech.dble.net.mysql.FieldPacket in project dble by actiontech.
the class SelectIdentity method response.
public static void response(ServerConnection c, String stmt, int aliasIndex, final String orgName) {
String alias = ParseUtil.parseAlias(stmt, aliasIndex);
if (alias == null) {
alias = orgName;
}
ByteBuffer buffer = c.allocate();
// write header
buffer = HEADER.write(buffer, c, true);
// write fields
byte packetId = HEADER.getPacketId();
FieldPacket field = PacketUtil.getField(alias, orgName, Fields.FIELD_TYPE_LONGLONG);
field.setPacketId(++packetId);
buffer = field.write(buffer, c, true);
// write eof
EOFPacket eof = new EOFPacket();
eof.setPacketId(++packetId);
buffer = eof.write(buffer, c, true);
// write rows
RowDataPacket row = new RowDataPacket(FIELD_COUNT);
row.add(LongUtil.toBytes(c.getLastInsertId()));
row.setPacketId(++packetId);
buffer = row.write(buffer, c, true);
// write last eof
EOFPacket lastEof = new EOFPacket();
lastEof.setPacketId(++packetId);
buffer = lastEof.write(buffer, c, true);
// post write
c.write(buffer);
}
use of com.actiontech.dble.net.mysql.FieldPacket in project dble by actiontech.
the class SelectLastInsertId method response.
public static void response(ServerConnection c, String stmt, int aliasIndex) {
String alias = ParseUtil.parseAlias(stmt, aliasIndex);
if (alias == null) {
alias = ORG_NAME;
}
ByteBuffer buffer = c.allocate();
// write header
buffer = HEADER.write(buffer, c, true);
// write fields
byte packetId = HEADER.getPacketId();
FieldPacket field = PacketUtil.getField(alias, ORG_NAME, Fields.FIELD_TYPE_LONGLONG);
field.setPacketId(++packetId);
buffer = field.write(buffer, c, true);
// write eof
EOFPacket eof = new EOFPacket();
eof.setPacketId(++packetId);
buffer = eof.write(buffer, c, true);
// write rows
RowDataPacket row = new RowDataPacket(FIELD_COUNT);
row.add(LongUtil.toBytes(c.getLastInsertId()));
row.setPacketId(++packetId);
buffer = row.write(buffer, c, true);
// write last eof
EOFPacket lastEof = new EOFPacket();
lastEof.setPacketId(++packetId);
buffer = lastEof.write(buffer, c, true);
// post write
c.write(buffer);
}
use of com.actiontech.dble.net.mysql.FieldPacket in project dble by actiontech.
the class SelectTxReadOnly method response.
public static void response(ServerConnection c) {
ByteBuffer buffer = c.allocate();
buffer = HEADER.write(buffer, c, true);
for (FieldPacket field : FIELDS) {
buffer = field.write(buffer, c, true);
}
buffer = EOF.write(buffer, c, true);
byte packetId = EOF.getPacketId();
RowDataPacket row = new RowDataPacket(FIELD_COUNT);
int result = c.isReadOnly() ? 1 : 0;
row.add(LongUtil.toBytes(result));
row.setPacketId(++packetId);
buffer = row.write(buffer, c, true);
EOFPacket lastEof = new EOFPacket();
lastEof.setPacketId(++packetId);
buffer = lastEof.write(buffer, c, true);
c.write(buffer);
}
Aggregations