[ 
https://issues.apache.org/jira/browse/PHOENIX-2198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14730112#comment-14730112
 ] 

Maryann Xue commented on PHOENIX-2198:
--------------------------------------

In terms of performance, the number of iterations is fixed, but we could 
probably combine the network requests or even HBase scans together for several 
iterations of the inner relation, but this would be a really case-by-case 
optimization depending on what type of QueryPlan the inner relation is. 
Basically it can only be a simple ScanPlan, and if it turns out that the 
dynamic filter compiles into an HBase Get, we can batch these Get into one 
network request. But if the inner plan is a range scan or a full scan with a 
filter, it becomes much trickier, we might have to combine the filter (requires 
some compile-time work) with OR logic and push them into one scan (otherwise it 
wouldn't make much sense), and then after the scan returns, we'll have to 
figure out on the client side which results maps to which correlate variable 
value, which is like executing the inner query again over a much smaller result 
set.
Anyway, I think we'll first just implement the literal semantics and make sure 
things all work well with this basic version. And later on, we can think of 
optimizing CorrelatePlan bit by bit.

Yes, VIEWs should just work fine. In Calcite VIEWs are replaced with its 
definition algebra in the real query, so the filter of the VIEW will be 
automatically added to the relational expression tree, and all those rules 
dealing with Filter (filter-combine-rule, filter-push-down-to-scan-rule, etc) 
will kick in to make this work. But good reminder, James! I'll add a test on 
the calcite branch to verify.
Global index hint doesn't work in Phoenix/Calcite integration yet. It depends 
on CALCITE-772. But on the Phoenix side, it's a more general question of 
migrating our child/parent join optimization onto calcite branch, which is 
logged as PHOENIX-1785. And this dynamic filter added in BaseQueryPlan is just 
a good facility that can be made use of later on for this issue.

bq. Sometimes this can happen if the size of the row changes, as you'll send up 
with more guideposts than before.
Can you explain a little more? How will the size of the row change in this test 
case? BTW, I can't repro any more now.

> Support correlate variable
> --------------------------
>
>                 Key: PHOENIX-2198
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2198
>             Project: Phoenix
>          Issue Type: New Feature
>            Reporter: Maryann Xue
>            Assignee: Maryann Xue
>         Attachments: PHOENIX-2198.patch
>
>   Original Estimate: 240h
>  Remaining Estimate: 240h
>
> This will enable the outer query to set a correlate variable as a parameter 
> to restart the inner query for each iteration.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to