Search in sources :

Example 36 with Project

use of org.apache.calcite.rel.core.Project in project flink by apache.

the class HiveParserDMLHelper method replaceDistForStaticParts.

private RelNode replaceDistForStaticParts(LogicalDistribution hiveDist, Table destTable, Map<String, String> staticPartSpec, Map<String, RelDataType> targetColToType) {
    Project project = (Project) hiveDist.getInput();
    RelNode expandedProject = replaceProjectForStaticPart(project, staticPartSpec, destTable, targetColToType);
    hiveDist.replaceInput(0, null);
    final int toShift = staticPartSpec.size();
    final int numDynmPart = destTable.getTTable().getPartitionKeys().size() - toShift;
    return LogicalDistribution.create(expandedProject, shiftRelCollation(hiveDist.getCollation(), project, toShift, numDynmPart), shiftDistKeys(hiveDist.getDistKeys(), project, toShift, numDynmPart));
}
Also used : Project(org.apache.calcite.rel.core.Project) LogicalProject(org.apache.calcite.rel.logical.LogicalProject) RelNode(org.apache.calcite.rel.RelNode)

Example 37 with Project

use of org.apache.calcite.rel.core.Project in project flink by apache.

the class HiveParserDMLHelper method addTypeConversions.

static RelNode addTypeConversions(RexBuilder rexBuilder, RelNode queryRelNode, List<RelDataType> targetCalcTypes, List<TypeInfo> targetHiveTypes, SqlFunctionConverter funcConverter) throws SemanticException {
    if (queryRelNode instanceof Project) {
        return replaceProjectForTypeConversion(rexBuilder, (Project) queryRelNode, targetCalcTypes, targetHiveTypes, funcConverter);
    } else {
        // current node is not Project, we search for it in inputs
        RelNode newInput = addTypeConversions(rexBuilder, queryRelNode.getInput(0), targetCalcTypes, targetHiveTypes, funcConverter);
        queryRelNode.replaceInput(0, newInput);
        return queryRelNode;
    }
}
Also used : Project(org.apache.calcite.rel.core.Project) LogicalProject(org.apache.calcite.rel.logical.LogicalProject) RelNode(org.apache.calcite.rel.RelNode)

Example 38 with Project

use of org.apache.calcite.rel.core.Project in project druid by druid-io.

the class DruidRelsTest method test_isScanOrMapping_mapping.

@Test
public void test_isScanOrMapping_mapping() {
    final Project project = mockMappingProject(ImmutableList.of(1, 0), 2);
    final DruidRel<?> rel = mockDruidRel(DruidQueryRel.class, PartialDruidQuery.Stage.SELECT_PROJECT, null, project, null);
    Assert.assertTrue(DruidRels.isScanOrMapping(rel, true));
    Assert.assertTrue(DruidRels.isScanOrMapping(rel, false));
    EasyMock.verify(rel, rel.getPartialDruidQuery(), project);
}
Also used : Project(org.apache.calcite.rel.core.Project) Test(org.junit.Test)

Example 39 with Project

use of org.apache.calcite.rel.core.Project in project druid by druid-io.

the class DruidRelsTest method test_isScanOrMapping_nonMappingUnion.

@Test
public void test_isScanOrMapping_nonMappingUnion() {
    final Project project = mockNonMappingProject();
    final DruidRel<?> rel = mockDruidRel(DruidUnionDataSourceRel.class, PartialDruidQuery.Stage.SELECT_PROJECT, null, project, null);
    Assert.assertFalse(DruidRels.isScanOrMapping(rel, true));
    Assert.assertFalse(DruidRels.isScanOrMapping(rel, false));
    EasyMock.verify(rel, rel.getPartialDruidQuery(), project);
}
Also used : Project(org.apache.calcite.rel.core.Project) Test(org.junit.Test)

Example 40 with Project

use of org.apache.calcite.rel.core.Project in project druid by druid-io.

the class DruidRelsTest method test_isScanOrMapping_filterThenProject.

@Test
public void test_isScanOrMapping_filterThenProject() {
    final Project project = mockMappingProject(ImmutableList.of(1, 0), 2);
    final DruidRel<?> rel = mockDruidRel(DruidQueryRel.class, PartialDruidQuery.Stage.SELECT_PROJECT, null, project, mockFilter());
    Assert.assertFalse(DruidRels.isScanOrMapping(rel, true));
    Assert.assertFalse(DruidRels.isScanOrMapping(rel, false));
    EasyMock.verify(rel, rel.getPartialDruidQuery(), project);
}
Also used : Project(org.apache.calcite.rel.core.Project) Test(org.junit.Test)

Aggregations

Project (org.apache.calcite.rel.core.Project)143 RexNode (org.apache.calcite.rex.RexNode)77 RelNode (org.apache.calcite.rel.RelNode)71 ArrayList (java.util.ArrayList)46 LogicalProject (org.apache.calcite.rel.logical.LogicalProject)35 RexBuilder (org.apache.calcite.rex.RexBuilder)28 RelDataType (org.apache.calcite.rel.type.RelDataType)26 Aggregate (org.apache.calcite.rel.core.Aggregate)22 Filter (org.apache.calcite.rel.core.Filter)22 Join (org.apache.calcite.rel.core.Join)22 List (java.util.List)19 RexLiteral (org.apache.calcite.rex.RexLiteral)19 AggregateCall (org.apache.calcite.rel.core.AggregateCall)18 Sort (org.apache.calcite.rel.core.Sort)18 Test (org.junit.Test)18 RelBuilder (org.apache.calcite.tools.RelBuilder)17 ImmutableBitSet (org.apache.calcite.util.ImmutableBitSet)16 HiveProject (org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject)16 Collectors (java.util.stream.Collectors)15 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)15