Search in sources :

Example 21 with StreamDefinition

use of io.siddhi.query.api.definition.StreamDefinition in project siddhi by wso2.

the class OnDemandQueryParser method getInputDefinition.

private static AbstractDefinition getInputDefinition(OnDemandQuery onDemandQuery, Table table) {
    if (onDemandQuery.getSelector().getSelectionList().isEmpty()) {
        return table.getTableDefinition();
    } else {
        StreamDefinition streamDefinition = new StreamDefinition();
        streamDefinition.setId(table.getTableDefinition().getId() + "InputStream");
        return streamDefinition;
    }
}
Also used : StreamDefinition(io.siddhi.query.api.definition.StreamDefinition)

Example 22 with StreamDefinition

use of io.siddhi.query.api.definition.StreamDefinition in project siddhi by wso2.

the class AggregationParser method initAggregateQueryExecutor.

private static Map<TimePeriod.Duration, Processor> initAggregateQueryExecutor(List<TimePeriod.Duration> aggregationDurations, Map<TimePeriod.Duration, List<ExpressionExecutor>> processExpressionExecutorsMap, StreamDefinition incomingOutputStreamDefinition, boolean isDistributed, String shardID, boolean isProcessingOnExternalTime, SiddhiQueryContext siddhiQueryContext, AggregationDefinition aggregationDefinition, ConfigManager configManager, Map<TimePeriod.Duration, Table> aggregationTables, List<Variable> groupByVariableList) {
    Map<TimePeriod.Duration, Processor> cudProcessors = new LinkedHashMap<>();
    String datasourceName = AnnotationHelper.getAnnotationElement(SiddhiConstants.NAMESPACE_STORE, "datasource", aggregationDefinition.getAnnotations()).getValue();
    if (datasourceName == null || datasourceName.isEmpty()) {
        throw new SiddhiAppCreationException("Datasource configuration must be provided inorder to use persisted " + "aggregation mode");
    }
    Database databaseType = getDatabaseType(configManager, datasourceName);
    if (log.isDebugEnabled()) {
        log.debug("Database type " + databaseType);
    }
    SiddhiAppContext cudSiddhiAppContext = new SiddhiAppContext();
    SiddhiContext context = new SiddhiContext();
    context.setConfigManager(configManager);
    cudSiddhiAppContext.setSiddhiContext(context);
    StringConstant datasource = new StringConstant(datasourceName);
    ConstantExpressionExecutor datasourceExecutor = new ConstantExpressionExecutor(datasource.getValue(), Attribute.Type.STRING);
    Expression[] streamHandler;
    ExpressionExecutor[] cudStreamProcessorInputVariables;
    if (isProcessingOnExternalTime) {
        streamHandler = new Expression[7];
    } else {
        streamHandler = new Expression[5];
    }
    try {
        DBAggregationQueryConfigurationEntry dbAggregationQueryConfigurationEntry = DBAggregationQueryUtil.lookupCurrentQueryConfigurationEntry(databaseType);
        if (log.isDebugEnabled()) {
            log.debug("CUD queries for aggregation " + aggregationDefinition.getId());
        }
        for (int i = aggregationDurations.size() - 1; i > 0; i--) {
            if (aggregationDurations.get(i).ordinal() >= 3) {
                if (log.isDebugEnabled()) {
                    log.debug(" Initializing cudProcessors for duration " + aggregationDurations.get(i));
                }
                String databaseSelectQuery = generateDatabaseQuery(processExpressionExecutorsMap.get(aggregationDurations.get(i)), dbAggregationQueryConfigurationEntry, incomingOutputStreamDefinition, isDistributed, shardID, isProcessingOnExternalTime, aggregationTables.get(aggregationDurations.get(i)), aggregationTables.get(aggregationDurations.get(i - 1)), groupByVariableList, aggregationDurations.get(i));
                StringConstant selectQuery = new StringConstant(databaseSelectQuery);
                if (log.isDebugEnabled()) {
                    log.debug(selectQuery);
                }
                ConstantExpressionExecutor selectExecutor = new ConstantExpressionExecutor(selectQuery.getValue(), Attribute.Type.STRING);
                Map<Attribute, int[]> cudInputStreamAttributesMap = generateCUDInputStreamAttributes(isProcessingOnExternalTime);
                if (isProcessingOnExternalTime) {
                    cudStreamProcessorInputVariables = new ExpressionExecutor[7];
                } else {
                    cudStreamProcessorInputVariables = new ExpressionExecutor[5];
                }
                cudStreamProcessorInputVariables[0] = datasourceExecutor;
                cudStreamProcessorInputVariables[1] = selectExecutor;
                streamHandler[0] = datasource;
                streamHandler[1] = selectQuery;
                MetaStreamEvent metaStreamEvent = generateCUDMetaStreamEvent(isProcessingOnExternalTime);
                StreamDefinition outputStream = new StreamDefinition();
                VariableExpressionExecutor variableExpressionExecutor;
                int j = 0;
                for (Map.Entry<Attribute, int[]> entry : cudInputStreamAttributesMap.entrySet()) {
                    Attribute attribute = entry.getKey();
                    Variable timestampVariable = new Variable(attribute.getName());
                    for (int position : entry.getValue()) {
                        streamHandler[position + 2] = timestampVariable;
                        variableExpressionExecutor = new VariableExpressionExecutor(attribute, 0, 0);
                        variableExpressionExecutor.setPosition(new int[] { 2, j });
                        cudStreamProcessorInputVariables[position + 2] = variableExpressionExecutor;
                    }
                    outputStream.attribute(attribute.getName(), attribute.getType());
                    j++;
                }
                StreamFunction cudStreamFunction = new StreamFunction(NAMESPACE_RDBMS, FUNCTION_NAME_CUD, streamHandler);
                cudProcessors.put(aggregationDurations.get(i), getCudProcessor(cudStreamFunction, siddhiQueryContext, metaStreamEvent, cudStreamProcessorInputVariables, aggregationDurations.get(i)));
            }
        }
        return cudProcessors;
    } catch (CannotLoadConfigurationException e) {
        throw new SiddhiAppCreationException("Error occurred while initializing the persisted incremental " + "aggregation. Could not load the db quires for database type " + databaseType);
    }
}
Also used : PersistedAggregationResultsProcessor(io.siddhi.core.aggregation.persistedaggregation.config.PersistedAggregationResultsProcessor) QueryableProcessor(io.siddhi.core.query.processor.stream.window.QueryableProcessor) AbstractStreamProcessor(io.siddhi.core.query.processor.stream.AbstractStreamProcessor) QueuedCudStreamProcessor(io.siddhi.core.aggregation.persistedaggregation.QueuedCudStreamProcessor) StreamProcessor(io.siddhi.core.query.processor.stream.StreamProcessor) Processor(io.siddhi.core.query.processor.Processor) IncrementalAggregationProcessor(io.siddhi.core.aggregation.IncrementalAggregationProcessor) Variable(io.siddhi.query.api.expression.Variable) Attribute(io.siddhi.query.api.definition.Attribute) OutputAttribute(io.siddhi.query.api.execution.query.selection.OutputAttribute) SiddhiContext(io.siddhi.core.config.SiddhiContext) LinkedHashMap(java.util.LinkedHashMap) ConstantExpressionExecutor(io.siddhi.core.executor.ConstantExpressionExecutor) DBAggregationQueryConfigurationEntry(io.siddhi.core.aggregation.persistedaggregation.config.DBAggregationQueryConfigurationEntry) ExpressionExecutor(io.siddhi.core.executor.ExpressionExecutor) ConstantExpressionExecutor(io.siddhi.core.executor.ConstantExpressionExecutor) VariableExpressionExecutor(io.siddhi.core.executor.VariableExpressionExecutor) StreamDefinition(io.siddhi.query.api.definition.StreamDefinition) SiddhiAppCreationException(io.siddhi.core.exception.SiddhiAppCreationException) StreamFunction(io.siddhi.query.api.execution.query.input.handler.StreamFunction) VariableExpressionExecutor(io.siddhi.core.executor.VariableExpressionExecutor) CannotLoadConfigurationException(io.siddhi.core.exception.CannotLoadConfigurationException) Expression(io.siddhi.query.api.expression.Expression) SiddhiAppContext(io.siddhi.core.config.SiddhiAppContext) StringConstant(io.siddhi.query.api.expression.constant.StringConstant) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) MetaStreamEvent(io.siddhi.core.event.stream.MetaStreamEvent)

Example 23 with StreamDefinition

use of io.siddhi.query.api.definition.StreamDefinition in project siddhi by wso2.

the class AggregationParser method generateCUDMetaStreamEvent.

private static MetaStreamEvent generateCUDMetaStreamEvent(boolean isProcessingOnExternalTime) {
    MetaStreamEvent metaStreamEvent = new MetaStreamEvent();
    Map<Attribute, int[]> cudInputStreamAttributesList = generateCUDInputStreamAttributes(isProcessingOnExternalTime);
    StreamDefinition inputDefinition = new StreamDefinition();
    for (Attribute attribute : cudInputStreamAttributesList.keySet()) {
        metaStreamEvent.addData(attribute);
        inputDefinition.attribute(attribute.getName(), attribute.getType());
    }
    metaStreamEvent.addInputDefinition(inputDefinition);
    metaStreamEvent.setEventType(MetaStreamEvent.EventType.DEFAULT);
    return metaStreamEvent;
}
Also used : StreamDefinition(io.siddhi.query.api.definition.StreamDefinition) Attribute(io.siddhi.query.api.definition.Attribute) OutputAttribute(io.siddhi.query.api.execution.query.selection.OutputAttribute) MetaStreamEvent(io.siddhi.core.event.stream.MetaStreamEvent)

Example 24 with StreamDefinition

use of io.siddhi.query.api.definition.StreamDefinition in project siddhi by wso2.

the class PartitionTestCase1 method testPartitionQuery48.

@Test(expectedExceptions = SiddhiAppValidationException.class)
public void testPartitionQuery48() {
    log.info("Partition test48");
    SiddhiApp siddhiApp = new SiddhiApp("plan48");
    StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.FLOAT).attribute("volume", Attribute.Type.INT);
    siddhiApp.defineStream(streamDefinition);
    FunctionDefinition functionDefinition = new FunctionDefinition();
    siddhiApp.defineFunction(functionDefinition.id("e1").type(null));
}
Also used : SiddhiApp(io.siddhi.query.api.SiddhiApp) StreamDefinition(io.siddhi.query.api.definition.StreamDefinition) FunctionDefinition(io.siddhi.query.api.definition.FunctionDefinition) Test(org.testng.annotations.Test)

Example 25 with StreamDefinition

use of io.siddhi.query.api.definition.StreamDefinition in project siddhi by wso2.

the class PartitionTestCase1 method testPartitionQuery49.

@Test(expectedExceptions = SiddhiAppValidationException.class)
public void testPartitionQuery49() {
    log.info("Partition test49");
    SiddhiApp siddhiApp = new SiddhiApp("plan49");
    StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.FLOAT).attribute("volume", Attribute.Type.INT);
    siddhiApp.defineStream(streamDefinition);
    FunctionDefinition functionDefinition = new FunctionDefinition();
    siddhiApp.defineFunction(functionDefinition.id("e1").type(Attribute.Type.STRING).body(null));
}
Also used : SiddhiApp(io.siddhi.query.api.SiddhiApp) StreamDefinition(io.siddhi.query.api.definition.StreamDefinition) FunctionDefinition(io.siddhi.query.api.definition.FunctionDefinition) Test(org.testng.annotations.Test)

Aggregations

StreamDefinition (io.siddhi.query.api.definition.StreamDefinition)134 Test (org.testng.annotations.Test)116 SiddhiApp (io.siddhi.query.api.SiddhiApp)88 Event (io.siddhi.core.event.Event)86 Query (io.siddhi.query.api.execution.query.Query)85 SiddhiAppRuntime (io.siddhi.core.SiddhiAppRuntime)84 SiddhiManager (io.siddhi.core.SiddhiManager)84 InputHandler (io.siddhi.core.stream.input.InputHandler)81 QueryCallback (io.siddhi.core.query.output.callback.QueryCallback)75 Attribute (io.siddhi.query.api.definition.Attribute)12 StreamCallback (io.siddhi.core.stream.output.StreamCallback)10 MetaStreamEvent (io.siddhi.core.event.stream.MetaStreamEvent)9 StreamEvent (io.siddhi.core.event.stream.StreamEvent)8 Partition (io.siddhi.query.api.execution.partition.Partition)7 MetaStateEvent (io.siddhi.core.event.state.MetaStateEvent)5 OutputAttribute (io.siddhi.query.api.execution.query.selection.OutputAttribute)5 StreamEventFactory (io.siddhi.core.event.stream.StreamEventFactory)4 SiddhiAppCreationException (io.siddhi.core.exception.SiddhiAppCreationException)4 VariableExpressionExecutor (io.siddhi.core.executor.VariableExpressionExecutor)4 SelectiveStreamEventConverter (io.siddhi.core.event.stream.converter.SelectiveStreamEventConverter)3