Repository: phoenix Updated Branches: refs/heads/calcite 59d05d3a2 -> 2e5a91875
Upgrade Calcite dependence to 1.3-incubating Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2e5a9187 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2e5a9187 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2e5a9187 Branch: refs/heads/calcite Commit: 2e5a91875e61c571a61f82f7268913d8acc06956 Parents: 59d05d3 Author: maryannxue <wei....@intel.com> Authored: Thu Jun 11 16:58:30 2015 -0400 Committer: maryannxue <wei....@intel.com> Committed: Thu Jun 11 16:58:30 2015 -0400 ---------------------------------------------------------------------- .../org/apache/phoenix/calcite/CalciteTest.java | 132 +++++++++---------- .../calcite/rel/PhoenixAbstractAggregate.java | 23 ++-- ...hoenixJoinSingleValueAggregateMergeRule.java | 19 ++- pom.xml | 4 +- 4 files changed, 89 insertions(+), 89 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/2e5a9187/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java index 2774aa1..96c3d96 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java @@ -435,9 +435,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { @Test public void testAggregate() { start().sql("select a_string, count(entity_id) from atable group by a_string") .explainIs("PhoenixToEnumerableConverter\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT()])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT()])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][] { {"a", 4L}, {"b", 4L}, @@ -447,9 +446,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { start().sql("select count(entity_id), a_string from atable group by a_string") .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$0=[COUNT()])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][] { {4L, "a"}, {4L, "b"}, @@ -458,14 +456,13 @@ public class CalciteTest extends BaseClientManagedTimeIT { start().sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name") .explainIs("PhoenixToEnumerableConverter\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT()])\n" + - " PhoenixPostJoinProject(NAME=[$2])\n" + - " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + - " PhoenixServerProject(supplier_id=[$5])\n" + - " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + - " PhoenixToClientConverter\n" + - " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + - " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT()])\n" + + " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + + " PhoenixServerProject(supplier_id=[$5])\n" + + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + + " PhoenixToClientConverter\n" + + " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + + " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") .resultIs(new Object[][] { {"S1", 2L}, {"S2", 2L}, @@ -477,9 +474,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { @Test public void testDistinct() { start().sql("select distinct a_string from aTable") .explainIs("PhoenixToEnumerableConverter\n" + - " PhoenixServerAggregate(group=[{0}])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][]{ {"a"}, {"b"}, @@ -526,9 +522,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" + " PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$0=[COUNT()])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][] { {1L, "c"}, {4L, "b"}, @@ -538,14 +533,13 @@ public class CalciteTest extends BaseClientManagedTimeIT { start().sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name order by count(\"item_id\"), s.name desc") .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT()])\n" + - " PhoenixPostJoinProject(NAME=[$2])\n" + - " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + - " PhoenixServerProject(supplier_id=[$5])\n" + - " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + - " PhoenixToClientConverter\n" + - " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + - " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT()])\n" + + " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + + " PhoenixServerProject(supplier_id=[$5])\n" + + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + + " PhoenixToClientConverter\n" + + " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + + " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") .resultIs(new Object[][] { {"S6", 1L}, {"S5", 1L}, @@ -607,9 +601,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" + " PhoenixLimit(fetch=[2])\n" + " PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$0=[COUNT()])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][] { {1L, "c"}, {4L, "b"}}) @@ -619,14 +612,13 @@ public class CalciteTest extends BaseClientManagedTimeIT { .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixLimit(fetch=[3])\n" + " PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT()])\n" + - " PhoenixPostJoinProject(NAME=[$2])\n" + - " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + - " PhoenixServerProject(supplier_id=[$5])\n" + - " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + - " PhoenixToClientConverter\n" + - " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + - " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT()])\n" + + " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + + " PhoenixServerProject(supplier_id=[$5])\n" + + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + + " PhoenixToClientConverter\n" + + " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + + " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") .resultIs(new Object[][] { {"S6", 1L}, {"S5", 1L}, @@ -670,9 +662,8 @@ public class CalciteTest extends BaseClientManagedTimeIT { .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" + " PhoenixLimit(fetch=[2])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$0=[COUNT()])\n" + - " PhoenixServerProject(A_STRING=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()])\n" + + " PhoenixTableScan(table=[[phoenix, ATABLE]])\n") .resultIs(new Object[][] { {4L, "a"}, {4L, "b"}}) @@ -681,14 +672,13 @@ public class CalciteTest extends BaseClientManagedTimeIT { start().sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name limit 3") .explainIs("PhoenixToEnumerableConverter\n" + " PhoenixLimit(fetch=[3])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT()])\n" + - " PhoenixPostJoinProject(NAME=[$2])\n" + - " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + - " PhoenixServerProject(supplier_id=[$5])\n" + - " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + - " PhoenixToClientConverter\n" + - " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + - " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") + " PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT()])\n" + + " PhoenixServerJoin(condition=[=($1, $0)], joinType=[inner])\n" + + " PhoenixServerProject(supplier_id=[$5])\n" + + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + + " PhoenixToClientConverter\n" + + " PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" + + " PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n") .resultIs(new Object[][] { {"S1", 2L}, {"S2", 2L}, @@ -720,13 +710,11 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixPostJoinProject(order_id=[$0], QUANTITY=[$4])\n" + " PhoenixServerJoin(condition=[AND(=($2, $7), =($4, $8))], joinType=[inner])\n" + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + - " PhoenixServerAggregate(group=[{0}], EXPR$0=[MAX($1)])\n" + - " PhoenixPostJoinProject(item_id0=[$7], QUANTITY=[$4])\n" + - " PhoenixServerJoin(condition=[=($7, $2)], joinType=[inner])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + - " PhoenixServerAggregate(group=[{0}])\n" + - " PhoenixServerProject(item_id=[$2])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n") + " PhoenixServerAggregate(group=[{7}], EXPR$0=[MAX($4)])\n" + + " PhoenixServerJoin(condition=[=($7, $2)], joinType=[inner])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + + " PhoenixServerAggregate(group=[{2}])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n") .resultIs(new Object[][]{ {"000000000000001", 1000}, {"000000000000003", 3000}, @@ -744,13 +732,12 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" + " PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" + - " PhoenixServerAggregate(group=[{0}], SQ=[MAX($1)])\n" + - " PhoenixPostJoinProject(item_id0=[$7], QUANTITY=[$4])\n" + - " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + - " PhoenixServerAggregate(group=[{0}])\n" + - " PhoenixServerProject(item_id=[$0])\n" + - " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n") + " PhoenixServerAggregate(group=[{7}], SQ=[MAX($4)])\n" + + " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + + " PhoenixToClientConverter\n" + + " PhoenixServerProject(item_id=[$0])\n" + + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n") .resultIs(new Object[][] { new Object[] {"0000000001", "T1", 1000}, new Object[] {"0000000002", "T2", 3000}, @@ -769,11 +756,11 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" + " PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n" + - " PhoenixPostJoinProject(item_id0=[$7], SQ=[$4])\n" + - " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + - " PhoenixServerAggregate(group=[{0}])\n" + - " PhoenixServerProject(item_id=[$0])\n" + + " PhoenixToClientConverter\n" + + " PhoenixPostJoinProject(item_id0=[$7], SQ=[$4])\n" + + " PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + + " PhoenixServerAggregate(group=[{0}])\n" + " PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n") .resultIs(new Object[][] { new Object[] {"0000000001", "T1", 1000}, @@ -801,12 +788,11 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + " EnumerableAggregate(group=[{0}], agg#0=[SINGLE_VALUE($1)])\n" + " EnumerableAggregate(group=[{0}], CNT=[COUNT()])\n" + - " EnumerableCalc(expr#0..10=[{inputs}], expr#11=[0], expr#12=[CAST($t5):INTEGER], expr#13=[=($t12, $t0)], THE_YEAR=[$t0], $f0=[$t11], $condition=[$t13])\n" + + " EnumerableCalc(expr#0..10=[{inputs}], expr#11=[CAST($t5):INTEGER], expr#12=[=($t11, $t0)], proj#0..10=[{exprs}], $condition=[$t12])\n" + " EnumerableJoin(condition=[true], joinType=[inner])\n" + " PhoenixToEnumerableConverter\n" + - " PhoenixServerAggregate(group=[{0}])\n" + - " PhoenixServerProject(THE_YEAR=[$6])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + + " PhoenixServerAggregate(group=[{6}])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + " JdbcToEnumerableConverter\n" + " JdbcTableScan(table=[[foodmart, time_by_day]])\n") .resultIs(new Object[][] { http://git-wip-us.apache.org/repos/asf/phoenix/blob/2e5a9187/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixAbstractAggregate.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixAbstractAggregate.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixAbstractAggregate.java index b807011..e2938a7 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixAbstractAggregate.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixAbstractAggregate.java @@ -3,6 +3,8 @@ package org.apache.phoenix.calcite.rel; import java.util.List; import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.core.Aggregate; @@ -34,23 +36,12 @@ import com.google.common.collect.Lists; abstract public class PhoenixAbstractAggregate extends Aggregate implements PhoenixRel { public static boolean isSingleValueCheckAggregate(Aggregate aggregate) { - List<Integer> groupSet = aggregate.getGroupSet().asList(); - int groupCount = groupSet.size(); - if (groupCount + 1 != aggregate.getInput().getRowType().getFieldCount()) - return false; - - for (int i = 0; i < groupCount; i++) { - if (groupSet.get(i) != i) - return false; - } - List<AggregateCall> aggCalls = aggregate.getAggCallList(); if (aggCalls.size() != 1) return false; AggregateCall call = aggCalls.get(0); - return call.getAggregation().getName().equals("SINGLE_VALUE") - && call.getArgList().get(0) == groupCount; + return call.getAggregation().getName().equals("SINGLE_VALUE"); } protected PhoenixAbstractAggregate(RelOptCluster cluster, RelTraitSet traits, RelNode child, boolean indicator, ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { @@ -69,6 +60,14 @@ abstract public class PhoenixAbstractAggregate extends Aggregate implements Phoe } } + @Override + public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (isSingleValueCheckAggregate(this)) + return planner.getCostFactory().makeInfiniteCost(); + + return super.computeSelfCost(planner); + } + protected GroupBy getGroupBy(Implementor implementor) { if (groupSets.size() > 1) { throw new UnsupportedOperationException(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/2e5a9187/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixJoinSingleValueAggregateMergeRule.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixJoinSingleValueAggregateMergeRule.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixJoinSingleValueAggregateMergeRule.java index b5c752b..a3a1d63 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixJoinSingleValueAggregateMergeRule.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixJoinSingleValueAggregateMergeRule.java @@ -1,5 +1,7 @@ package org.apache.phoenix.calcite.rules; +import java.util.List; + import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.plan.RelOptRuleCall; import org.apache.phoenix.calcite.rel.PhoenixAbstractAggregate; @@ -15,7 +17,20 @@ public class PhoenixJoinSingleValueAggregateMergeRule extends RelOptRule { new Predicate<PhoenixAbstractAggregate>() { @Override public boolean apply(PhoenixAbstractAggregate phoenixAggregate) { - return PhoenixAbstractAggregate.isSingleValueCheckAggregate(phoenixAggregate); + if (!PhoenixAbstractAggregate.isSingleValueCheckAggregate(phoenixAggregate)) + return false; + + List<Integer> groupSet = phoenixAggregate.getGroupSet().asList(); + if (groupSet.size() + 1 != phoenixAggregate.getInput().getRowType().getFieldCount()) + return false; + + for (int i = 0; i < groupSet.size(); i++) { + if (groupSet.get(i) != i) + return false; + } + + List<Integer> argList = phoenixAggregate.getAggCallList().get(0).getArgList(); + return (argList.size() == 1 && argList.get(0) == groupSet.size()); } }; @@ -45,7 +60,7 @@ public class PhoenixJoinSingleValueAggregateMergeRule extends RelOptRule { } call.transformTo(join.copy(join.getTraitSet(), join.getCondition(), - left, right.getInput(), join.getJoinType(), false, true)); + left, convert(right.getInput(), right.getInput().getTraitSet().replace(PhoenixRel.CLIENT_CONVENTION)), join.getJoinType(), false, true)); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/2e5a9187/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 984b3b9..d9915c5 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ </repository> <repository> <id>apache calcite</id> - <url>https://repository.apache.org/content/repositories/orgapachecalcite-1007</url> + <url>https://repository.apache.org/content/repositories/orgapachecalcite-1008</url> </repository> </repositories> @@ -110,7 +110,7 @@ <collections.version>3.2.1</collections.version> <jodatime.version>2.7</jodatime.version> <joni.version>2.1.2</joni.version> - <calcite.version>1.2.0-incubating</calcite.version> + <calcite.version>1.3.0-incubating</calcite.version> <!-- Test Dependencies --> <mockito-all.version>1.8.5</mockito-all.version>