Krutik created FLINK-32899:
------------------------------

             Summary: Can not access inner/nested objects in MATCH_RECOGNIZE 
DFINE clause and in Aggregate function
                 Key: FLINK-32899
                 URL: https://issues.apache.org/jira/browse/FLINK-32899
             Project: Flink
          Issue Type: Bug
          Components: Library / CEP
    Affects Versions: 1.17.1
         Environment: Implemented everything in java maven project on a Windows 
11
            Reporter: Krutik


Note: we are implementing everything in java.

example event

 

 
{code:java}
{
  "config": "conf1",
  "id": 1,
  "action": "login",
  "size": 10,
  "message": {
    "action": "login",
    "size": 10,
    "event": {
       "action": "login", "size": 10,
       "event": {
    }
  }
}{code}
we are tried to run query, it does not works and gives bellow exception
{code:java}
SELECT * FROM Log
MATCH_RECOGNIZE (
  PARTITION BY config
  ORDER BY time_ltz
  MEASURES
    A.id AS aID,
    COUNT(B.id) AS cnt
  AFTER MATCH SKIP PAST LAST ROW
  PATTERN (A B+ C)
  DEFINE
    A AS A.message.event.action = 'login'
    B AS B.message.event.action = 'data' AND SUM(B.message.event.size) >= 20"
);{code}
 
{code:java}
Exception in thread "main" org.apache.flink.table.api.ValidationException: SQL 
validation failed. From line 11, column 22 to line 11, column 26: Table 'event' 
not found
    at 
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:187)
    at 
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:113)
    at 
org.apache.flink.table.planner.operations.SqlToOperationConverter.convert(SqlToOperationConverter.java:281)
    at 
org.apache.flink.table.planner.delegation.ParserImpl.parse(ParserImpl.java:106)
    at 
org.apache.flink.table.api.internal.TableEnvironmentImpl.sqlQuery(TableEnvironmentImpl.java:738)
    at org.abs.security.StaticRuleEvaluator.main(StaticRuleEvaluator.java:151)
Caused by: org.apache.calcite.runtime.CalciteContextException: From line 11, 
column 22 to line 11, column 26: Table 'event' not found
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method)
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at 
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:505)
    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:932)
    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917)
    at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5163)
    at 
org.apache.calcite.sql.validate.DelegatingScope.fullyQualify(DelegatingScope.java:344)
  {code}
The problem here is that if I try to run the same query replacing 
*A.message.event.action* with *A.message.action* without Aggregate function it 
works with Aggregate function it does not works and if I replace 
*A.message.event.action* with *A.action* with Aggregate function it works fine.

 

without Aggregate function:
 * A.action (/)
 * A.message.action(/)
 * A.message.event.action (x)

with Aggregate function:
 * A.action (/)
 * A.message.action (x)
 * A.message.event.action (x)

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to