diff --git a/cesql/cesql_tck/README.md b/cesql/cesql_tck/README.md index 5852abcfe..2000b3e75 100644 --- a/cesql/cesql_tck/README.md +++ b/cesql/cesql_tck/README.md @@ -23,6 +23,5 @@ The `error` values could be any of the following: * `parse`: Error while parsing the expression * `math`: Math error while evaluating a math operator * `cast`: Casting error -* `missingAttribute`: Addressed a missing attribute * `missingFunction`: Addressed a missing function * `functionEvaluation`: Error while evaluating a function diff --git a/cesql/cesql_tck/context_attributes_access.yaml b/cesql/cesql_tck/context_attributes_access.yaml index 990a771e0..465c148f2 100644 --- a/cesql/cesql_tck/context_attributes_access.yaml +++ b/cesql/cesql_tck/context_attributes_access.yaml @@ -17,8 +17,7 @@ tests: id: myId source: localhost.localdomain type: myType - result: "" - error: missingAttribute + result: false - name: Access to optional boolean extension expression: mybool eventOverrides: diff --git a/cesql/cesql_tck/subscriptions_api_recreations.yaml b/cesql/cesql_tck/subscriptions_api_recreations.yaml index c56773b64..263f9e7b6 100644 --- a/cesql/cesql_tck/subscriptions_api_recreations.yaml +++ b/cesql/cesql_tck/subscriptions_api_recreations.yaml @@ -17,7 +17,7 @@ tests: myext: "customext" - name: Prefix filter on missing string extension expression: "myext LIKE 'custom%'" - error: missingAttribute + result: false - name: Suffix filter (1) expression: "type like '%.error'" @@ -36,7 +36,7 @@ tests: myext: "customext" - name: Suffix filter on missing string extension expression: "myext LIKE '%ext'" - error: missingAttribute + result: false - name: Exact filter (1) expression: "id = 'myId'" @@ -55,7 +55,7 @@ tests: myext: "customext" - name: Exact filter on missing string extension expression: "myext = 'customext'" - error: missingAttribute + result: false - name: Prefix filter AND Suffix filter (1) expression: "id LIKE 'my%' AND source LIKE '%.ca'" @@ -77,7 +77,7 @@ tests: type: "com.github.error" - name: Prefix AND Suffix filter (4) expression: "type LIKE 'example.%' AND myext LIKE 'custom%'" - error: missingAttribute + result: false eventOverrides: type: "example.event.type" @@ -157,7 +157,7 @@ tests: source: "http://localhost.localdomain" - name: Conjunctive Normal Form (5) expression: "(id = 'myId' OR type LIKE '%.success') AND (id = 'notmyId' OR source LIKE 'https://%' OR type LIKE '%.warning') AND (myext = 'customext')" - error: missingAttribute + result: false eventOverrides: id: "myId" type: "example.event.warning" diff --git a/cesql/spec.md b/cesql/spec.md index 84dfe42b1..d9467df06 100644 --- a/cesql/spec.md +++ b/cesql/spec.md @@ -197,7 +197,8 @@ Unless otherwise specified, every attribute and extension MUST be represented by Through implicit type casting, the user can convert the addressed value instances to _Integer_ and _Boolean_. -When addressing an attribute not included in the input event, an empty _String_ MUST be assumed as its value. +When addressing an attribute not included in the input event, the subexpression referencing the missing attribute MUST evaluate to `false`. +For example, `true AND (missingAttribute = "")` would evaluate to `false` as the subexpression `missingAttribute = ""` would be false. ### 3.3. Errors