Search in sources :

Example 1 with PartitionType

use of org.wso2.siddhi.query.api.execution.partition.PartitionType in project siddhi by wso2.

the class StreamPartitioner method createSingleInputStreamExecutors.

private void createSingleInputStreamExecutors(SingleInputStream inputStream, Partition partition, MetaStreamEvent metaEvent, List<VariableExpressionExecutor> executors, Map<String, Table> tableMap, SiddhiAppContext siddhiAppContext, String queryName) {
    List<PartitionExecutor> executorList = new ArrayList<PartitionExecutor>();
    partitionExecutorLists.add(executorList);
    if (!inputStream.isInnerStream()) {
        for (PartitionType partitionType : partition.getPartitionTypeMap().values()) {
            if (partitionType instanceof ValuePartitionType) {
                if (partitionType.getStreamId().equals(inputStream.getStreamId())) {
                    executorList.add(new ValuePartitionExecutor(ExpressionParser.parseExpression(((ValuePartitionType) partitionType).getExpression(), metaEvent, SiddhiConstants.UNKNOWN_STATE, tableMap, executors, siddhiAppContext, false, 0, queryName)));
                }
            } else {
                for (RangePartitionType.RangePartitionProperty rangePartitionProperty : ((RangePartitionType) partitionType).getRangePartitionProperties()) {
                    if (partitionType.getStreamId().equals(inputStream.getStreamId())) {
                        executorList.add(new RangePartitionExecutor((ConditionExpressionExecutor) ExpressionParser.parseExpression(rangePartitionProperty.getCondition(), metaEvent, SiddhiConstants.UNKNOWN_STATE, tableMap, executors, siddhiAppContext, false, 0, queryName), rangePartitionProperty.getPartitionKey()));
                    }
                }
            }
        }
    }
}
Also used : ValuePartitionExecutor(org.wso2.siddhi.core.partition.executor.ValuePartitionExecutor) RangePartitionType(org.wso2.siddhi.query.api.execution.partition.RangePartitionType) RangePartitionExecutor(org.wso2.siddhi.core.partition.executor.RangePartitionExecutor) ValuePartitionExecutor(org.wso2.siddhi.core.partition.executor.ValuePartitionExecutor) PartitionExecutor(org.wso2.siddhi.core.partition.executor.PartitionExecutor) ArrayList(java.util.ArrayList) RangePartitionExecutor(org.wso2.siddhi.core.partition.executor.RangePartitionExecutor) ValuePartitionType(org.wso2.siddhi.query.api.execution.partition.ValuePartitionType) ConditionExpressionExecutor(org.wso2.siddhi.core.executor.condition.ConditionExpressionExecutor) PartitionType(org.wso2.siddhi.query.api.execution.partition.PartitionType) RangePartitionType(org.wso2.siddhi.query.api.execution.partition.RangePartitionType) ValuePartitionType(org.wso2.siddhi.query.api.execution.partition.ValuePartitionType)

Example 2 with PartitionType

use of org.wso2.siddhi.query.api.execution.partition.PartitionType in project siddhi by wso2.

the class SiddhiQLBaseVisitorImpl method visitPartition.

/**
 * {@inheritDoc}
 * <p>The default implementation returns the result of calling
 * {@link #visitChildren} on {@code ctx}.</p>
 *
 * @param ctx
 */
@Override
public Partition visitPartition(@NotNull SiddhiQLParser.PartitionContext ctx) {
    Partition partition = Partition.partition();
    for (SiddhiQLParser.AnnotationContext annotationContext : ctx.annotation()) {
        partition.annotation((Annotation) visit(annotationContext));
    }
    for (SiddhiQLParser.Partition_with_streamContext with_streamContext : ctx.partition_with_stream()) {
        partition.with((PartitionType) visit(with_streamContext));
    }
    for (SiddhiQLParser.QueryContext queryContext : ctx.query()) {
        partition.addQuery((Query) visit(queryContext));
    }
    populateQueryContext(partition, ctx);
    return partition;
}
Also used : Partition(org.wso2.siddhi.query.api.execution.partition.Partition) SiddhiQLParser(org.wso2.siddhi.query.compiler.SiddhiQLParser)

Example 3 with PartitionType

use of org.wso2.siddhi.query.api.execution.partition.PartitionType in project siddhi by wso2.

the class SiddhiQLBaseVisitorImpl method visitPartition_with_stream.

/**
 * {@inheritDoc}
 * <p>The default implementation returns the result of calling
 * {@link #visitChildren} on {@code ctx}.</p>
 *
 * @param ctx
 */
@Override
public PartitionType visitPartition_with_stream(@NotNull SiddhiQLParser.Partition_with_streamContext ctx) {
    String streamId = (String) visit(ctx.stream_id());
    activeStreams.add(streamId);
    try {
        if (ctx.condition_ranges() != null) {
            PartitionType partitionType = new RangePartitionType(streamId, (RangePartitionType.RangePartitionProperty[]) visit(ctx.condition_ranges()));
            populateQueryContext(partitionType, ctx);
            return partitionType;
        } else if (ctx.attribute() != null) {
            PartitionType partitionType = new ValuePartitionType(streamId, (Expression) visit(ctx.attribute()));
            populateQueryContext(partitionType, ctx);
            return partitionType;
        } else {
            throw newSiddhiParserException(ctx);
        }
    } finally {
        activeStreams.clear();
    }
}
Also used : RangePartitionType(org.wso2.siddhi.query.api.execution.partition.RangePartitionType) Expression(org.wso2.siddhi.query.api.expression.Expression) ValuePartitionType(org.wso2.siddhi.query.api.execution.partition.ValuePartitionType) PartitionType(org.wso2.siddhi.query.api.execution.partition.PartitionType) RangePartitionType(org.wso2.siddhi.query.api.execution.partition.RangePartitionType) ValuePartitionType(org.wso2.siddhi.query.api.execution.partition.ValuePartitionType)

Aggregations

PartitionType (org.wso2.siddhi.query.api.execution.partition.PartitionType)2 RangePartitionType (org.wso2.siddhi.query.api.execution.partition.RangePartitionType)2 ValuePartitionType (org.wso2.siddhi.query.api.execution.partition.ValuePartitionType)2 ArrayList (java.util.ArrayList)1 ConditionExpressionExecutor (org.wso2.siddhi.core.executor.condition.ConditionExpressionExecutor)1 PartitionExecutor (org.wso2.siddhi.core.partition.executor.PartitionExecutor)1 RangePartitionExecutor (org.wso2.siddhi.core.partition.executor.RangePartitionExecutor)1 ValuePartitionExecutor (org.wso2.siddhi.core.partition.executor.ValuePartitionExecutor)1 Partition (org.wso2.siddhi.query.api.execution.partition.Partition)1 Expression (org.wso2.siddhi.query.api.expression.Expression)1 SiddhiQLParser (org.wso2.siddhi.query.compiler.SiddhiQLParser)1