Merge pull request #3713 from actiontech/3.22.07.99/lts_2215

[inner-2215] in execute protocol, prepare sql need to be recorded in sql_log (cherry pick)
This commit is contained in:
wenyh
2023-05-30 19:14:55 +08:00
committed by GitHub
2 changed files with 15 additions and 4 deletions
@@ -291,6 +291,11 @@ public class RWSplitService extends BusinessService<SingleDbGroupUserConfig> {
try {
RwSplitServerParse serverParse = ServerParseFactory.getRwSplitParser();
String sql = mm.readString(getCharset().getClient());
if (sql.endsWith(";")) {
sql = sql.substring(0, sql.length() - 1).trim();
}
sql = sql.trim();
final String finalSql = sql;
int rs = serverParse.parse(sql);
int sqlType = rs & 0xff;
if (sqlType == ServerParse.SELECT) {
@@ -300,7 +305,7 @@ public class RWSplitService extends BusinessService<SingleDbGroupUserConfig> {
if (isSuccess) {
long statementId = ByteUtil.readUB4(resp, 5);
int paramCount = ByteUtil.readUB2(resp, 11);
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, true));
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, true, finalSql));
}
}, false);
} else {
@@ -308,7 +313,7 @@ public class RWSplitService extends BusinessService<SingleDbGroupUserConfig> {
if (isSuccess) {
long statementId = ByteUtil.readUB4(resp, 5);
int paramCount = ByteUtil.readUB2(resp, 11);
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, false));
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, false, finalSql));
}
}, false);
}
@@ -317,7 +322,7 @@ public class RWSplitService extends BusinessService<SingleDbGroupUserConfig> {
if (isSuccess) {
long statementId = ByteUtil.readUB4(resp, 5);
int paramCount = ByteUtil.readUB2(resp, 11);
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, true));
psHolder.put(statementId, new PreparedStatementHolder(data, paramCount, true, finalSql));
}
});
}
@@ -8,11 +8,13 @@ public class PreparedStatementHolder {
private final boolean mustMaster;
private byte[] fieldType;
private boolean needAddFieldType;
private String prepareSql;
public PreparedStatementHolder(byte[] prepareOrigin, int paramsCount, boolean mustMaster) {
public PreparedStatementHolder(byte[] prepareOrigin, int paramsCount, boolean mustMaster, String sql) {
this.prepareOrigin = prepareOrigin;
this.paramsCount = paramsCount;
this.mustMaster = mustMaster;
this.prepareSql = sql;
}
public boolean isMustMaster() {
@@ -52,4 +54,8 @@ public class PreparedStatementHolder {
public int getParamsCount() {
return paramsCount;
}
public String getPrepareSql() {
return prepareSql;
}
}