Package org.apache.calcite.test
Class CalciteAssert.AssertQuery
- java.lang.Object
-
- org.apache.calcite.test.CalciteAssert.AssertQuery
-
- Direct Known Subclasses:
CalciteAssert.NopAssertQuery
- Enclosing class:
- CalciteAssert
public static class CalciteAssert.AssertQuery extends java.lang.Object
Fluent interface for building a query to be tested.
-
-
Field Summary
Fields Modifier and Type Field Description private CalciteAssert.ConnectionFactory
connectionFactory
private CalciteAssert.PreparedStatementConsumer
consumer
private java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>>
hooks
private int
limit
private boolean
materializationsEnabled
private java.lang.String
plan
private java.lang.String
sql
-
Constructor Summary
Constructors Modifier Constructor Description private
AssertQuery(CalciteAssert.ConnectionFactory connectionFactory, java.lang.String sql)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private <T> void
addHook(org.apache.calcite.runtime.Hook hook, java.util.function.Consumer<T> handler)
CalciteAssert.AssertQuery
consumesPreparedStatement(CalciteAssert.PreparedStatementConsumer consumer)
CalciteAssert.AssertQuery
convertContains(java.lang.String expected)
Checks that when the query (which was set usingCalciteAssert.AssertThat.query(String)
) is converted to a relational algebra expression matching the given string.CalciteAssert.AssertQuery
convertMatches(java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> checker)
protected java.sql.Connection
createConnection()
CalciteAssert.AssertQuery
enable(boolean enabled)
CalciteAssert.AssertQuery
enableMaterializations(boolean enable)
private void
ensurePlan(java.util.function.Consumer<java.lang.Integer> checkUpdate)
CalciteAssert.AssertQuery
explainContains(java.lang.String expected)
CalciteAssert.AssertQuery
explainMatches(java.lang.String extra, java.util.function.Consumer<java.sql.ResultSet> checker)
CalciteAssert.AssertQuery
failsAtValidation()
Utility method so that one doesn't have to callfailsAtValidation(java.lang.String)
withnull
CalciteAssert.AssertQuery
failsAtValidation(java.lang.String optionalMessage)
Used to check whether a sql statement fails at the SQL Validation phase.CalciteAssert.AssertQuery
limit(int limit)
Sets a limit on the number of rows returned.CalciteAssert.AssertQuery
planContains(java.lang.String expected)
CalciteAssert.AssertQuery
planHasSql(java.lang.String expected)
CalciteAssert.AssertQuery
planUpdateHasSql(java.lang.String expected, int count)
CalciteAssert.AssertQuery
queryContains(com.google.common.base.Function<java.util.List,java.lang.Void> predicate1)
Deprecated.CalciteAssert.AssertQuery
queryContains(java.util.function.Consumer<java.util.List> predicate1)
Runs the query and applies a checker to the generated third-party queries.CalciteAssert.AssertQuery
returns(com.google.common.base.Function<java.sql.ResultSet,java.lang.Void> checker)
Deprecated.CalciteAssert.AssertQuery
returns(java.lang.String expected)
protected CalciteAssert.AssertQuery
returns(java.lang.String sql, java.util.function.Consumer<java.sql.ResultSet> checker)
CalciteAssert.AssertQuery
returns(java.util.function.Consumer<java.sql.ResultSet> checker)
CalciteAssert.AssertQuery
returns2(java.lang.String expected)
Similar toreturns(java.lang.String)
, but trims a few values before comparing.CalciteAssert.AssertQuery
returnsCount(int expectedCount)
CalciteAssert.AssertQuery
returnsOrdered(java.lang.String... lines)
CalciteAssert.AssertQuery
returnsStartingWith(java.lang.String... lines)
CalciteAssert.AssertQuery
returnsUnordered(java.lang.String... lines)
CalciteAssert.AssertQuery
returnsValue(java.lang.String expected)
CalciteAssert.AssertQuery
runs()
void
sameResultWithMaterializationsDisabled()
CalciteAssert.AssertQuery
substitutionMatches(java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> checker)
CalciteAssert.AssertQuery
throws_(java.lang.String message)
CalciteAssert.AssertQuery
typeIs(java.lang.String expected)
CalciteAssert.AssertQuery
updates(int count)
CalciteAssert.AssertQuery
withConnection(java.util.function.Consumer<java.sql.Connection> f)
Performs an action using a connection, and closes the connection afterwards.<T> CalciteAssert.AssertQuery
withHook(org.apache.calcite.runtime.Hook hook, java.util.function.Consumer<T> handler)
Adds a hook and a handler for that hook.<T> CalciteAssert.AssertQuery
withHook(org.apache.calcite.runtime.Hook hook, java.util.function.Function<T,java.lang.Void> handler)
Deprecated.<V> CalciteAssert.AssertQuery
withProperty(org.apache.calcite.runtime.Hook hook, V value)
Adds a property hook.CalciteAssert.AssertQuery
withRel(java.util.function.Function<org.apache.calcite.tools.RelBuilder,org.apache.calcite.rel.RelNode> relFn)
Adds a factory to create aRelNode
query.
-
-
-
Field Detail
-
sql
private final java.lang.String sql
-
connectionFactory
private CalciteAssert.ConnectionFactory connectionFactory
-
plan
private java.lang.String plan
-
limit
private int limit
-
materializationsEnabled
private boolean materializationsEnabled
-
hooks
private final java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>> hooks
-
consumer
private CalciteAssert.PreparedStatementConsumer consumer
-
-
Constructor Detail
-
AssertQuery
private AssertQuery(CalciteAssert.ConnectionFactory connectionFactory, java.lang.String sql)
-
-
Method Detail
-
createConnection
protected java.sql.Connection createConnection() throws java.lang.Exception
- Throws:
java.lang.Exception
-
withConnection
public final CalciteAssert.AssertQuery withConnection(java.util.function.Consumer<java.sql.Connection> f) throws java.lang.Exception
Performs an action using a connection, and closes the connection afterwards.- Throws:
java.lang.Exception
-
enable
public CalciteAssert.AssertQuery enable(boolean enabled)
-
returns
public CalciteAssert.AssertQuery returns(java.lang.String expected)
-
returns2
public CalciteAssert.AssertQuery returns2(java.lang.String expected)
Similar toreturns(java.lang.String)
, but trims a few values before comparing.
-
returnsValue
public CalciteAssert.AssertQuery returnsValue(java.lang.String expected)
-
returnsCount
public CalciteAssert.AssertQuery returnsCount(int expectedCount)
-
returns
public final CalciteAssert.AssertQuery returns(java.util.function.Consumer<java.sql.ResultSet> checker)
-
updates
public final CalciteAssert.AssertQuery updates(int count)
-
returns
@Deprecated public final CalciteAssert.AssertQuery returns(com.google.common.base.Function<java.sql.ResultSet,java.lang.Void> checker)
Deprecated.
-
returns
protected CalciteAssert.AssertQuery returns(java.lang.String sql, java.util.function.Consumer<java.sql.ResultSet> checker)
-
returnsUnordered
public CalciteAssert.AssertQuery returnsUnordered(java.lang.String... lines)
-
returnsOrdered
public CalciteAssert.AssertQuery returnsOrdered(java.lang.String... lines)
-
returnsStartingWith
public CalciteAssert.AssertQuery returnsStartingWith(java.lang.String... lines)
-
throws_
public CalciteAssert.AssertQuery throws_(java.lang.String message)
-
failsAtValidation
public CalciteAssert.AssertQuery failsAtValidation(java.lang.String optionalMessage)
Used to check whether a sql statement fails at the SQL Validation phase. More formally, it checks if aSqlValidatorException
orCalciteException
was thrown.- Parameters:
optionalMessage
- An optional message to check for in the output stacktrace
-
failsAtValidation
public CalciteAssert.AssertQuery failsAtValidation()
Utility method so that one doesn't have to callfailsAtValidation(java.lang.String)
withnull
-
runs
public CalciteAssert.AssertQuery runs()
-
typeIs
public CalciteAssert.AssertQuery typeIs(java.lang.String expected)
-
convertContains
public final CalciteAssert.AssertQuery convertContains(java.lang.String expected)
Checks that when the query (which was set usingCalciteAssert.AssertThat.query(String)
) is converted to a relational algebra expression matching the given string.
-
consumesPreparedStatement
public final CalciteAssert.AssertQuery consumesPreparedStatement(CalciteAssert.PreparedStatementConsumer consumer)
-
convertMatches
public CalciteAssert.AssertQuery convertMatches(java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> checker)
-
substitutionMatches
public CalciteAssert.AssertQuery substitutionMatches(java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> checker)
-
explainContains
public CalciteAssert.AssertQuery explainContains(java.lang.String expected)
-
explainMatches
public final CalciteAssert.AssertQuery explainMatches(java.lang.String extra, java.util.function.Consumer<java.sql.ResultSet> checker)
-
planContains
public CalciteAssert.AssertQuery planContains(java.lang.String expected)
-
planUpdateHasSql
public CalciteAssert.AssertQuery planUpdateHasSql(java.lang.String expected, int count)
-
planHasSql
public CalciteAssert.AssertQuery planHasSql(java.lang.String expected)
-
ensurePlan
private void ensurePlan(java.util.function.Consumer<java.lang.Integer> checkUpdate)
-
queryContains
public CalciteAssert.AssertQuery queryContains(java.util.function.Consumer<java.util.List> predicate1)
Runs the query and applies a checker to the generated third-party queries. The checker should throw to fail the test if it does not see what it wants. This method can be used to check whether a particular MongoDB or SQL query is generated, for instance.
-
queryContains
@Deprecated public final CalciteAssert.AssertQuery queryContains(com.google.common.base.Function<java.util.List,java.lang.Void> predicate1)
Deprecated.
-
limit
public CalciteAssert.AssertQuery limit(int limit)
Sets a limit on the number of rows returned. -1 means no limit.
-
sameResultWithMaterializationsDisabled
public void sameResultWithMaterializationsDisabled()
-
enableMaterializations
public CalciteAssert.AssertQuery enableMaterializations(boolean enable)
-
withHook
@Deprecated public <T> CalciteAssert.AssertQuery withHook(org.apache.calcite.runtime.Hook hook, java.util.function.Function<T,java.lang.Void> handler)
Deprecated.
-
withHook
public <T> CalciteAssert.AssertQuery withHook(org.apache.calcite.runtime.Hook hook, java.util.function.Consumer<T> handler)
Adds a hook and a handler for that hook. Calcite will create a thread hook (by callingHook.addThread(Consumer)
) just before running the query, and remove the hook afterwards.
-
addHook
private <T> void addHook(org.apache.calcite.runtime.Hook hook, java.util.function.Consumer<T> handler)
-
withProperty
public <V> CalciteAssert.AssertQuery withProperty(org.apache.calcite.runtime.Hook hook, V value)
Adds a property hook.
-
withRel
public CalciteAssert.AssertQuery withRel(java.util.function.Function<org.apache.calcite.tools.RelBuilder,org.apache.calcite.rel.RelNode> relFn)
Adds a factory to create aRelNode
query. ThisRelNode
will be used instead of the SQL string.
-
-