Class RelBuilderTest


  • public class RelBuilderTest
    extends java.lang.Object
    Unit test for RelBuilder.

    Tasks:

    1. Add RelBuilder.scan(List<String>)
    2. Add RelBuilder.scan(Table)
    3. Test that RelBuilder.filter(org.apache.calcite.rex.RexNode...) does not create a filter if the predicates optimize to true
    4. Test that RelBuilder.filter(org.apache.calcite.rex.RexNode...) DOES create a filter if the predicates optimize to false. (Creating an empty Values seems too devious.)
    5. Test that RelBuilder.scan(java.lang.Iterable<java.lang.String>) throws good error if table not found
    6. Test that RelBuilder.scan(java.lang.Iterable<java.lang.String>) obeys case-sensitivity
    7. Test that RelBuilder.join(JoinRelType, String...) obeys case-sensitivity
    8. Test RelBuilder with alternative factories
    9. Test that RelBuilder.field(String) obeys case-sensitivity
    10. Test case-insensitive unique field names
    11. Test that an alias created using RelBuilder.alias(RexNode, String) is removed if not a top-level project
    12. RelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...) with grouping sets
    13. RelBuilder.aggregateCall(org.apache.calcite.sql.SqlAggFunction, boolean, org.apache.calcite.rex.RexNode, java.lang.String, org.apache.calcite.rex.RexNode...) with filter
    14. Add call to create TableFunctionScan
    15. Add call to create Window
    16. Add call to create TableModify
    17. Add call to create Exchange
    18. Add call to create Correlate
    19. Add call to create AggregateCall with filter
    • Constructor Detail

      • RelBuilderTest

        public RelBuilderTest()
    • Method Detail

      • config

        public static org.apache.calcite.tools.Frameworks.ConfigBuilder config()
        Creates a config based on the "scott" schema.
      • expandingConfig

        static org.apache.calcite.tools.Frameworks.ConfigBuilder expandingConfig​(java.sql.Connection connection)
                                                                          throws java.sql.SQLException
        Creates a config builder that will contain a view, "MYVIEW", and also the SCOTT JDBC schema, whose tables implement TranslatableTable.
        Throws:
        java.sql.SQLException
      • testScan

        public void testScan()
      • testScanQualifiedTable

        public void testScanQualifiedTable()
      • testScanInvalidTable

        public void testScanInvalidTable()
      • testScanInvalidSchema

        public void testScanInvalidSchema()
      • testScanInvalidQualifiedTable

        public void testScanInvalidQualifiedTable()
      • testScanValidTableWrongCase

        public void testScanValidTableWrongCase()
      • testScanFilterTrue

        public void testScanFilterTrue()
      • testScanFilterTriviallyFalse

        public void testScanFilterTriviallyFalse()
      • testScanFilterEquals

        public void testScanFilterEquals()
      • testScanFilterOr

        public void testScanFilterOr()
      • testScanFilterOr2

        public void testScanFilterOr2()
      • testScanFilterAndFalse

        public void testScanFilterAndFalse()
      • testScanFilterAndTrue

        public void testScanFilterAndTrue()
      • testBadFieldName

        public void testBadFieldName()
      • testBadFieldOrdinal

        public void testBadFieldOrdinal()
      • testBadType

        public void testBadType()
      • testProject

        public void testProject()
      • testProject2

        public void testProject2()
        Tests each method that creates a scalar expression.
      • testProjectIdentity

        public void testProjectIdentity()
      • testProjectIdentityWithFieldsRenameFilter

        public void testProjectIdentityWithFieldsRenameFilter()
        Variation on testProjectIdentityWithFieldsRename(): don't use a table alias, and make sure the field names propagate through a filter.
      • testProjectLeadingEdge

        public void testProjectLeadingEdge()
      • testRename

        public void testRename()
      • testRenameValues

        public void testRenameValues()
      • testPermute

        public void testPermute()
      • testConvert

        public void testConvert()
      • testConvertRename

        public void testConvertRename()
      • testAggregate

        public void testAggregate()
      • testAggregate2

        public void testAggregate2()
      • testAggregate4

        public void testAggregate4()
        As testAggregate3() but with Filter.
      • testAggregateFilter

        public void testAggregateFilter()
      • testAggregateFilterFails

        public void testAggregateFilterFails()
      • testAggregateFilterNullable

        public void testAggregateFilterNullable()
      • testAggregateProjectWithExpression

        public void testAggregateProjectWithExpression()
      • testAggregateGroupingKeyOutOfRangeFails

        public void testAggregateGroupingKeyOutOfRangeFails()
      • testAggregateGroupingSetNotSubsetFails

        public void testAggregateGroupingSetNotSubsetFails()
      • testAggregateGroupingSetDuplicateIgnored

        public void testAggregateGroupingSetDuplicateIgnored()
      • testAggregateGrouping

        public void testAggregateGrouping()
      • testAggregateGroupingWithDistinctFails

        public void testAggregateGroupingWithDistinctFails()
      • testAggregateGroupingWithFilterFails

        public void testAggregateGroupingWithFilterFails()
      • testDistinct

        public void testDistinct()
      • testDistinctAlready

        public void testDistinctAlready()
      • testDistinctEmpty

        public void testDistinctEmpty()
      • testUnion

        public void testUnion()
      • testUnion3

        public void testUnion3()
      • testUnion1

        public void testUnion1()
      • testIntersect

        public void testIntersect()
      • testIntersect3

        public void testIntersect3()
      • testExcept

        public void testExcept()
      • testJoin

        public void testJoin()
      • testJoinUsing

        public void testJoinUsing()
        Same as testJoin() using USING.
      • testJoin2

        public void testJoin2()
      • testJoinCartesian

        public void testJoinCartesian()
      • testCorrelationFails

        public void testCorrelationFails()
      • testCorrelationWithCondition

        public void testCorrelationWithCondition()
      • testAlias

        public void testAlias()
      • testAlias2

        public void testAlias2()
      • testAliasSort

        public void testAliasSort()
      • testAliasLimit

        public void testAliasLimit()
      • testAliasProjectProject

        public void testAliasProjectProject()
        Tests that table aliases are propagated even when there is a project on top of a project. (Aliases tend to get lost when projects are merged).
      • testAliasFilter

        public void testAliasFilter()
        Tests that table aliases are propagated and are available to a filter, even when there is a project on top of a project. (Aliases tend to get lost when projects are merged).
      • testAliasAggregate

        public void testAliasAggregate()
      • testProjectJoin

        public void testProjectJoin()
        Tests that a projection retains field names after a join.
      • testProjectProject

        public void testProjectProject()
        Tests that a projection after a projection.
      • testMultiLevelAlias

        public void testMultiLevelAlias()
      • testUnionAlias

        public void testUnionAlias()
      • testEmpty

        public void testEmpty()
      • testValues

        public void testValues()
      • testValuesNullable

        public void testValuesNullable()
        Tests creating Values with some field names and some values null.
      • testValuesBadNullFieldNames

        public void testValuesBadNullFieldNames()
      • testValuesBadNoFields

        public void testValuesBadNoFields()
      • testValuesBadNoValues

        public void testValuesBadNoValues()
      • testValuesBadOddMultiple

        public void testValuesBadOddMultiple()
      • testValuesBadAllNull

        public void testValuesBadAllNull()
      • testValuesAllNull

        public void testValuesAllNull()
      • testSort

        public void testSort()
      • testSortDuplicate

        public void testSortDuplicate()
      • testSortByExpression

        public void testSortByExpression()
      • testLimit

        public void testLimit()
      • testSortLimit

        public void testSortLimit()
      • testSortLimit0

        public void testSortLimit0()
      • testSortThenLimit

        public void testSortThenLimit()
        Tests that a sort on a field followed by a limit gives the same effect as calling sortLimit.

        In general a relational operator cannot rely on the order of its input, but it is reasonable to merge sort and limit if they were created by consecutive builder operations. And clients such as Piglet rely on it.

      • testSortExpThenLimit

        public void testSortExpThenLimit()
        Tests that a sort on an expression followed by a limit gives the same effect as calling sortLimit.
      • testRunValues

        public void testRunValues()
                           throws java.lang.Exception
        Tests RelRunner for a VALUES query.
        Throws:
        java.lang.Exception
      • testRun

        public void testRun()
                     throws java.lang.Exception
        Tests RelRunner for a table scan + filter query.
        Throws:
        java.lang.Exception
      • testMatchRecognize

        public void testMatchRecognize()
      • testFilterCastAny

        public void testFilterCastAny()
      • testFilterCastNull

        public void testFilterCastNull()
      • testRelBuilderToString

        public void testRelBuilderToString()
      • testExpandViewInRelBuilder

        public void testExpandViewInRelBuilder()
                                        throws java.sql.SQLException
        Ensures that relational algebra (RelBuilder) works with SQL views.

        This test currently fails (thus ignored).

        Throws:
        java.sql.SQLException
      • testExpandTable

        public void testExpandTable()
                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • checkExpandTable

        private void checkExpandTable​(org.apache.calcite.tools.RelBuilder builder,
                                      org.hamcrest.Matcher<org.apache.calcite.rel.RelNode> matcher)
      • testExchange

        public void testExchange()
      • testSortExchange

        public void testSortExchange()