[ 
https://issues.apache.org/jira/browse/KYLIN-5331?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

sibing.zhang updated KYLIN-5331:
--------------------------------
    Description: 
The conditions in the query are mutually exclusive: CUSTOMER.C_NATION in 
('INDONESIA') and CUSTOMER.C_NATION in ('KENYA'), the result of the aggregation 
query is empty and return "The current query exceeds the data range of the 
model service.Please add a segment."

*root cause*

When the query is in the select realization and prune segment steps, all 
segments are returned directly in the case of a full build. However, in the 
case of incrementally build, if the filter conditions are mutually exclusive, 
an empty list will be returned, which will cause the subsequent logic to find 
that the segment is not hit, and set the returned result to be empty. The two 
behave inconsistently.

*fix design*

Added property olapContext.storageContext.isFilterCondAlwaysFalse. When 
org.apache.kylin.query.routing.RealizationPruner#pruneSegments judges that the 
filter condition is false, set isFilterCondAlwaysFalse to true. When filling 
sqlResponse, set isFilterCondAlwaysFalse to true and indexType to enumeration 
"Filter Conflict". For the front end, when the indexType is "Filter Conflict", 
no text will be prompted.

!9ba667a7-13a9-4c0d-9c58-a8bde6d9b591.png|width=911,height=377!

  was:
The conditions in the query are mutually exclusive: CUSTOMER.C_NATION in 
('INDONESIA') and CUSTOMER.C_NATION in ('KENYA'), the result of the aggregation 
query is empty and return "The current query exceeds the data range of the 
model service.Please add a segment."

*root cause:*

When the query is in the select realization and prune segment steps, all 
segments are returned directly in the case of a full build. However, in the 
case of incrementally build, if the filter conditions are mutually exclusive, 
an empty list will be returned, which will cause the subsequent logic to find 
that the segment is not hit, and set the returned result to be empty. The two 
behave inconsistently.

*fix design:*

Added property olapContext.storageContext.isFilterCondAlwaysFalse. When 
org.apache.kylin.query.routing.RealizationPruner#pruneSegments judges that the 
filter condition is false, set isFilterCondAlwaysFalse to true. When filling 
sqlResponse, set isFilterCondAlwaysFalse to true and indexType to enumeration 
"Filter Conflict". For the front end, when the indexType is "Filter Conflict", 
no text will be prompted.

!9ba667a7-13a9-4c0d-9c58-a8bde6d9b591.png|width=911,height=377!


> When the where conditions are mutually exclusive, the aggregation query 
> returns "The current query exceeds the data range of the model service. 
> Please add a segment
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: KYLIN-5331
>                 URL: https://issues.apache.org/jira/browse/KYLIN-5331
>             Project: Kylin
>          Issue Type: Bug
>    Affects Versions: 5.0-alpha
>            Reporter: sibing.zhang
>            Priority: Major
>             Fix For: 5.0-alpha
>
>         Attachments: 9ba667a7-13a9-4c0d-9c58-a8bde6d9b591.png
>
>
> The conditions in the query are mutually exclusive: CUSTOMER.C_NATION in 
> ('INDONESIA') and CUSTOMER.C_NATION in ('KENYA'), the result of the 
> aggregation query is empty and return "The current query exceeds the data 
> range of the model service.Please add a segment."
> *root cause*
> When the query is in the select realization and prune segment steps, all 
> segments are returned directly in the case of a full build. However, in the 
> case of incrementally build, if the filter conditions are mutually exclusive, 
> an empty list will be returned, which will cause the subsequent logic to find 
> that the segment is not hit, and set the returned result to be empty. The two 
> behave inconsistently.
> *fix design*
> Added property olapContext.storageContext.isFilterCondAlwaysFalse. When 
> org.apache.kylin.query.routing.RealizationPruner#pruneSegments judges that 
> the filter condition is false, set isFilterCondAlwaysFalse to true. When 
> filling sqlResponse, set isFilterCondAlwaysFalse to true and indexType to 
> enumeration "Filter Conflict". For the front end, when the indexType is 
> "Filter Conflict", no text will be prompted.
> !9ba667a7-13a9-4c0d-9c58-a8bde6d9b591.png|width=911,height=377!



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

Reply via email to