Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions ebean-api/src/main/java/io/ebean/meta/MetaQueryPlan.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
*/
public interface MetaQueryPlan {

/**
* Return the name of the database for the query.
*/
String dbName();

/**
* Return the bean type for the query.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ public String name() {
return name;
}

public String dbName() {
return server.name();
}

public String hash() {
return hash;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ abstract class DtoQueryPlanBase implements DtoQueryPlan, SpiQueryPlan {
private final QueryPlanMetric planMetric;
private final TimedMetric metric;
private final Class<?> beanType;
private final String dbName;
private final String name;
private final String hash;
private final String sql;
Expand All @@ -26,6 +27,7 @@ abstract class DtoQueryPlanBase implements DtoQueryPlan, SpiQueryPlan {
this.planMetric = request.createMetric();
this.metric = planMetric.metric();
this.beanType = request.type();
this.dbName = request.dbName();
this.name = request.name();
this.hash = request.hash();
this.sql = request.sql();
Expand Down Expand Up @@ -91,6 +93,6 @@ public void queryPlanInit(long thresholdMicros) {

@Override
public SpiDbQueryPlan createMeta(String bind, String planString) {
return new DQueryPlanOutput(beanType, name, hash, sql, profileLocation, bind, planString);
return new DQueryPlanOutput(beanType, dbName, name, hash, sql, profileLocation, bind, planString);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ public final void queryPlanInit(long thresholdMicros) {

@Override
public final DQueryPlanOutput createMeta(String bind, String planString) {
return new DQueryPlanOutput(beanType(), name, hash, sql, profileLocation, bind, planString);
return new DQueryPlanOutput(beanType(), server.name(), name, hash, sql, profileLocation, bind, planString);
}

public DataReader createDataReader(boolean unmodifiable, ResultSet rset) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
public final class DQueryPlanOutput implements MetaQueryPlan, SpiDbQueryPlan {

private final Class<?> beanType;
private final String dbName;
private final String label;
private final ProfileLocation profileLocation;

Expand All @@ -25,8 +26,9 @@ public final class DQueryPlanOutput implements MetaQueryPlan, SpiDbQueryPlan {
private Instant whenCaptured;
private Object tenantId;

public DQueryPlanOutput(Class<?> beanType, String label, String hash, String sql, ProfileLocation profileLocation, String bind, String plan) {
public DQueryPlanOutput(Class<?> beanType, String dbName, String label, String hash, String sql, ProfileLocation profileLocation, String bind, String plan) {
this.beanType = beanType;
this.dbName = dbName;
this.label = label;
this.hash = hash;
this.sql = sql;
Expand All @@ -35,6 +37,11 @@ public DQueryPlanOutput(Class<?> beanType, String label, String hash, String sql
this.plan = plan;
}

@Override
public String dbName() {
return dbName;
}

@Override
public String hash() {
return hash;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ public final class SqlQueryPlan implements SpiQueryPlan {
private final String name;
private final String hash;
private final String sql;
private final String dbName;
private final SpiQueryBindCapture bindCapture;

SqlQueryPlan(SpiEbeanServer server, String name, String sql) {
this.name = name;
this.sql = sql;
this.dbName = server.name();
this.hash = Md5.hash(sql, name);
this.bindCapture = server.createQueryBindCapture(this);
}
Expand Down Expand Up @@ -77,6 +79,6 @@ public void queryPlanInit(long thresholdMicros) {

@Override
public SpiDbQueryPlan createMeta(String bind, String planString) {
return new DQueryPlanOutput(null, name, hash, sql, null, bind, planString);
return new DQueryPlanOutput(null, dbName, name, hash, sql, null, bind, planString);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ void nativeDtoQuery_capturesQueryPlan() {
.orElse(null);

assertThat(dtoPlan).as("captured a native DTO query plan").isNotNull();
assertThat(dtoPlan.dbName()).isEqualTo(DB.getDefault().name());
assertThat(dtoPlan.sql()).contains("from o_customer where id > ?");
assertThat(dtoPlan.plan()).isNotEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ void sqlQuery_capturesQueryPlan() {
.orElse(null);

assertThat(sqlPlan).as("captured a SqlQuery query plan").isNotNull();
assertThat(sqlPlan.dbName()).isEqualTo(DB.getDefault().name());
assertThat(sqlPlan.sql()).contains("from o_customer where id > ?");
assertThat(sqlPlan.plan()).isNotEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ public void test_finders_queryPlans() {
request.maxTimeMillis(10_000);
List<MetaQueryPlan> plans0 = server().metaInfo().queryPlanCollectNow(request);
assertThat(plans0).isNotEmpty();
assertThat(plans0).extracting(MetaQueryPlan::dbName).containsOnly(server().name());

for (MetaQueryPlan plan : plans0) {
logger.info("queryPlan label:{}, queryTimeMicros:{} captureMicros:{} whenCaptured:{} captureCount:{} loc:{} sql:{} bind:{} plan:{}",
Expand Down
Loading