This command executes a query in a certain langauge and is equal to Commands
This command is used to control how buffers are (automatically) placed within the query plan if a query is transformed (e.g. by Commands).
The parameter is the name of a buffer placement strategy. Since the strategies are dynamically loaded, the availability of certain strategies depends on the current system setting (which features are installed and which not). Some possible stragies are shown in the examples.
No buffers:
#BUFFERPLACEMENT None |
Adds a buffer before each operator:
#BUFFERPLACEMENT Standard Buffer Placement |
Adds a buffer after each source:
#BUFFERPLACEMENT Source Buffer Placement |
Adds a buffer for each query:
#BUFFERPLACEMENT Query Buffer Placement |
Allows to define additional processing informations, e.g. IsSecurtyAware.
Example
#CONFIG isSecurityAware true |
This command is used to define variables to reuse certain values. See also at Variables how to use a defined variable or at #IFDEF to see how to use defined variables within if-statements.
The parameters are one or two values, which are separated by a blank or tab. Therefore, the parameters may not have any blanks or tabs. The first parameter is the name and the second paramter is the value that is assigned to the name. However, the second parameter (the value) is optional, because it a value for #IFDEF is not necessary, otherwise it cannot be used for replacement.
The first variable is called "one" and has no value. The second variable is called "two" and has the value "1234". See at Variables or at #IFDEF for examples how to use a variable.
#DEFINE one #DEFINE two 1234 |
This command switches the query sharing (which tries to optimize a query be reusing parts of already installed query plans) on or off.
The parameter is a boolean: the parameter may be either "true" or "false".
/// query sharing off #DOQUERYSHARING false /// query sharing on #DOQUERYSHARING true |
This command switches the rewriting (tries to optimize a query plan by switching, deleting, splitting or merging operators without changing the query's semantics) on or off.
The parameter is a boolean: the parameter may be either "true" or "false".
/// query rewrite off #DOREWRITE false /// query rewrite on #DOREWRITE true |
This command drops all installed queries. It does not remove andy sources or sinks, but you can use Commands or Commands for this.
It has no parameters.
#DROPALLQUERIES |
This command drops all installed sinks. It does not remove andy queries or sources, but you can use Commands or Commands
It has no parameters.
#DROPALLSINKS |
This command drops all installed sources. It does not remove andy queries or sinks, but you can use Commands or Commands
It has no parameters.
#DROPALLSOURCES |
It behaves like #DEFINE, except it evaluates the expression to a result, which is then stored in the specified variable.
The parameters are two values, which are separated by a blank, tab or "=". Therefore, the parameters may not have any blanks or tabs. The first parameter is the name and the second paramter is the expression, whose value is assigned to the name.
The first variable is called "aNumber" and is a normal #DEFINE. "bNumber" gets the evaluated result of "aNumber + 2000": "3000". "cNumber" demonstrates an alternative way to specify new variables (omitting "=").
#DEFINE aNumber 1000 #EVAL bNumber = aNumber + 2000 #EVAL cNumber aNumber + 2000 |
This command copies the input from the source given into the current script file. The source can be a local file or a file on a web server (giving an URI).
#INPUT ${WORKSPACEPROJECT/}Source.qry #INCLUDE http://odysseus.offis.uni-oldenburg.de/download/test/StreamSources.qry |
Changes the login that is used by other commands like #QUERY
There are two parameters: the username and the password.
This example changes the user to "System" with password "manager"
#LOGIN System manager |
Logs the current used user out
Has no parameters
#LOGOUT |
This command drops an existing MDA store. See MDA store functions.
The name for the store.
#MDASTORE_DROP MyStore |
This command creates a new MDA store. See MDA store functions.
#MDASTORE_INIT MyStore 0:200:3 100:300:5 |
In the default processing scenario, all elements in Odysseus are tagged with time stamp meta data. This command can be used to define the meta data.
Hint: This flag overwrites the standard configuration so you must provide all metadata that should be used!
Example
#METADATA TimeInterval #METADATA Latency #METADATA Priority |
Remark: There are some combined metadata elements available: e.g. IntervalLatency or IntervalLatencyPriority
Can be used to set internal Odysseus configuration params. This should be only
The parameters are: The name of the Odysseus configuration param and the new value
#ODYSSEUS_PARAM scheduler_TimeSlicePerStrategy 10 |
Enable predicate optimization for the current query. The optimizer tries to simplify the predicates used in select operations and transforms the predicate into its conjunctive normal form to move clauses in the expression down to the sources.
#OPTIMIZE_PREDICATES true |
For debugging purpose the values of variables that are defined using Commands or arbitrary expressions can be printed to the std output using Commands.
#DEFINE path F:/odysseus/example/ #PRINT path #PRINT "Running on "+toString(OS.NAME) |
This command sets the current parser for following commands, e.g. by Commands or Commands. The according parser is used until another parser is set.
The parser: Which parsers are available strongly depends on the current system setting and installed features. Normally in the default product, there is "PQL" for Procedural Query Language (PQL) and "CQL" for Continuous Query Language (CQL).
#PARSER PQL |
Set the name of the following query.
#QNAME Query1 |
Some special processing could require query specific processing.This command can be used to set these parameters as key value pairs.
#QPARAM key1 value1 #QPARAM key2 value2 #QPARAM key3 value3 |
Set the priority of the next following query
#QPRIORITY 10 |
This command executes a query in a certain language. This might be, for example Procedural Query Language (PQL) or Continuous Query Language (CQL). There are three different commands to execute such a query: #QUERY, #ADDQUERY and #RUNQUERY. While #QUERY and #ADDQUERY (they are one and the same) only passes the definied query to Odysseus, the #RUNQUERY additionally starts the query. This means, a query that was added with #QUERY or #ADDQUERY is inactive and not started until it is explicetely started. The #RUNQUERY in contrast immediatly starts a query after it is added, e.g. by using Commands .
The query command is dependent on the current parser (which is set by Commands) and the current transformation configuration (which is set by Commands). Therefore, it is necessary to run these two commands before. Furthermore, you can switch to other parsers / transformation within one script by using Commands or Commands again. Thus, if you want to run a query in CQL that last Commands command before should set the parser to "CQL".
If #QName is defined before, the query will get this name.
The example shows four queries after the parser is set to CQL and the transformation configuration is set to Standard. The first one uses #QUERY and it is executed as a CQL-Query, but not started. The second query is equal to the first one (it still uses CQL and is not started). The third query also uses CQL and the Standard transformation configuration, but is (in contrast to the first and second) started (it is directly running). Then, the parser is switched to PQL, so that the fourth query is parsed by the PQL-Parser and not by the CQL-Parser anymore.
#PARSER CQL #TRANSCFG Standard #QUERY SELECT * FROM bid #ADDQUERY SELECT * FROM bid #RUNQUERY SELECT * FROM bid #PARSER PQL #QUERY result = PROJECT({ATTRIBUTES=['id','name']}, person) |
The reload log is a file that logs all queries that were sucessfully installed into the system. This command can be used to run these logged queries from the log, e.g. to recreat an old ystem state.
This command has no parameters.
#RELOADFROMLOG |
This command installs a query and starts it immediately. See Commands for parameters, examples and details.
Sets the used scheduler and its scheduling strategy.
It needs two parameters: The scheduler and the scheduling-strategy. The available schedulers and strategies depends on the current system setting (additional features could be necessary!), because they are dynamically bound.
Uses the "Single Thread Scheduler" with a "Round Robin" scheduling strategy
#SCHEDULER "Single Thread Scheduler RR" "Round Robin" |
Uses the "Single Thread Scheduler" with a "Aurora Min Cost" scheduling strategy
#SCHEDULER "Single Thread Scheduler RR" "Aurora Min Cost" |
Uses the "Single Thread Scheduler" with a "Aurora Min Latency" scheduling strategy
#SCHEDULER "Single Thread Scheduler RR" "Aurora Min Latency" |
Uses the "Single Thread Scheduler" with a "Chain" scheduling strategy
#SCHEDULER "Single Thread Scheduler RR" "Chain" |
Uses the "Single Thread Scheduler" with a "Biggest Queue" scheduling strategy
#SCHEDULER "Single Thread Scheduler RR" "Biggest Queue" |
Uses the "Simple Dynamic Priority Scheduler" with a "Round Robin" scheduling strategy
#SCHEDULER "Simple Dynamic Priority Scheduler" "Round Robin" |
This command can be used to wait a certain time before executing the next command
The parameter is a number. It defines the time in milliseconds for which the script execution should sleep.
Waiting 2 seconds (2000 milliseconds) until the next command is invoked.
#SLEEP 2000 |
This command starts all installed queries that are not running at the moment.
This command has no parameters.
#STARTQUERIES |
This command starts the scheduling.Notice that the scheduling strongly influences the processing and should be carefully used. The scheduler is running by default. You can stop it by using Commands
This command has no parameters.
#STARTSCHEDULER |
This command stops the scheduling.Notice that the scheduling strongly influences the processing and should be carefully used. The scheduler is running by default. You can start it by using Commands
This command has no parameters.
#STOPSCHEDULER |
This command sets the transformation configuration for following commands. The transformation configuration defines how a query is transformed into an executable plan. The transformation configuration that was set is used until another configuration is explicitly set.
The configuration: Which configruations are available strongly depends on the current system setting and installed features. Normally in the default product, there is "Standard" for the default transformation configuration. If the latency feature is installed, there is also "StandardLatency" available, which invokes specific transformations so that the latency is automatically calculated.
Remark: For most cases, this parameter is not needed anymore. Use #METADATA if you want to attach additional metadata. Use #CONFIG to define distinct aspects.
#TRANSCFG Standard |
This command sets the transformation configuration for following commands. The transformation configuration defines how a query is transformed into an executable plan. The transformation configuration that was set is used until another configuration is explicitly set.
The configuration: Which configruations are available strongly depends on the current system setting and installed features. Normally in the default product, there is "Standard" for the default transformation configuration. If the latency feature is installed, there is also "StandardLatency" available, which invokes specific transformations so that the latency is automatically calculated.
#UNDEF variable |