ATK-4339&ATK-4341 :fix hint doesn't work

This commit is contained in:
dcy
2025-04-23 15:29:41 +08:00
committed by Rico
parent 2641085233
commit 84d07287da
3 changed files with 13 additions and 5 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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());
}
}