diff --git a/src/main/java/com/actiontech/dble/rwsplit/RWSplitNonBlockingSession.java b/src/main/java/com/actiontech/dble/rwsplit/RWSplitNonBlockingSession.java index 5ae19edae..925b30a61 100644 --- a/src/main/java/com/actiontech/dble/rwsplit/RWSplitNonBlockingSession.java +++ b/src/main/java/com/actiontech/dble/rwsplit/RWSplitNonBlockingSession.java @@ -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); diff --git a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitQueryHandler.java b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitQueryHandler.java index 7ca09c0cf..21ae9f93f 100644 --- a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitQueryHandler.java +++ b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitQueryHandler.java @@ -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); diff --git a/src/main/java/com/actiontech/dble/singleton/RouteService.java b/src/main/java/com/actiontech/dble/singleton/RouteService.java index d25ae5395..c9418d389 100644 --- a/src/main/java/com/actiontech/dble/singleton/RouteService.java +++ b/src/main/java/com/actiontech/dble/singleton/RouteService.java @@ -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()); } }