Forum: VoltDB Architecture

Post: Have trouble to understand the PlanNodeList

Have trouble to understand the PlanNodeList
guotong1988
Jun 9, 2015
5758

Wish that someone could help me to explain the meaning of the words in the box in detail.
Thank you very much!!


If you can't see it clearly I write it here:

I run TestJoinOrder.java,
It goes to PlannerTestAideDeCamp.java's 209 line.
The value of the 'nodeLists' is :

[EXECUTE LIST: 3 nodes //means the 3 line below
[0] RECEIVE[3]
[1] PROJECTION[2]
[2] SEND[1] //???
SEND[1] //???
,
EXECUTE LIST: 4 nodes //means the 4 line below
[0] SEQSCAN[6] //??
[1] SEQSCAN[7]
[2] NESTLOOP[5] //??
[3] SEND[4]
SEND[4]]
guotong1988
Jun 9, 2015
another example:

the sql is
UPDATE R1 SET C = 1 WHERE C = 0

the plan is :

[EXECUTE LIST: 3 nodes
[0] RECEIVE[3]
[1] LIMIT[2]
[2] SEND[1]
SEND[1], EXECUTE LIST: 3 nodes
[0] SEQSCAN[6]
[1] UPDATE[5]
[2] SEND[4]
SEND[4]]
xin
Jun 11, 2015
That's the plan node tree of a query, representating the query internal execution logic. You can see the corresponding plan nodes java class in package: package org.voltdb.plannodes.

The more readable of the query plan can be found using EXPLAIN or EXPLAINPROC, documents can be found at: http://docs.voltdb.com/UsingVoltDB/sysprocexplain.php

Xin
guotong1988
Jun 15, 2015
Thank you Xin !
But I also don't know the meaning of these two sentences:


RECEIVE FROM ALL PARTITIONS
SEND PARTITION RESULTS TO COORDINATOR





Here is the SQL on sqlcmd:


13> explain update abc set id=2  where id =1 ;
EXECUTION_PLAN                 
-------------------------------
RETURN RESULTS TO STORED PROCEDURE
 LIMIT 1
  RECEIVE FROM ALL PARTITIONS
   SEND PARTITION RESULTS TO COORDINATOR
    UPDATE
     SEQUENTIAL SCAN of "ABC"
      filter by (column#0 = ?1)


(Returned 1 rows in 0.01s)
14> 
guotong1988
Jun 15, 2015
Hi I get some info from PlanNodeType.java

    
    // Join Nodes
    //
    NESTLOOP        (20, NestLoopPlanNode.class),
    NESTLOOPINDEX   (21, NestLoopIndexPlanNode.class),
xin
Jun 15, 2015
SEND RECEIVE are the operations to send and receive data in the cluster from different sites.

The children nodes under SEND or RECEIVE are the operation they need to process with table data.