From 697f67c14a7fe5484c6169ff7d6718d70cda70db Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Tue, 28 Jun 2016 06:46:16 +1200 Subject: [PATCH] #753 - @History "as of" query errors when executed a second time - invalid bind parameter --- .../com/avaje/ebeaninternal/server/query/CQueryPlan.java | 8 ++++++++ .../ebeaninternal/server/query/CQueryPredicates.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPlan.java b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPlan.java index 72e7ea4ff..f4f831cef 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPlan.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPlan.java @@ -70,6 +70,8 @@ public class CQueryPlan { protected final DataTimeZone dataTimeZone; + private final int asOfTableCount; + /** * Key used to identify the query plan in audit logging. */ @@ -86,6 +88,7 @@ public class CQueryPlan { this.stats = new CQueryPlanStats(this, server.isCollectQueryOrigins()); this.planKey = request.getQueryPlanKey(); this.autoTuned = request.getQuery().isAutoTuned(); + this.asOfTableCount = request.getQuery().getAsOfTableCount(); if (sqlRes != null) { this.sql = sqlRes.getSql(); this.rowNumberIncluded = sqlRes.isIncludesRowNumberColumn(); @@ -111,6 +114,7 @@ public class CQueryPlan { this.stats = new CQueryPlanStats(this, server.isCollectQueryOrigins()); this.planKey = buildPlanKey(sql, rawSql, rowNumberIncluded, logWhereSql); this.autoTuned = false; + this.asOfTableCount = 0; this.sql = sql; this.sqlTree = sqlTree; this.rawSql = rawSql; @@ -151,6 +155,10 @@ public class CQueryPlan { return dataBind; } + public int getAsOfTableCount() { + return asOfTableCount; + } + public boolean isAutoTuned() { return autoTuned; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPredicates.java b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPredicates.java index c04bdd2e2..52f4aec9d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPredicates.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryPredicates.java @@ -136,7 +136,7 @@ public class CQueryPredicates { dataBind.append(", "); } - int asOfTableCount = query.getAsOfTableCount(); + int asOfTableCount = request.getQueryPlan().getAsOfTableCount(); if (asOfTableCount > 0) { // bind the asOf value for each table alias as part of the from/join clauses // there is one effective date predicate per table alias