diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java index 080d95560..f214e3fd8 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java @@ -590,14 +590,16 @@ public final class InternalConfiguration { */ QueryPlanLogger queryPlanLogger(Platform platform) { switch (platform.base()) { - case POSTGRES: - return new QueryPlanLoggerPostgres(); case SQLSERVER: return new QueryPlanLoggerSqlServer(); case ORACLE: return new QueryPlanLoggerOracle(); + case POSTGRES: + return new QueryPlanLoggerExplain("explain (analyze, buffers) "); + case YUGABYTE: + return new QueryPlanLoggerExplain("explain (analyze, buffers, dist) "); default: - return new QueryPlanLoggerExplain(); + return new QueryPlanLoggerExplain("explain "); } } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerExplain.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerExplain.java index 3af04a56c..a782543bd 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerExplain.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerExplain.java @@ -17,9 +17,16 @@ import static java.lang.System.Logger.Level.WARNING; */ public final class QueryPlanLoggerExplain extends QueryPlanLogger { + private final String prefix; + + public QueryPlanLoggerExplain(String prefix) { + this.prefix = prefix; + } + + @SuppressWarnings("all") @Override public SpiDbQueryPlan collectPlan(Connection conn, SpiQueryPlan plan, BindCapture bind) { - try (PreparedStatement explainStmt = conn.prepareStatement("EXPLAIN " + plan.sql())) { + try (PreparedStatement explainStmt = conn.prepareStatement(prefix + plan.sql())) { bind.prepare(explainStmt, conn); try (ResultSet rset = explainStmt.executeQuery()) { return readQueryPlan(plan, bind, rset); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerPostgres.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerPostgres.java deleted file mode 100644 index bc4912074..000000000 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/QueryPlanLoggerPostgres.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.ebeaninternal.server.query; - -import io.ebeaninternal.api.CoreLog; -import io.ebeaninternal.api.SpiDbQueryPlan; -import io.ebeaninternal.api.SpiQueryPlan; -import io.ebeaninternal.server.bind.capture.BindCapture; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import static java.lang.System.Logger.Level.WARNING; - -/** - * A QueryPlanLogger for Postgres that prefixes "EXPLAIN ANALYZE" to the query. - */ -public final class QueryPlanLoggerPostgres extends QueryPlanLogger { - - @Override - public SpiDbQueryPlan collectPlan(Connection conn, SpiQueryPlan plan, BindCapture bind) { - String explain = "explain (analyze, buffers) " + plan.sql(); - try (PreparedStatement explainStmt = conn.prepareStatement(explain)) { - bind.prepare(explainStmt, conn); - try (ResultSet rset = explainStmt.executeQuery()) { - return readQueryPlanBasic(plan, bind, rset); - } - } catch (SQLException e) { - CoreLog.log.log(WARNING, "Could not log query plan: " + explain, e); - return null; - } - } -}