Search in sources :

Example 6 with SingleInputStream

use of io.siddhi.query.api.execution.query.input.stream.SingleInputStream in project siddhi by wso2.

the class SiddhiQLBaseVisitorImpl method visitJoin_source.

/**
 * {@inheritDoc}
 * <p>The default implementation returns the result of calling
 * {@link #visitChildren} on {@code ctx}.</p>
 *
 * @param ctx
 */
@Override
public Object visitJoin_source(@NotNull SiddhiQLParser.Join_sourceContext ctx) {
    // join_source
    // :io (basic_source_stream_handler)* window? (AS alias)?
    // ;
    Source source = (Source) visit(ctx.source());
    String streamAlias = null;
    if (ctx.alias() != null) {
        streamAlias = (String) visit(ctx.alias());
        activeStreams.remove(ctx.source().getText());
        activeStreams.add(streamAlias);
    }
    BasicSingleInputStream basicSingleInputStream = new BasicSingleInputStream(streamAlias, source.streamId, source.isInnerStream, source.isFaultStream);
    if (ctx.basic_source_stream_handlers() != null) {
        basicSingleInputStream.addStreamHandlers((List<StreamHandler>) visit(ctx.basic_source_stream_handlers()));
    }
    if (ctx.window() != null) {
        SingleInputStream inputStream = new SingleInputStream(basicSingleInputStream, (Window) visit(ctx.window()));
        populateQueryContext(inputStream, ctx);
        return inputStream;
    } else {
        populateQueryContext(basicSingleInputStream, ctx);
        return basicSingleInputStream;
    }
}
Also used : SingleInputStream(io.siddhi.query.api.execution.query.input.stream.SingleInputStream) BasicSingleInputStream(io.siddhi.query.api.execution.query.input.stream.BasicSingleInputStream) BasicSingleInputStream(io.siddhi.query.api.execution.query.input.stream.BasicSingleInputStream) StreamHandler(io.siddhi.query.api.execution.query.input.handler.StreamHandler)

Example 7 with SingleInputStream

use of io.siddhi.query.api.execution.query.input.stream.SingleInputStream in project siddhi by wso2.

the class PartitionRuntimeImpl method addPartitionReceiver.

public void addPartitionReceiver(QueryRuntimeImpl queryRuntime, List<VariableExpressionExecutor> executors, MetaStateEvent metaEvent) {
    Query query = queryRuntime.getQuery();
    List<List<PartitionExecutor>> partitionExecutors = new StreamPartitioner(query.getInputStream(), partition, metaEvent, executors, queryRuntime.getSiddhiQueryContext()).getPartitionExecutorLists();
    if (queryRuntime.getStreamRuntime() instanceof SingleStreamRuntime) {
        SingleInputStream singleInputStream = (SingleInputStream) query.getInputStream();
        addPartitionReceiver(singleInputStream.getStreamId(), singleInputStream.isInnerStream(), metaEvent.getMetaStreamEvent(0), partitionExecutors.get(0));
    } else if (queryRuntime.getStreamRuntime() instanceof JoinStreamRuntime) {
        SingleInputStream leftSingleInputStream = (SingleInputStream) ((JoinInputStream) query.getInputStream()).getLeftInputStream();
        addPartitionReceiver(leftSingleInputStream.getStreamId(), leftSingleInputStream.isInnerStream(), metaEvent.getMetaStreamEvent(0), partitionExecutors.get(0));
        SingleInputStream rightSingleInputStream = (SingleInputStream) ((JoinInputStream) query.getInputStream()).getRightInputStream();
        addPartitionReceiver(rightSingleInputStream.getStreamId(), rightSingleInputStream.isInnerStream(), metaEvent.getMetaStreamEvent(1), partitionExecutors.get(1));
    } else if (queryRuntime.getStreamRuntime() instanceof StateStreamRuntime) {
        StateElement stateElement = ((StateInputStream) query.getInputStream()).getStateElement();
        addPartitionReceiverForStateElement(stateElement, metaEvent, partitionExecutors, 0);
    }
}
Also used : Query(io.siddhi.query.api.execution.query.Query) SingleStreamRuntime(io.siddhi.core.query.input.stream.single.SingleStreamRuntime) SingleInputStream(io.siddhi.query.api.execution.query.input.stream.SingleInputStream) JoinStreamRuntime(io.siddhi.core.query.input.stream.join.JoinStreamRuntime) JoinInputStream(io.siddhi.query.api.execution.query.input.stream.JoinInputStream) EveryStateElement(io.siddhi.query.api.execution.query.input.state.EveryStateElement) StreamStateElement(io.siddhi.query.api.execution.query.input.state.StreamStateElement) LogicalStateElement(io.siddhi.query.api.execution.query.input.state.LogicalStateElement) NextStateElement(io.siddhi.query.api.execution.query.input.state.NextStateElement) StateElement(io.siddhi.query.api.execution.query.input.state.StateElement) CountStateElement(io.siddhi.query.api.execution.query.input.state.CountStateElement) List(java.util.List) ArrayList(java.util.ArrayList) StateInputStream(io.siddhi.query.api.execution.query.input.stream.StateInputStream) StateStreamRuntime(io.siddhi.core.query.input.stream.state.StateStreamRuntime)

Example 8 with SingleInputStream

use of io.siddhi.query.api.execution.query.input.stream.SingleInputStream in project siddhi by wso2.

the class InputStreamParser method parse.

/**
 * Parse an InputStream returning corresponding StreamRuntime
 *
 * @param inputStream                input stream to be parsed
 * @param streamDefinitionMap        map containing user given stream definitions
 * @param tableDefinitionMap         table definition map
 * @param windowDefinitionMap        window definition map
 * @param aggregationDefinitionMap   aggregation definition map
 * @param tableMap                   Table Map
 * @param windowMap                  event window map
 * @param aggregationMap             aggregator map
 * @param executors                  List to hold VariableExpressionExecutors to update after query parsing
 * @param outputExpectsExpiredEvents is expired events sent as output
 * @param siddhiQueryContext         Siddhi query context.
 * @return StreamRuntime
 */
public static StreamRuntime parse(InputStream inputStream, Query query, Map<String, AbstractDefinition> streamDefinitionMap, Map<String, AbstractDefinition> tableDefinitionMap, Map<String, AbstractDefinition> windowDefinitionMap, Map<String, AbstractDefinition> aggregationDefinitionMap, Map<String, Table> tableMap, Map<String, Window> windowMap, Map<String, AggregationRuntime> aggregationMap, List<VariableExpressionExecutor> executors, boolean outputExpectsExpiredEvents, SiddhiQueryContext siddhiQueryContext) {
    if (inputStream instanceof BasicSingleInputStream || inputStream instanceof SingleInputStream) {
        SingleInputStream singleInputStream = (SingleInputStream) inputStream;
        ProcessStreamReceiver processStreamReceiver = new ProcessStreamReceiver(singleInputStream.getStreamId(), siddhiQueryContext);
        return SingleInputStreamParser.parseInputStream((SingleInputStream) inputStream, executors, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, tableMap, new MetaStreamEvent(), processStreamReceiver, true, outputExpectsExpiredEvents, false, false, siddhiQueryContext);
    } else if (inputStream instanceof JoinInputStream) {
        return JoinInputStreamParser.parseInputStream(((JoinInputStream) inputStream), query, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, tableMap, windowMap, aggregationMap, executors, outputExpectsExpiredEvents, siddhiQueryContext);
    } else if (inputStream instanceof StateInputStream) {
        MetaStateEvent metaStateEvent = new MetaStateEvent(inputStream.getAllStreamIds().size());
        return StateInputStreamParser.parseInputStream(((StateInputStream) inputStream), metaStateEvent, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, tableMap, executors, siddhiQueryContext);
    } else {
        throw new OperationNotSupportedException();
    }
}
Also used : OperationNotSupportedException(io.siddhi.core.exception.OperationNotSupportedException) ProcessStreamReceiver(io.siddhi.core.query.input.ProcessStreamReceiver) SingleInputStream(io.siddhi.query.api.execution.query.input.stream.SingleInputStream) BasicSingleInputStream(io.siddhi.query.api.execution.query.input.stream.BasicSingleInputStream) JoinInputStream(io.siddhi.query.api.execution.query.input.stream.JoinInputStream) BasicSingleInputStream(io.siddhi.query.api.execution.query.input.stream.BasicSingleInputStream) StateInputStream(io.siddhi.query.api.execution.query.input.stream.StateInputStream) MetaStreamEvent(io.siddhi.core.event.stream.MetaStreamEvent) MetaStateEvent(io.siddhi.core.event.state.MetaStateEvent)

Aggregations

SingleInputStream (io.siddhi.query.api.execution.query.input.stream.SingleInputStream)8 JoinInputStream (io.siddhi.query.api.execution.query.input.stream.JoinInputStream)5 ArrayList (java.util.ArrayList)5 StreamHandler (io.siddhi.query.api.execution.query.input.handler.StreamHandler)4 BasicSingleInputStream (io.siddhi.query.api.execution.query.input.stream.BasicSingleInputStream)4 StateInputStream (io.siddhi.query.api.execution.query.input.stream.StateInputStream)4 MetaStateEvent (io.siddhi.core.event.state.MetaStateEvent)3 MetaStreamEvent (io.siddhi.core.event.stream.MetaStreamEvent)3 JoinStreamRuntime (io.siddhi.core.query.input.stream.join.JoinStreamRuntime)3 SingleStreamRuntime (io.siddhi.core.query.input.stream.single.SingleStreamRuntime)3 Query (io.siddhi.query.api.execution.query.Query)3 List (java.util.List)3 SiddhiAppCreationException (io.siddhi.core.exception.SiddhiAppCreationException)2 VariableExpressionExecutor (io.siddhi.core.executor.VariableExpressionExecutor)2 ProcessStreamReceiver (io.siddhi.core.query.input.ProcessStreamReceiver)2 JoinProcessor (io.siddhi.core.query.input.stream.join.JoinProcessor)2 QuerySelector (io.siddhi.core.query.selector.QuerySelector)2 CompiledSelection (io.siddhi.core.util.collection.operator.CompiledSelection)2 Expression (io.siddhi.query.api.expression.Expression)2 AggregationRuntime (io.siddhi.core.aggregation.AggregationRuntime)1