mirror of
https://github.com/actiontech/dble.git
synced 2026-01-06 04:40:17 -06:00
ATK-4339&ATK-4341 :fix hint doesn't work
This commit is contained in:
@@ -158,6 +158,10 @@ public class RWSplitNonBlockingSession {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug("route sql {} to {}", sql, dbInstance);
|
||||
}
|
||||
endRoute();
|
||||
setPreExecuteEnd(RwTraceResult.SqlTraceType.RWSPLIT_QUERY);
|
||||
setTraceSimpleHandler((ResponseHandler) handler);
|
||||
traceResult.setDBInstance(dbInstance);
|
||||
dbInstance.getConnection(rwSplitService.getSchema(), handler, null, false);
|
||||
} catch (Exception e) {
|
||||
executeException(e, sql);
|
||||
|
||||
@@ -49,18 +49,18 @@ public class RWSplitQueryHandler implements FrontendQueryHandler {
|
||||
}
|
||||
int rs = RwSplitServerParse.parse(sql);
|
||||
int sqlType = rs & 0xff;
|
||||
if (AppendTraceId.getInstance().isEnable()) {
|
||||
sql = String.format("/*+ trace_id=%d-%d */ %s", session.getService().getConnection().getId(), session.getService().getSqlUniqueId().incrementAndGet(), sql);
|
||||
}
|
||||
|
||||
session.getService().setExecuteSql(sql);
|
||||
|
||||
session.endParse();
|
||||
int hintLength = RouteService.isHintSql(sql);
|
||||
|
||||
if (hintLength >= 0) {
|
||||
session.executeHint(sqlType, sql, null);
|
||||
} else {
|
||||
|
||||
if (AppendTraceId.getInstance().isEnable()) {
|
||||
sql = String.format("/*+ trace_id=%d-%d */ %s", session.getService().getConnection().getId(), session.getService().getSqlUniqueId().incrementAndGet(), sql);
|
||||
}
|
||||
session.getService().setExecuteSql(sql);
|
||||
if (AppendTraceId.getInstance().isEnable()) {
|
||||
CommandPacket packet = new CommandPacket();
|
||||
packet.setCommand(COM_QUERY);
|
||||
|
||||
@@ -94,6 +94,10 @@ public final class RouteService {
|
||||
int endPos = stmt.substring(hintLength).indexOf("*/") + hintLength;
|
||||
if (endPos > 0) {
|
||||
hintInfo = parseHintSql(stmt, hintLength, endPos);
|
||||
if (AppendTraceId.getInstance().isEnable()) {
|
||||
String sql = String.format("/*+ trace_id=%d-%d */ %s", service.getConnection().getId(), service.getSqlUniqueId().incrementAndGet(), hintInfo.getRealSQL());
|
||||
hintInfo.setRealSQL(sql);
|
||||
}
|
||||
service.setExecuteSql(hintInfo.getRealSQL());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user