Limitations and Rejection Tokens
If registration is rejected, the name of what was rejected is provided. Since that token appears exactly in the logs and API responses, you can find the corresponding line on this page.
Skipped configurations lead to a state where the statement «runs, emits, and is incorrect» — with fewer rows, silently missing columns — without anything turning red. Rejecting registration is the only failure mode visible to the operator.
How to Read Tokens — Prefixes Indicate «Who»
| Prefix | Who Rejected | Action |
|---|---|---|
aster: | Engine itself rejected during compilation | Usually a statement issue — check column names and types |
| Other tokens | Planner cannot lower it to this engine | Remove that configuration and rewrite the statement |
Things the Language Does Not Support
| Token | Meaning |
|---|---|
function:<name> | Function unknown to the language (percentile · to_bigdecimal, etc.) |
view:<key> | View unknown to the language (std:size, etc.) |
pattern:not:unbounded | Absence pattern without duration. Specify a duration as in not X for 30 min |
pattern:guard:timer:at · pattern:observer:timer:schedule | timer: configuration not in the list |
window:tumbling:zone-without-calendar-alignment | Time zone specified but not calendar-aligned |
Things the Default Backend (Aster CEP) Rejects
| Token | Meaning |
|---|---|
expr:case-without-else | CASE without ELSE — no answer for remaining cases |
function:stddev:non-numeric-argument · function:median:non-numeric-argument | Statistical function on a non-numeric column |
select:distinct:with-window | Window already attached to DISTINCT |
view:chain:second-window | Window applied twice |
view:on-pattern-source | Window above a row «emitted» by a pattern |
view:std:firstevent | View that emits only one row for the statement's lifetime |
pattern:and · pattern:until | Cannot lower that pattern operator |
match-recognize:input:window | Window on input of MATCH_RECOGNIZE |
match-recognize:after-match-skip:past-last-row | SKIP PAST LAST ROW |
match-recognize:pattern:alternation · …:permute | Alternation · Permutation |
having:aggregate-not-selected | HAVING with aggregation not calculated by SELECT |
Things Flink Rejects (Oracle Only)
Since Flink is not used for operations, these tokens are only visible during comparison.
| Token | Meaning |
|---|---|
from:join | Join |
select:distinct · order by · limit:<n> | That clause |
where:not | Unary NOT |
insert into:<stream> | INSERT INTO |
pattern:not | Absence pattern — no negation in standard row patterns |
window:sliding:not-supported · window:tumbling:first-event-alignment | That window shape |
function:first · function:median · function:cast | That function |
projection:operator:<op> · projection:case with an operand | Arithmetic in projection · CASE |
«Accept and Ignore» Clauses Are Worse Than Rejections
This is the failure mode that this document repeatedly monitors.
A rejected statement is not registered and is seen by the operator. An accepted and ignored clause means the statement runs, emits rows, and those rows look plausible.
In the past, four were caught in this category — OUTPUT LAST EVERY n (accepts name but does not implement) · ORDER BY·LIMIT (accepts and silently discards) · pattern:without every (emits rows not requested by the statement) · to_string (responds that a function not in the product «can be used»).
🔴 The last one is the worst. A rejection means «find another spelling», but an incorrect SUPPORTED is a promise that «it can be moved».
Other Limitations
| Item | Status |
|---|---|
| Late Events | No concept of allowed lateness. Late events are aggregated into open buckets |
| First Part Bucket | Not suppressed — the first bucket immediately after registration is a fragment |
| DST | Rejects if the transition offset is not a multiple of the bucket size |
Common reasons for stddev · median rejection | Because the value column of the corpus is a string — a schema issue, not a statement issue |
Failure value of to_* | If conversion fails or is null, it is −1 today |
| Result Delivery | If subscribers are 0, rows disappear and only a warning remains |
| Cells marked as «could not measure» in other backends | Do not read as ✓. Not measuring and being possible are different |