NestLoopIndexPlanNode

5 views
Skip to first unread message

Michael Alexeev

unread,
Feb 24, 2012, 11:36:16 PM2/24/12
to voltd...@googlegroups.com
Hi All,

Is there a particular reason for join expression (m_predicate) not being set for NestLoopIndexPlanNode or is it an oversight? It does get set for NestedLoopPlanNode though.

The reason for the question is that I need to know whether join happens on partition key or not to be able to decide if it's safe to drop receive/send pair from the execution plan. I know table and can get to the partition column. If predicate is set I can find out if this column is part of the expression.

If this is how it's supposed to be than what is the way around?

Thanks,
Mike

Ariel Weisberg

unread,
Feb 27, 2012, 11:37:15 AM2/27/12
to voltd...@googlegroups.com
Hi,

Looking at the EE code it looks like the NestLoopIndexExecutor uses the predicate from the inlined IndexScanPlanNode?

We seem to call it the post expression in the executor? It is applied once the index scan has determined it is going to return the tuple from the index.

NestLoopExecutor doesn't use an inlined node 
And the join expression is called a predicate

Does this make sense?
Ariel

Michael Alexeev

unread,
Feb 27, 2012, 9:52:15 PM2/27/12
to voltd...@googlegroups.com
Hi Ariel,

On Mon, Feb 27, 2012 at 11:37 AM, Ariel Weisberg <awei...@voltdb.com> wrote:
Hi,

Looking at the EE code it looks like the NestLoopIndexExecutor uses the predicate from the inlined IndexScanPlanNode?

We seem to call it the post expression in the executor? It is applied once the index scan has determined it is going to return the tuple from the index.

NestLoopExecutor doesn't use an inlined node 
And the join expression is called a predicate

Does this make sense?
Ariel

Yes, it does. I have a follow-up question though :). What is the purpose of inlined node?

Mike

Ariel Weisberg

unread,
Feb 27, 2012, 9:59:39 PM2/27/12
to voltd...@googlegroups.com
Hi,

The plan nodes were a way to express an execution plan in Java and C++. Some of them had stuff in common so rather than have redundant fields we had inlined nodes. The "outer" node determines what executor is instantiated in the EE, but part of the configuration may come from one of the inlined nodes. NestLoopIndexExecutor for instance has to scan an index so it has an index scan node to carry all the associated config for an index scan.

It ends up being clear as mud anyways. Straight JSON probably would have been better.

Ariel 
Reply all
Reply to author
Forward
0 new messages