From 0fd634092b853d7866a41e17eacdf4b1f758582d Mon Sep 17 00:00:00 2001 From: "Juan Pan(Trista)" Date: Tue, 17 Dec 2019 23:36:22 +0800 Subject: [PATCH] Modify query SQL for MySQLDAO (#4047) * Modify MySQLDAO and H2DAO --- .../jdbc/h2/dao/H2AggregationQueryDAO.java | 32 ++++++++------ .../plugin/jdbc/h2/dao/H2AlarmQueryDAO.java | 32 +++++++++----- .../plugin/jdbc/h2/dao/H2LogQueryDAO.java | 26 ++++++++--- .../plugin/jdbc/h2/dao/H2TraceQueryDAO.java | 25 +++++++---- .../jdbc/mysql/MySQLAggregationQueryDAO.java | 27 +++++++----- .../plugin/jdbc/mysql/MySQLAlarmQueryDAO.java | 44 +++++++++++-------- .../plugin/jdbc/mysql/MySQLLogQueryDAO.java | 12 ++--- .../plugin/jdbc/mysql/MySQLTraceQueryDAO.java | 11 +++-- 8 files changed, 131 insertions(+), 78 deletions(-) diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AggregationQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AggregationQueryDAO.java index 8621f099c4..2b19ce0778 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AggregationQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AggregationQueryDAO.java @@ -18,22 +18,32 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao; -import java.io.IOException; -import java.sql.*; -import java.util.*; +import lombok.AccessLevel; +import lombok.Getter; import org.apache.skywalking.oap.server.core.analysis.Downsampling; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; -import org.apache.skywalking.oap.server.core.query.entity.*; -import org.apache.skywalking.oap.server.core.register.*; +import org.apache.skywalking.oap.server.core.query.entity.Order; +import org.apache.skywalking.oap.server.core.query.entity.TopNEntity; +import org.apache.skywalking.oap.server.core.register.EndpointInventory; +import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory; import org.apache.skywalking.oap.server.core.storage.model.ModelName; import org.apache.skywalking.oap.server.core.storage.query.IAggregationQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + /** * @author wusheng + * @author panjuan */ public class H2AggregationQueryDAO implements IAggregationQueryDAO { + @Getter(AccessLevel.PROTECTED) private JDBCHikariCPClient h2Client; public H2AggregationQueryDAO(JDBCHikariCPClient h2Client) { @@ -75,24 +85,22 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO { } public List topNQuery(String indName, String valueCName, int topN, Downsampling downsampling, - long startTB, long endTB, Order order, AppendCondition appender) throws IOException { + long startTB, long endTB, Order order, AppendCondition appender) throws IOException { String indexName = ModelName.build(downsampling, indName); - StringBuilder sql = new StringBuilder(); List conditions = new ArrayList<>(10); sql.append("select * from (select avg(").append(valueCName).append(") value,").append(Metrics.ENTITY_ID).append(" from ") - .append(indexName).append(" where "); + .append(indexName).append(" where "); this.setTimeRangeCondition(sql, conditions, startTB, endTB); if (appender != null) { appender.append(sql, conditions); } sql.append(" group by ").append(Metrics.ENTITY_ID); sql.append(") order by value ").append(order.equals(Order.ASC) ? "asc" : "desc").append(" limit ").append(topN); - List topNEntities = new ArrayList<>(); try (Connection connection = h2Client.getConnection()) { try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), conditions.toArray(new Object[0]))) { - + try { while (resultSet.next()) { TopNEntity topNEntity = new TopNEntity(); @@ -110,10 +118,6 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO { return topNEntities; } - public JDBCHikariCPClient getClient() { - return h2Client; - } - protected void setTimeRangeCondition(StringBuilder sql, List conditions, long startTimestamp, long endTimestamp) { sql.append(Metrics.TIME_BUCKET).append(" >= ? and ").append(Metrics.TIME_BUCKET).append(" <= ?"); diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java index 51092ad648..c934bcaef7 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java @@ -18,19 +18,28 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao; -import java.io.IOException; -import java.sql.*; -import java.util.*; import org.apache.skywalking.oap.server.core.alarm.AlarmRecord; -import org.apache.skywalking.oap.server.core.query.entity.*; +import org.apache.skywalking.oap.server.core.query.entity.AlarmMessage; +import org.apache.skywalking.oap.server.core.query.entity.Alarms; +import org.apache.skywalking.oap.server.core.query.entity.Scope; import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; import org.elasticsearch.common.Strings; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + /** * @author wusheng + * @author panjuan */ public class H2AlarmQueryDAO implements IAlarmQueryDAO { + private JDBCHikariCPClient client; public H2AlarmQueryDAO(JDBCHikariCPClient client) { @@ -40,7 +49,6 @@ public class H2AlarmQueryDAO implements IAlarmQueryDAO { @Override public Alarms getAlarm(Integer scopeId, String keyword, int limit, int from, long startTB, long endTB) throws IOException { - StringBuilder sql = new StringBuilder(); List parameters = new ArrayList<>(10); sql.append("from ").append(AlarmRecord.INDEX_NAME).append(" where "); @@ -55,23 +63,23 @@ public class H2AlarmQueryDAO implements IAlarmQueryDAO { sql.append(" and ").append(AlarmRecord.TIME_BUCKET).append(" <= ?"); parameters.add(endTB); } - + if (!Strings.isNullOrEmpty(keyword)) { sql.append(" and ").append(AlarmRecord.ALARM_MESSAGE).append(" like '%").append(keyword).append("%' "); } sql.append(" order by ").append(AlarmRecord.START_TIME).append(" desc "); - + Alarms alarms = new Alarms(); try (Connection connection = client.getConnection()) { - + try (ResultSet resultSet = client.executeQuery(connection, "select count(1) total from (select 1 " + sql.toString() + " )", parameters.toArray(new Object[0]))) { while (resultSet.next()) { alarms.setTotal(resultSet.getInt("total")); } } - + this.buildLimit(sql, from, limit); - + try (ResultSet resultSet = client.executeQuery(connection, "select * " + sql.toString(), parameters.toArray(new Object[0]))) { while (resultSet.next()) { AlarmMessage message = new AlarmMessage(); @@ -80,14 +88,14 @@ public class H2AlarmQueryDAO implements IAlarmQueryDAO { message.setStartTime(resultSet.getLong(AlarmRecord.START_TIME)); message.setScope(Scope.Finder.valueOf(resultSet.getInt(AlarmRecord.SCOPE))); message.setScopeId(resultSet.getInt(AlarmRecord.SCOPE)); - + alarms.getMsgs().add(message); } } } catch (SQLException e) { throw new IOException(e); } - + return alarms; } diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java index 0f56256c49..3d1f971801 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java @@ -19,20 +19,36 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao; import com.google.common.base.Strings; -import java.io.IOException; -import java.sql.*; -import java.util.*; import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord; -import org.apache.skywalking.oap.server.core.query.entity.*; +import org.apache.skywalking.oap.server.core.query.entity.ContentType; +import org.apache.skywalking.oap.server.core.query.entity.Log; +import org.apache.skywalking.oap.server.core.query.entity.LogState; +import org.apache.skywalking.oap.server.core.query.entity.Logs; +import org.apache.skywalking.oap.server.core.query.entity.Pagination; import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; import org.apache.skywalking.oap.server.library.util.BooleanUtils; -import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.*; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.CONTENT; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.CONTENT_TYPE; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.ENDPOINT_ID; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.SERVICE_ID; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.SERVICE_INSTANCE_ID; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.STATUS_CODE; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.TIMESTAMP; +import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.TRACE_ID; /** * @author wusheng + * @author panjuan */ public class H2LogQueryDAO implements ILogQueryDAO { private JDBCHikariCPClient h2Client; diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2TraceQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2TraceQueryDAO.java index 6b11467cfd..e3999f6509 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2TraceQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2TraceQueryDAO.java @@ -19,18 +19,29 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao; import com.google.common.base.Strings; -import java.io.IOException; -import java.sql.*; -import java.util.*; import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord; -import org.apache.skywalking.oap.server.core.query.entity.*; +import org.apache.skywalking.oap.server.core.query.entity.BasicTrace; +import org.apache.skywalking.oap.server.core.query.entity.QueryOrder; +import org.apache.skywalking.oap.server.core.query.entity.Span; +import org.apache.skywalking.oap.server.core.query.entity.TraceBrief; +import org.apache.skywalking.oap.server.core.query.entity.TraceState; import org.apache.skywalking.oap.server.core.storage.query.ITraceQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; import org.apache.skywalking.oap.server.library.util.BooleanUtils; import org.elasticsearch.search.sort.SortOrder; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Collections; +import java.util.List; + /** * @author wusheng + * @author panjuan */ public class H2TraceQueryDAO implements ITraceQueryDAO { private JDBCHikariCPClient h2Client; @@ -170,11 +181,7 @@ public class H2TraceQueryDAO implements ITraceQueryDAO { return segmentRecords; } - @Override public List doFlexibleTraceQuery(String traceId) throws IOException { + @Override public List doFlexibleTraceQuery(String traceId) { return Collections.emptyList(); } - - protected JDBCHikariCPClient getClient() { - return h2Client; - } } diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAggregationQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAggregationQueryDAO.java index 8b328fa253..3d87db4d61 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAggregationQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAggregationQueryDAO.java @@ -18,18 +18,24 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql; -import java.io.IOException; -import java.sql.*; -import java.util.*; import org.apache.skywalking.oap.server.core.analysis.Downsampling; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; -import org.apache.skywalking.oap.server.core.query.entity.*; +import org.apache.skywalking.oap.server.core.query.entity.Order; +import org.apache.skywalking.oap.server.core.query.entity.TopNEntity; import org.apache.skywalking.oap.server.core.storage.model.ModelName; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; import org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao.H2AggregationQueryDAO; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + /** * @author wusheng + * @author panjuan */ public class MySQLAggregationQueryDAO extends H2AggregationQueryDAO { @@ -44,19 +50,18 @@ public class MySQLAggregationQueryDAO extends H2AggregationQueryDAO { String tableName = ModelName.build(downsampling, indName); StringBuilder sql = new StringBuilder(); List conditions = new ArrayList<>(10); - sql.append("select * from (select avg(").append(valueCName).append(") value,").append(Metrics.ENTITY_ID).append(" from ") - .append(tableName).append(" where "); + sql.append("select avg(").append(valueCName).append(") value,").append(Metrics.ENTITY_ID).append(" from ") + .append(tableName).append(" where "); this.setTimeRangeCondition(sql, conditions, startTB, endTB); if (appender != null) { appender.append(sql, conditions); } sql.append(" group by ").append(Metrics.ENTITY_ID); - sql.append(") AS METRICS order by value ").append(order.equals(Order.ASC) ? "asc" : "desc").append(" limit ").append(topN); - + sql.append(" order by value ").append(order.equals(Order.ASC) ? "asc" : "desc").append(" limit ").append(topN); + List topNEntities = new ArrayList<>(); - try (Connection connection = getClient().getConnection()) { - try (ResultSet resultSet = getClient().executeQuery(connection, sql.toString(), conditions.toArray(new Object[0]))) { - + try (Connection connection = getH2Client().getConnection()) { + try (ResultSet resultSet = getH2Client().executeQuery(connection, sql.toString(), conditions.toArray(new Object[0]))) { try { while (resultSet.next()) { TopNEntity topNEntity = new TopNEntity(); diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java index 0bfe110d02..524759617d 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java @@ -18,29 +18,37 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql; -import java.io.IOException; -import java.sql.*; -import java.util.*; import org.apache.skywalking.oap.server.core.alarm.AlarmRecord; -import org.apache.skywalking.oap.server.core.query.entity.*; +import org.apache.skywalking.oap.server.core.query.entity.AlarmMessage; +import org.apache.skywalking.oap.server.core.query.entity.Alarms; +import org.apache.skywalking.oap.server.core.query.entity.Scope; import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient; import org.elasticsearch.common.Strings; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + /** * @author wusheng + * @author panjuan */ public class MySQLAlarmQueryDAO implements IAlarmQueryDAO { + private JDBCHikariCPClient client; - + public MySQLAlarmQueryDAO(JDBCHikariCPClient client) { this.client = client; } - + @Override public Alarms getAlarm(Integer scopeId, String keyword, int limit, int from, long startTB, - long endTB) throws IOException { - + long endTB) throws IOException { StringBuilder sql = new StringBuilder(); List parameters = new ArrayList<>(10); sql.append("from ").append(AlarmRecord.INDEX_NAME).append(" where "); @@ -55,23 +63,23 @@ public class MySQLAlarmQueryDAO implements IAlarmQueryDAO { sql.append(" and ").append(AlarmRecord.TIME_BUCKET).append(" <= ?"); parameters.add(endTB); } - + if (!Strings.isNullOrEmpty(keyword)) { sql.append(" and ").append(AlarmRecord.ALARM_MESSAGE).append(" like '%").append(keyword).append("%' "); } sql.append(" order by ").append(AlarmRecord.START_TIME).append(" desc "); - + Alarms alarms = new Alarms(); try (Connection connection = client.getConnection()) { - - try (ResultSet resultSet = client.executeQuery(connection, "select count(1) total from (select 1 " + sql.toString() + " ) AS alarm", parameters.toArray(new Object[0]))) { + + try (ResultSet resultSet = client.executeQuery(connection, "select count(1) total " + sql.toString(), parameters.toArray(new Object[0]))) { while (resultSet.next()) { alarms.setTotal(resultSet.getInt("total")); } } - + this.buildLimit(sql, from, limit); - + try (ResultSet resultSet = client.executeQuery(connection, "select * " + sql.toString(), parameters.toArray(new Object[0]))) { while (resultSet.next()) { AlarmMessage message = new AlarmMessage(); @@ -80,18 +88,18 @@ public class MySQLAlarmQueryDAO implements IAlarmQueryDAO { message.setStartTime(resultSet.getLong(AlarmRecord.START_TIME)); message.setScope(Scope.Finder.valueOf(resultSet.getInt(AlarmRecord.SCOPE))); message.setScopeId(resultSet.getInt(AlarmRecord.SCOPE)); - + alarms.getMsgs().add(message); } } } catch (SQLException e) { throw new IOException(e); } - + return alarms; } - - protected void buildLimit(StringBuilder sql, int from, int limit) { + + private void buildLimit(StringBuilder sql, int from, int limit) { sql.append(" LIMIT ").append(from).append(", ").append(limit); } } diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLLogQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLLogQueryDAO.java index d61be023fd..5744e6c3af 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLLogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLLogQueryDAO.java @@ -23,18 +23,20 @@ import org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao.H2LogQueryDAO /** * @author wusheng + * @author panjuan */ public class MySQLLogQueryDAO extends H2LogQueryDAO { + public MySQLLogQueryDAO(JDBCHikariCPClient h2Client) { super(h2Client); } - + + @Override protected String buildCountStatement(String sql) { - return "select count(1) total from (select 1 " + sql + " )"; + return "select count(1) total " + sql; } - + protected void buildLimit(StringBuilder sql, int from, int limit) { - sql.append(" LIMIT ").append(limit); - sql.append(" OFFSET ").append(from); + sql.append(" LIMIT ").append(from).append(", ").append(limit); } } diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTraceQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTraceQueryDAO.java index 384d67edcb..bcbf47fa36 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTraceQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTraceQueryDAO.java @@ -23,16 +23,19 @@ import org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao.H2TraceQueryD /** * @author wusheng + * @author panjuan */ public class MySQLTraceQueryDAO extends H2TraceQueryDAO { + public MySQLTraceQueryDAO(JDBCHikariCPClient mysqlClient) { super(mysqlClient); } - - @Override protected String buildCountStatement(String sql) { - return "select count(1) total from (select 1 " + sql + " ) AS TRACE"; + + @Override + protected String buildCountStatement(String sql) { + return "select count(1) total " + sql; } - + @Override protected void buildLimit(StringBuilder sql, int from, int limit) { sql.append(" LIMIT ").append(from).append(", ").append(limit); } -- GitLab