Search in sources :

Example 1 with Upsert

use of io.crate.planner.node.dml.Upsert in project crate by crate.

the class UpdatePlannerTest method testUpdateByQueryPlan.

@Test
public void testUpdateByQueryPlan() throws Exception {
    Upsert plan = e.plan("update users set name='Vogon lyric fan'");
    assertThat(plan.nodes().size(), is(1));
    Merge merge = (Merge) plan.nodes().get(0);
    Collect collect = (Collect) merge.subPlan();
    RoutedCollectPhase collectPhase = ((RoutedCollectPhase) collect.collectPhase());
    assertThat(collectPhase.routing(), is(TableDefinitions.SHARD_ROUTING));
    assertFalse(collectPhase.whereClause().noMatch());
    assertFalse(collectPhase.whereClause().hasQuery());
    assertThat(collectPhase.projections().size(), is(1));
    assertThat(collectPhase.projections().get(0), instanceOf(UpdateProjection.class));
    assertThat(collectPhase.toCollect().size(), is(1));
    assertThat(collectPhase.toCollect().get(0), instanceOf(Reference.class));
    assertThat(((Reference) collectPhase.toCollect().get(0)).ident().columnIdent().fqn(), is("_id"));
    UpdateProjection updateProjection = (UpdateProjection) collectPhase.projections().get(0);
    assertThat(updateProjection.uidSymbol(), instanceOf(InputColumn.class));
    assertThat(updateProjection.assignmentsColumns()[0], is("name"));
    Symbol symbol = updateProjection.assignments()[0];
    assertThat(symbol, isLiteral("Vogon lyric fan", DataTypes.STRING));
    MergePhase mergePhase = merge.mergePhase();
    assertThat(mergePhase.projections().size(), is(1));
    assertThat(mergePhase.projections().get(0), instanceOf(MergeCountProjection.class));
    assertThat(mergePhase.outputTypes().size(), is(1));
}
Also used : MergeCountProjection(io.crate.planner.projection.MergeCountProjection) Upsert(io.crate.planner.node.dml.Upsert) MergePhase(io.crate.planner.node.dql.MergePhase) Collect(io.crate.planner.node.dql.Collect) Reference(io.crate.metadata.Reference) InputColumn(io.crate.analyze.symbol.InputColumn) Symbol(io.crate.analyze.symbol.Symbol) UpdateProjection(io.crate.planner.projection.UpdateProjection) RoutedCollectPhase(io.crate.planner.node.dql.RoutedCollectPhase) Test(org.junit.Test) CrateUnitTest(io.crate.test.integration.CrateUnitTest)

Aggregations

InputColumn (io.crate.analyze.symbol.InputColumn)1 Symbol (io.crate.analyze.symbol.Symbol)1 Reference (io.crate.metadata.Reference)1 Upsert (io.crate.planner.node.dml.Upsert)1 Collect (io.crate.planner.node.dql.Collect)1 MergePhase (io.crate.planner.node.dql.MergePhase)1 RoutedCollectPhase (io.crate.planner.node.dql.RoutedCollectPhase)1 MergeCountProjection (io.crate.planner.projection.MergeCountProjection)1 UpdateProjection (io.crate.planner.projection.UpdateProjection)1 CrateUnitTest (io.crate.test.integration.CrateUnitTest)1 Test (org.junit.Test)1