private static int show2SqlHCheck(String stmt, int offset) { if (stmt.length() > offset + "IGH".length()) { char c1 = stmt.charAt(++offset); char c2 = stmt.charAt(++offset); char c3 = stmt.charAt(++offset); if ((c1 == 'I' || c1 == 'i') && (c2 == 'G' || c2 == 'g') && (c3 == 'H' || c3 == 'h')) { return boolTailCheck(stmt, offset, SQL_HIGH); } } return OTHER; }
char cTest = stmt.charAt(offset + 1); if (cTest == 'S' || cTest == 's') { return checkWherePlus(stmt, ++offset, TABLE_DATA_NODE); return OTHER; return show2DataNWhereCheck(stmt, offset); default: return OTHER;
private static int checkWherePlus(String stmt, int offset, int expectCode) { while (stmt.length() > ++offset) { switch (stmt.charAt(offset)) { case ' ': case '\r': case '\n': case '\t': continue; case 'W': case 'w': if (!ParseUtil.isSpace(stmt.charAt(offset - 1))) { return OTHER; } return checkWhereTableInfo(stmt, offset, expectCode); default: return OTHER; } } return OTHER; }
private static int showACheck(String stmt, int offset) { while (stmt.length() > ++offset) { switch (stmt.charAt(offset)) { case 'l': case 'L': continue; case 'g': case 'G': return show2Algorithm(stmt, offset); case 'e': case 'E': return show2Alert(stmt, offset); default: return OTHER; } } return OTHER; }
private static int show2SqlBlankCheck(String stmt, int offset) { for (++offset; stmt.length() > offset; ) { switch (stmt.charAt(offset)) { case ' ': continue; case 'W': case 'w': if (isWhere(stmt, offset)) { return SQL; } else { return OTHER; } default: if (!isBoolean(stmt.substring(offset))) { return OTHER; } return (offset << 8) | SQL; } } return OTHER; }
@Test public void testShowSQL() { Assert.assertEquals(ManagerParseShow.SQL, ManagerParseShow.parse("show @@sql where id = -1079800749", 5)); Assert.assertEquals(ManagerParseShow.SQL, ManagerParseShow.parse("SHOW @@SQL WHERE ID = -1079800749", 5)); Assert.assertEquals(ManagerParseShow.SQL, ManagerParseShow.parse("show @@Sql WHERE ID = -1079800749", 5)); Assert.assertEquals(ManagerParseShow.SQL, ManagerParseShow.parse("show @@sql where id=-1079800749", 5)); Assert.assertEquals(ManagerParseShow.SQL, ManagerParseShow.parse("show @@sql where id =-1079800749 ", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@sql where id :-1079800749 ", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@sql whereid =-1079800749 ", 5)); }
@Test public void testGetWhere() { Assert.assertEquals("123", ManagerParseShow.getWhereParameter("where id = 123")); Assert.assertEquals("datanode", ManagerParseShow.getWhereParameter("where datanode = datanode")); Assert.assertEquals("schema", ManagerParseShow.getWhereParameter("where schema =schema ")); }
private static int boolTailCheck(String stmt, int offset, int result) { while (stmt.length() > ++offset) { switch (stmt.charAt(offset)) { case ' ': continue; default: if (!isBoolean(stmt.substring(offset))) { return OTHER; } return (offset << 8) | result; } } return result; }
private static int show2Algorithm(String stmt, int offset) { if (stmt.length() > offset + "orithm ".length()) { char c2 = stmt.charAt(++offset); char c3 = stmt.charAt(++offset); char c4 = stmt.charAt(++offset); char c5 = stmt.charAt(++offset); char c6 = stmt.charAt(++offset); char c7 = stmt.charAt(++offset); if ((c2 == 'O' || c2 == 'o') && (c3 == 'R' || c3 == 'r') && (c4 == 'I' || c4 == 'i') && (c5 == 'T' || c5 == 't') && (c6 == 'H' || c6 == 'h') && (c7 == 'M' || c7 == 'm')) { return checkWherePlus(stmt, offset, TABLE_ALGORITHM); } } return OTHER; }
return isSqlId(stmt, offset);
@Test public void testShowDatabase() { Assert.assertEquals(ManagerParseShow.DATABASE, ManagerParseShow.parse("show @@database", 5)); Assert.assertEquals(ManagerParseShow.DATABASE, ManagerParseShow.parse("SHOW @@DATABASE", 5)); Assert.assertEquals(ManagerParseShow.DATABASE, ManagerParseShow.parse("show @@DATABASE", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@DATABASEADSFASDF", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@DATABASE ASDFASDDF", 5)); }
public static void response(ManagerConnection c, String stmt) { 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(); String name = ManagerParseShow.getWhereParameter(stmt); for (RowDataPacket row : getRows(name, c.getCharset().getResults())) { 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); }
private static int show2SqlSLCheck(String stmt, int offset) { if (stmt.length() > offset + "OW".length()) { char c1 = stmt.charAt(++offset); char c2 = stmt.charAt(++offset); if ((c1 == 'O' || c1 == 'o') && (c2 == 'W' || c2 == 'w')) { while (stmt.length() > ++offset) { switch (stmt.charAt(offset)) { case ' ': continue; default: if (!isBoolean(stmt.substring(offset).trim())) { return OTHER; } return (offset << 8) | SQL_SLOW; } } return SQL_SLOW; } } return OTHER; }
@Test public void testShowCommand() { Assert.assertEquals(ManagerParseShow.COMMAND, ManagerParseShow.parse("show @@command", 5)); Assert.assertEquals(ManagerParseShow.COMMAND, ManagerParseShow.parse("SHOW @@COMMAND", 5)); Assert.assertEquals(ManagerParseShow.COMMAND, ManagerParseShow.parse("show @@COMMAND", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@COMMAND ASDSFASDFASDF", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@COMMANDASDSFASDFASDF", 5)); }
private static int show2SqlLCheck(String stmt, int offset) { if (stmt.length() > offset + "ARGE".length()) { char c1 = stmt.charAt(++offset); char c2 = stmt.charAt(++offset); char c3 = stmt.charAt(++offset); char c4 = stmt.charAt(++offset); if ((c1 == 'A' || c1 == 'a') && (c2 == 'R' || c2 == 'r') && (c3 == 'G' || c3 == 'g') && (c4 == 'E' || c4 == 'e')) { return boolTailCheck(stmt, offset, SQL_LARGE); } } return OTHER; }
@Test public void testShowConnection() { Assert.assertEquals(ManagerParseShow.CONNECTION, ManagerParseShow.parse("show @@connection", 5)); Assert.assertEquals(ManagerParseShow.CONNECTION, ManagerParseShow.parse("SHOW @@CONNECTION", 5)); Assert.assertEquals(ManagerParseShow.CONNECTION, ManagerParseShow.parse("show @@CONNECTION", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@CONNECTIONADFASDF", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@CONNECTION ADFASDF", 5)); }
private static int show2SqlRCheck(String stmt, int offset) { if (stmt.length() > offset + "ESULTSET".length()) { char c1 = stmt.charAt(++offset); char c2 = stmt.charAt(++offset); char c3 = stmt.charAt(++offset); char c4 = stmt.charAt(++offset); char c5 = stmt.charAt(++offset); char c6 = stmt.charAt(++offset); char c7 = stmt.charAt(++offset); char c8 = stmt.charAt(++offset); if ((c1 == 'E' || c1 == 'e') && (c2 == 'S' || c2 == 's') && (c3 == 'U' || c3 == 'u') && (c4 == 'l' || c4 == 'L') && (c5 == 'T' || c5 == 't') && (c6 == 'S' || c6 == 's') && (c7 == 'E' || c7 == 'e') && (c8 == 'T' || c8 == 't')) { return boolTailCheck(stmt, offset, SQL_RESULTSET); } } return OTHER; }
@Test public void testShowBackend() { Assert.assertEquals(ManagerParseShow.BACKEND, ManagerParseShow.parse("show @@backend", 5)); Assert.assertEquals(ManagerParseShow.BACKEND, ManagerParseShow.parse("SHOW @@BACkend", 5)); Assert.assertEquals(ManagerParseShow.BACKEND, ManagerParseShow.parse("show @@BACKEND ", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@backendASDFASDF", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@backend ASDFASDF", 5)); }
return boolTailCheck(stmt, offset, SQL_SUM_USER); return boolTailCheck(stmt, offset, SQL_SUM_TABLE); return boolTailCheck(stmt, offset, SQL_SUM_USER);
@Test public void testShowConnectionSQL() { Assert.assertEquals(ManagerParseShow.CONNECTION_SQL, ManagerParseShow.parse("show @@connection.sql", 5)); Assert.assertEquals(ManagerParseShow.CONNECTION_SQL, ManagerParseShow.parse("SHOW @@CONNECTION.SQL", 5)); Assert.assertEquals(ManagerParseShow.CONNECTION_SQL, ManagerParseShow.parse("show @@CONNECTION.Sql", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@CONNECTION.Sql ASDFASDF", 5)); Assert.assertEquals(ManagerParseShow.OTHER, ManagerParseShow.parse("show @@CONNECTION.SqlASDFASDF", 5)); }