Repository: phoenix Updated Branches: refs/heads/calcite 605b25aff -> 75caf0906
PHOENIX-3466 Add StatementContext instance in PhoenixImplementorImpl Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/75caf090 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/75caf090 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/75caf090 Branch: refs/heads/calcite Commit: 75caf0906343a1a1603fa42ec11dd98322be91d5 Parents: 605b25a Author: maryannxue <[email protected]> Authored: Tue Nov 8 11:44:05 2016 -0800 Committer: maryannxue <[email protected]> Committed: Tue Nov 8 11:44:05 2016 -0800 ---------------------------------------------------------------------- .../calcite/jdbc/PhoenixCalciteFactory.java | 4 +- .../org/apache/calcite/sql/ListJarsTable.java | 1 - .../org/apache/calcite/sql/SqlOptionNode.java | 4 +- .../apache/phoenix/calcite/CalciteUtils.java | 1 - .../phoenix/calcite/PhoenixPrepareImpl.java | 18 ++++++++- .../phoenix/calcite/PhoenixScalarFunction.java | 2 + .../apache/phoenix/calcite/TableMapping.java | 1 - .../calcite/rel/PhoenixRelImplementor.java | 2 + .../calcite/rel/PhoenixRelImplementorImpl.java | 11 +++++- .../phoenix/calcite/rel/PhoenixTableScan.java | 3 +- .../rel/PhoenixToEnumerableConverter.java | 18 ++++++--- .../calcite/rules/PhoenixConverterRules.java | 40 +++++++++----------- .../phoenix/calcite/ToExpressionTest.java | 6 ++- 13 files changed, 71 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java index bc9994b..faab40a 100644 --- a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java +++ b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java @@ -120,7 +120,8 @@ public class PhoenixCalciteFactory extends CalciteFactory { super(driver, factory, url, info, rootSchema, typeFactory); } - public CalciteStatement createStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { + @Override + public CalciteStatement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { try { return super.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability); } catch (SQLException e) { @@ -160,6 +161,7 @@ public class PhoenixCalciteFactory extends CalciteFactory { return super.enumerable(handle, signature); } + @Override public void abort(final Executor executor) throws SQLException { call(new PhoenixConnectionCallable() { @Override http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/calcite/sql/ListJarsTable.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/calcite/sql/ListJarsTable.java b/phoenix-core/src/main/java/org/apache/calcite/sql/ListJarsTable.java index db2b003..a73d591 100644 --- a/phoenix-core/src/main/java/org/apache/calcite/sql/ListJarsTable.java +++ b/phoenix-core/src/main/java/org/apache/calcite/sql/ListJarsTable.java @@ -32,7 +32,6 @@ import org.apache.calcite.rel.type.RelDataTypeFactory; import org.apache.calcite.schema.ScannableTable; import org.apache.calcite.schema.impl.AbstractTable; import org.apache.calcite.sql.type.SqlTypeName; -import org.apache.calcite.util.Smalls.MazeTable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/calcite/sql/SqlOptionNode.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/calcite/sql/SqlOptionNode.java b/phoenix-core/src/main/java/org/apache/calcite/sql/SqlOptionNode.java index bcec18a..149e9ef 100644 --- a/phoenix-core/src/main/java/org/apache/calcite/sql/SqlOptionNode.java +++ b/phoenix-core/src/main/java/org/apache/calcite/sql/SqlOptionNode.java @@ -42,8 +42,8 @@ public class SqlOptionNode extends SqlNode { propertyName = key.names.get(1); } - PhoenixRelImplementor - implementor = new PhoenixRelImplementorImpl(RuntimeContext.EMPTY_CONTEXT); + PhoenixRelImplementor implementor = + new PhoenixRelImplementorImpl(null, RuntimeContext.EMPTY_CONTEXT); this.value = CalciteUtils.convertSqlLiteral(literal, implementor); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java index b312954..1ed650b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java @@ -738,7 +738,6 @@ public class CalciteUtils { } }); EXPRESSION_MAP.put(SqlKind.DEFAULT, new ExpressionFactory() { - @SuppressWarnings("rawtypes") @Override public Expression newExpression(RexNode node, PhoenixRelImplementor implementor) { return null; http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java index 8ac009e..1d9ca1e 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java @@ -18,6 +18,7 @@ import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.prepare.CalcitePrepareImpl; import org.apache.calcite.prepare.Prepare.Materialization; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.convert.ConverterRule; import org.apache.calcite.rel.logical.LogicalSort; import org.apache.calcite.rel.rules.JoinCommuteRule; import org.apache.calcite.rel.rules.SortProjectTransposeRule; @@ -59,6 +60,7 @@ import org.apache.phoenix.calcite.parser.PhoenixParserImpl; import org.apache.phoenix.calcite.rel.PhoenixRel; import org.apache.phoenix.calcite.rel.PhoenixServerProject; import org.apache.phoenix.calcite.rel.PhoenixTemporarySort; +import org.apache.phoenix.calcite.rules.PhoenixConverterRules.PhoenixToEnumerableConverterRule; import org.apache.phoenix.calcite.rules.PhoenixFilterScanMergeRule; import org.apache.phoenix.calcite.rules.PhoenixForwardTableScanRule; import org.apache.phoenix.calcite.rules.PhoenixJoinSingleValueAggregateMergeRule; @@ -72,6 +74,7 @@ import org.apache.phoenix.compile.CreateIndexCompiler; import org.apache.phoenix.compile.CreateSequenceCompiler; import org.apache.phoenix.compile.CreateTableCompiler; import org.apache.phoenix.compile.MutationPlan; +import org.apache.phoenix.compile.StatementContext; import org.apache.phoenix.expression.LiteralExpression; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixStatement; @@ -158,7 +161,20 @@ public class PhoenixPrepareImpl extends CalcitePrepareImpl { PhoenixTemporarySort.class, PhoenixServerProject.class, "PhoenixSortProjectTransposeRule")); - + + final PhoenixConnection pc = + getPhoenixConnection(prepareContext.getRootSchema().plus()); + try { + final StatementContext context = + new StatementContext((PhoenixStatement) pc.createStatement()); + ConverterRule[] rules = PhoenixToEnumerableConverterRule + .createPhoenixToEnumerableConverterRules(context); + for (ConverterRule rule : rules) { + planner.addRule(rule); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } for (RelOptRule rule : this.defaultConverterRules) { planner.addRule(rule); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixScalarFunction.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixScalarFunction.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixScalarFunction.java index a65f851..3a82a49 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixScalarFunction.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixScalarFunction.java @@ -39,6 +39,7 @@ import com.google.common.collect.Lists; public class PhoenixScalarFunction implements ScalarFunction, ImplementableFunction { private final PFunction functionInfo; + @SuppressWarnings("rawtypes") private final PDataType returnType; private final List<FunctionParameter> parameters; @@ -58,6 +59,7 @@ public class PhoenixScalarFunction implements ScalarFunction, ImplementableFunct return getArgumentName(arg.getArgPosition()); } + @SuppressWarnings("rawtypes") public RelDataType getType(RelDataTypeFactory typeFactory) { PDataType dataType = arg.isArrayType() ? PDataType.fromTypeId(PDataType.sqlArrayType(SchemaUtil http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java index 216920f..e27843c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java @@ -23,7 +23,6 @@ import org.apache.phoenix.compile.RowProjector; import org.apache.phoenix.compile.TupleProjectionCompiler; import org.apache.phoenix.coprocessor.BaseScannerRegionObserver; import org.apache.phoenix.execute.TupleProjector; -import org.apache.phoenix.expression.ColumnExpression; import org.apache.phoenix.expression.Expression; import org.apache.phoenix.expression.LiteralExpression; import org.apache.phoenix.index.IndexMaintainer; http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementor.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementor.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementor.java index cdcd74f..4b698c7 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementor.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementor.java @@ -8,6 +8,7 @@ import org.apache.phoenix.calcite.TableMapping; import org.apache.phoenix.compile.QueryPlan; import org.apache.phoenix.compile.SequenceManager; import org.apache.phoenix.compile.SequenceValueExpression; +import org.apache.phoenix.compile.StatementContext; import org.apache.phoenix.execute.RuntimeContext; import org.apache.phoenix.execute.TupleProjector; import org.apache.phoenix.expression.Expression; @@ -24,6 +25,7 @@ public interface PhoenixRelImplementor { @SuppressWarnings("rawtypes") Expression newFieldAccessExpression(String variableId, int index, PDataType type); SequenceValueExpression newSequenceExpression(PhoenixSequence seq, SequenceValueParseNode.Op op); + StatementContext getStatementContext(); RuntimeContext getRuntimeContext(); void setTableMapping(TableMapping tableMapping); TableMapping getTableMapping(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java index d581ec0..901ea07 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java @@ -10,6 +10,7 @@ import org.apache.phoenix.calcite.TableMapping; import org.apache.phoenix.compile.QueryPlan; import org.apache.phoenix.compile.SequenceManager; import org.apache.phoenix.compile.SequenceValueExpression; +import org.apache.phoenix.compile.StatementContext; import org.apache.phoenix.coprocessor.MetaDataProtocol; import org.apache.phoenix.execute.RuntimeContext; import org.apache.phoenix.execute.TupleProjector; @@ -31,12 +32,15 @@ import org.apache.phoenix.schema.types.PDataType; import com.google.common.collect.Lists; public class PhoenixRelImplementorImpl implements PhoenixRelImplementor { + private final StatementContext statementContext; private final RuntimeContext runtimeContext; private Stack<ImplementorContext> contextStack; private SequenceManager sequenceManager; private TableMapping tableMapping; - public PhoenixRelImplementorImpl(RuntimeContext runtimeContext) { + public PhoenixRelImplementorImpl( + StatementContext statementContext, RuntimeContext runtimeContext) { + this.statementContext = statementContext; this.runtimeContext = runtimeContext; this.contextStack = new Stack<ImplementorContext>(); } @@ -74,6 +78,11 @@ public class PhoenixRelImplementorImpl implements PhoenixRelImplementor { throw new RuntimeException(e); } } + + @Override + public StatementContext getStatementContext() { + return statementContext; + } @Override public RuntimeContext getRuntimeContext() { http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java index c02b533..4474bac 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java @@ -128,7 +128,8 @@ public class PhoenixTableScan extends TableScan implements PhoenixQueryRel { // TODO instead of getting a random sample value, we'd better get it from // existing guidepost bytes. // 3) test whether this dynamic filter is worth a recompile at runtime. - PhoenixRelImplementor tmpImplementor = new PhoenixRelImplementorImpl(RuntimeContext.EMPTY_CONTEXT) { + PhoenixRelImplementor tmpImplementor = new PhoenixRelImplementorImpl( + context, RuntimeContext.EMPTY_CONTEXT) { @SuppressWarnings("rawtypes") @Override public Expression newBindParameterExpression(int index, PDataType type, Integer maxLength) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixToEnumerableConverter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixToEnumerableConverter.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixToEnumerableConverter.java index 5aef483..ad0f8c1 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixToEnumerableConverter.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixToEnumerableConverter.java @@ -30,6 +30,7 @@ import org.apache.phoenix.calcite.rel.PhoenixRelImplementor.ImplementorContext; import org.apache.phoenix.compile.ExplainPlan; import org.apache.phoenix.compile.QueryPlan; import org.apache.phoenix.compile.RowProjector; +import org.apache.phoenix.compile.StatementContext; import org.apache.phoenix.compile.StatementPlan; import org.apache.phoenix.execute.DelegateQueryPlan; import org.apache.phoenix.execute.RuntimeContext; @@ -42,22 +43,26 @@ import org.apache.phoenix.iterate.ResultIterator; * Scan of a Phoenix table. */ public class PhoenixToEnumerableConverter extends ConverterImpl implements EnumerableRel { + private final StatementContext context; - public static PhoenixToEnumerableConverter create(RelNode input) { + public static PhoenixToEnumerableConverter create( + RelNode input, StatementContext context) { RelOptCluster cluster = input.getCluster(); RelTraitSet traits = input.getTraitSet().replace(EnumerableConvention.INSTANCE); - return new PhoenixToEnumerableConverter(cluster, traits, input); + return new PhoenixToEnumerableConverter(cluster, traits, input, context); } private PhoenixToEnumerableConverter( RelOptCluster cluster, RelTraitSet traits, - RelNode input) { + RelNode input, + StatementContext context) { super(cluster, ConventionTraitDef.INSTANCE, traits, input); + this.context = context; } @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { - return create(sole(inputs)); + return create(sole(inputs), context); } @Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) { @@ -92,10 +97,11 @@ public class PhoenixToEnumerableConverter extends ConverterImpl implements Enume return implementor.result(physType, list.toBlock()); } - static StatementPlan makePlan(PhoenixRel rel) { + StatementPlan makePlan(PhoenixRel rel) { RuntimeContext runtimeContext = new RuntimeContextImpl(); RuntimeContext.THREAD_LOCAL.get().add(runtimeContext); - final PhoenixRelImplementor phoenixImplementor = new PhoenixRelImplementorImpl(runtimeContext); + final PhoenixRelImplementor phoenixImplementor = + new PhoenixRelImplementorImpl(context, runtimeContext); phoenixImplementor.pushContext(new ImplementorContext(true, false, ImmutableIntList.identity(rel.getRowType().getFieldCount()))); final StatementPlan plan = rel.implement(phoenixImplementor); if (!(plan instanceof QueryPlan)) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java index ca71ab1..ee444fd 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java @@ -59,6 +59,7 @@ import org.apache.phoenix.calcite.rel.PhoenixToEnumerableConverter; import org.apache.phoenix.calcite.rel.PhoenixUncollect; import org.apache.phoenix.calcite.rel.PhoenixUnion; import org.apache.phoenix.calcite.rel.PhoenixValues; +import org.apache.phoenix.compile.StatementContext; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -73,11 +74,6 @@ public class PhoenixConverterRules { private PhoenixConverterRules() {} public static final RelOptRule[] RULES = { - PhoenixToEnumerableConverterRule.SERVER, - PhoenixToEnumerableConverterRule.SERVERJOIN, - PhoenixToEnumerableConverterRule.SERVERAGG, - PhoenixToEnumerableConverterRule.CLIENT, - PhoenixToEnumerableConverterRule.MUTATION, PhoenixClientSortRule.INSTANCE, PhoenixServerSortRule.SERVER, PhoenixServerSortRule.SERVERJOIN, @@ -101,11 +97,6 @@ public class PhoenixConverterRules { }; public static final RelOptRule[] CONVERTIBLE_RULES = { - PhoenixToEnumerableConverterRule.SERVER, - PhoenixToEnumerableConverterRule.SERVERJOIN, - PhoenixToEnumerableConverterRule.SERVERAGG, - PhoenixToEnumerableConverterRule.CLIENT, - PhoenixToEnumerableConverterRule.MUTATION, PhoenixClientSortRule.INSTANCE, PhoenixServerSortRule.SERVER, PhoenixServerSortRule.SERVERJOIN, @@ -872,24 +863,27 @@ public class PhoenixConverterRules { * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention}. */ public static class PhoenixToEnumerableConverterRule extends ConverterRule { - public static final ConverterRule SERVER = - new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVER); - public static final ConverterRule SERVERJOIN = - new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVERJOIN); - public static final ConverterRule SERVERAGG = - new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVERAGG); - public static final ConverterRule CLIENT = - new PhoenixToEnumerableConverterRule(PhoenixConvention.CLIENT); - public static final ConverterRule MUTATION = - new PhoenixToEnumerableConverterRule(PhoenixConvention.MUTATION); - - private PhoenixToEnumerableConverterRule(Convention inputConvention) { + private final StatementContext context; + public static ConverterRule[] createPhoenixToEnumerableConverterRules( + StatementContext context) { + return new ConverterRule[] { + new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVER, context), + new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVERJOIN, context), + new PhoenixToEnumerableConverterRule(PhoenixConvention.SERVERAGG, context), + new PhoenixToEnumerableConverterRule(PhoenixConvention.CLIENT, context), + new PhoenixToEnumerableConverterRule(PhoenixConvention.MUTATION, context) + }; + } + + private PhoenixToEnumerableConverterRule( + Convention inputConvention, StatementContext context) { super(RelNode.class, inputConvention, EnumerableConvention.INSTANCE, "PhoenixToEnumerableConverterRule:" + inputConvention); + this.context = context; } @Override public RelNode convert(RelNode rel) { - return PhoenixToEnumerableConverter.create(rel); + return PhoenixToEnumerableConverter.create(rel, context); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/75caf090/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java b/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java index ed1abd3..7dbca10 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java @@ -30,7 +30,6 @@ import org.apache.phoenix.compile.ExpressionCompiler; import org.apache.phoenix.compile.FromCompiler; import org.apache.phoenix.compile.StatementContext; import org.apache.phoenix.execute.RuntimeContext; -import org.apache.phoenix.execute.RuntimeContextImpl; import org.apache.phoenix.expression.Expression; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixStatement; @@ -62,11 +61,13 @@ public class ToExpressionTest extends BaseConnectionlessQueryTest { private final PTable table; private final Expression phoenixExpr; private final RexNode calciteExpr; + private final StatementContext context; public ExpressionChecker(String tableName, String ddl, String sql, ExpressionGetter getter) throws Exception { Connection conn = DriverManager.getConnection(getOldUrl()); PhoenixConnection pc = conn.unwrap(PhoenixConnection.class); PhoenixStatement stmt = conn.createStatement().unwrap(PhoenixStatement.class); + this.context = new StatementContext(stmt); conn.createStatement().execute(ddl); this.table = pc.getMetaDataCache().getTableRef(new PTableKey(null,tableName)).getTable(); @@ -82,7 +83,8 @@ public class ToExpressionTest extends BaseConnectionlessQueryTest { } public ExpressionChecker checkExpressionEquality() { - PhoenixRelImplementor implementor = new PhoenixRelImplementorImpl(RuntimeContext.EMPTY_CONTEXT); + PhoenixRelImplementor implementor = + new PhoenixRelImplementorImpl(context, RuntimeContext.EMPTY_CONTEXT); implementor.setTableMapping(new TableMapping(table)); Expression e = CalciteUtils.toExpression(this.calciteExpr, implementor); assertEquals(this.phoenixExpr,e);
