db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d..@apache.org
Subject svn commit: r421932 [4/5] - in /db/derby/code/trunk/java: client/org/apache/derby/client/am/ engine/org/apache/derby/iapi/types/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ ...
Date Fri, 14 Jul 2006 16:04:05 GMT
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out?rev=421932&r1=421931&r2=421932&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out Fri Jul 14 09:04:03 2006
@@ -18,160 +18,160 @@
 ij> INSERT INTO TT VALUES (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');
 3 rows inserted/updated/deleted
 ij> select * from t left outer join s on (b = e);
-A          |B            |C    |D          |E            |F    
----------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    
-3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    
+-------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    
+3          |3.000       |3    |3          |3.000       |3    
 ij> select a, e, f, a+e as "A+E" from t left outer join s on (b = e);
-A          |E            |F    |A+E              
--------------------------------------------------
-1          |NULL         |NULL |NULL             
-2          |2.000        |2    |4.000            
-3          |3.000        |3    |6.000            
+A          |E           |F    |A+E              
+------------------------------------------------
+1          |NULL        |NULL |NULL             
+2          |2.000       |2    |4.000            
+3          |3.000       |3    |6.000            
 ij> select * from t right outer join s on (b = e);
-A          |B            |C    |D          |E            |F    
----------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    
-3          |3.000        |3    |3          |3.000        |3    
-NULL       |NULL         |NULL |4          |4.000        |4    
+A          |B           |C    |D          |E           |F    
+-------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    
+3          |3.000       |3    |3          |3.000       |3    
+NULL       |NULL        |NULL |4          |4.000       |4    
 ij> select a, e, f, a+e as "A+E" from t right outer join s on (b = e);
-A          |E            |F    |A+E              
--------------------------------------------------
-2          |2.000        |2    |4.000            
-3          |3.000        |3    |6.000            
-NULL       |4.000        |4    |NULL             
+A          |E           |F    |A+E              
+------------------------------------------------
+2          |2.000       |2    |4.000            
+3          |3.000       |3    |6.000            
+NULL       |4.000       |4    |NULL             
 ij> select a, e, f, a+e as "A+E" from t left outer join s on (b = e) where d > 0;
-A          |E            |F    |A+E              
--------------------------------------------------
-2          |2.000        |2    |4.000            
-3          |3.000        |3    |6.000            
+A          |E           |F    |A+E              
+------------------------------------------------
+2          |2.000       |2    |4.000            
+3          |3.000       |3    |6.000            
 ij> select a, e, f, a+e as "A+E" from t right outer join s on (b = e) where d > 0;
-A          |E            |F    |A+E              
--------------------------------------------------
-2          |2.000        |2    |4.000            
-3          |3.000        |3    |6.000            
-NULL       |4.000        |4    |NULL             
+A          |E           |F    |A+E              
+------------------------------------------------
+2          |2.000       |2    |4.000            
+3          |3.000       |3    |6.000            
+NULL       |4.000       |4    |NULL             
 ij> -- LOJ and LOJ
 select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i);
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-1          |NULL         |NULL |NULL             |NULL       
-2          |2.000        |2    |4.000            |NULL       
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+1          |NULL        |NULL |NULL             |NULL       
+2          |2.000       |2    |4.000            |NULL       
+3          |3.000       |3    |6.000            |3          
 ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where a>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-2          |2.000        |2    |4.000            |NULL       
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+2          |2.000       |2    |4.000            |NULL       
+3          |3.000       |3    |6.000            |3          
 ij> select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where d>1;
-A          |D          |E            |A+E              |G          
--------------------------------------------------------------------
-2          |2          |2.000        |4.000            |NULL       
-3          |3          |3.000        |6.000            |3          
+A          |D          |E           |A+E              |G          
+------------------------------------------------------------------
+2          |2          |2.000       |4.000            |NULL       
+3          |3          |3.000       |6.000            |3          
 ij> select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where h>1;
-A          |D          |E            |A+E              |G          
--------------------------------------------------------------------
-3          |3          |3.000        |6.000            |3          
+A          |D          |E           |A+E              |G          
+------------------------------------------------------------------
+3          |3          |3.000       |6.000            |3          
 ij> -- LOJ and ROJ
 select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i);
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |NULL         |NULL |NULL             |4          
-NULL       |NULL         |NULL |NULL             |5          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |NULL        |NULL |NULL             |4          
+NULL       |NULL        |NULL |NULL             |5          
 ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where a>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
 ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where d>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
 ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where h>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |NULL         |NULL |NULL             |4          
-NULL       |NULL         |NULL |NULL             |5          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |NULL        |NULL |NULL             |4          
+NULL       |NULL        |NULL |NULL             |5          
 ij> -- ROJ and ROJ
 select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i);
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
-NULL       |NULL         |NULL |NULL             |5          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
+NULL       |NULL        |NULL |NULL             |5          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where a>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where d>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where h>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
-NULL       |NULL         |NULL |NULL             |5          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
+NULL       |NULL        |NULL |NULL             |5          
 ij> -- ROJ and LOJ
 select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i);
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-2          |2.000        |2    |4.000            |NULL       
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+2          |2.000       |2    |4.000            |NULL       
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where a>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-2          |2.000        |2    |4.000            |NULL       
-3          |3.000        |3    |6.000            |3          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+2          |2.000       |2    |4.000            |NULL       
+3          |3.000       |3    |6.000            |3          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where d>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-2          |2.000        |2    |4.000            |NULL       
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+2          |2.000       |2    |4.000            |NULL       
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
 ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where h>1;
-A          |E            |F    |A+E              |G          
--------------------------------------------------------------
-3          |3.000        |3    |6.000            |3          
-NULL       |4.000        |4    |NULL             |4          
+A          |E           |F    |A+E              |G          
+------------------------------------------------------------
+3          |3.000       |3    |6.000            |3          
+NULL       |4.000       |4    |NULL             |4          
 ij> -- NO LOJ reordering
 select * from (t left outer join s on (b = e)) left outer join r on (f = i) where a > 0;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from (t left outer join s on (b = e)) inner join r on (f = i);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from (t left outer join s on (b = e)) inner join r on (f = i) where a > 0;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from (t inner join s on (b = e)) inner join r on (f = i) where a > 0;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from (t inner join s on (b = e)) left outer join r on (f = i) where a > 0;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t, s left outer join r on (d = g) where a = e;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join s on (b = e), r where a = g;
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> -- bug 5658
 -- In DB2 UDB, any column referenced in an expression of the 
 -- join-condition must be a column of one of the operand tables of 
@@ -183,153 +183,153 @@
 create view jv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t, s where b = e);
 0 rows inserted/updated/deleted
 ij> select * from jv left outer join r on (fv = i);
-FV   |EV           |DV         |CV   |BV           |AV         |G          |H            |I    
------------------------------------------------------------------------------------------------
-2    |2.000        |2          |2    |2.000        |2          |NULL       |NULL         |NULL 
-3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    
+FV   |EV          |DV         |CV   |BV          |AV         |G          |H           |I    
+--------------------------------------------------------------------------------------------
+2    |2.000       |2          |2    |2.000       |2          |NULL       |NULL        |NULL 
+3    |3.000       |3          |3    |3.000       |3          |3          |3.000       |3    
 ij> select * from r left outer join jv on (fv = i);
-G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
-4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
-5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+G          |H           |I    |FV   |EV          |DV         |CV   |BV          |AV         
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3    |3.000       |3          |3    |3.000       |3          
+4          |4.000       |4    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
+5          |5.000       |5    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
 ij> -- a view of LOJ
 create view lojv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t left outer join s on b = e);
 0 rows inserted/updated/deleted
 ij> select * from r left outer join lojv on (fv = i);
-G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
-4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
-5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+G          |H           |I    |FV   |EV          |DV         |CV   |BV          |AV         
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3    |3.000       |3          |3    |3.000       |3          
+4          |4.000       |4    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
+5          |5.000       |5    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
 ij> select * from r right outer join lojv on (fv = i);
-G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
------------------------------------------------------------------------------------------------
-NULL       |NULL         |NULL |NULL |NULL         |NULL       |1    |1.000        |1          
-NULL       |NULL         |NULL |2    |2.000        |2          |2    |2.000        |2          
-3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+G          |H           |I    |FV   |EV          |DV         |CV   |BV          |AV         
+--------------------------------------------------------------------------------------------
+NULL       |NULL        |NULL |NULL |NULL        |NULL       |1    |1.000       |1          
+NULL       |NULL        |NULL |2    |2.000       |2          |2    |2.000       |2          
+3          |3.000       |3    |3    |3.000       |3          |3    |3.000       |3          
 ij> -- a view on top of a LOJ view
 create view vv as (select * from lojv);
 0 rows inserted/updated/deleted
 ij> select * from r left outer join vv on (fv = i);
-G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
-4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
-5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+G          |H           |I    |FV   |EV          |DV         |CV   |BV          |AV         
+--------------------------------------------------------------------------------------------
+3          |3.000       |3    |3    |3.000       |3          |3    |3.000       |3          
+4          |4.000       |4    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
+5          |5.000       |5    |NULL |NULL        |NULL       |NULL |NULL        |NULL       
 ij> select * from r right outer join vv on (fv = i);
-G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
------------------------------------------------------------------------------------------------
-NULL       |NULL         |NULL |NULL |NULL         |NULL       |1    |1.000        |1          
-NULL       |NULL         |NULL |2    |2.000        |2          |2    |2.000        |2          
-3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+G          |H           |I    |FV   |EV          |DV         |CV   |BV          |AV         
+--------------------------------------------------------------------------------------------
+NULL       |NULL        |NULL |NULL |NULL        |NULL       |1    |1.000       |1          
+NULL       |NULL        |NULL |2    |2.000       |2          |2    |2.000       |2          
+3          |3.000       |3    |3    |3.000       |3          |3    |3.000       |3          
 ij> -- check for ON predicate for LOJ reordering: no reordering
 select * from t left outer join (s left outer join r on (f = i)) on (b = e and a > b);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-3          |3.000        |3    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+3          |3.000       |3    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from t left outer join (s left outer join r on (f = i)) on (b = e and a = b);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join (s left outer join r on (f = i)) on (b = e and 1 = 1);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join (s left outer join r on (f = i)) on (b > e);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+3          |3.000       |3    |2          |2.000       |2    |NULL       |NULL        |NULL 
 ij> select * from t left outer join (s left outer join r on (f = i)) on (a = a);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
-1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
-1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-2          |2.000        |2    |3          |3.000        |3    |3          |3.000        |3    
-2          |2.000        |2    |4          |4.000        |4    |4          |4.000        |4    
-3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-3          |3.000        |3    |4          |4.000        |4    |4          |4.000        |4    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |2          |2.000       |2    |NULL       |NULL        |NULL 
+1          |1.000       |1    |3          |3.000       |3    |3          |3.000       |3    
+1          |1.000       |1    |4          |4.000       |4    |4          |4.000       |4    
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+2          |2.000       |2    |3          |3.000       |3    |3          |3.000       |3    
+2          |2.000       |2    |4          |4.000       |4    |4          |4.000       |4    
+3          |3.000       |3    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+3          |3.000       |3    |4          |4.000       |4    |4          |4.000       |4    
 ij> select * from t left outer join (s left outer join r on (f = i)) on (a = 1);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
-1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
-1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
-2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-3          |3.000        |3    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |2          |2.000       |2    |NULL       |NULL        |NULL 
+1          |1.000       |1    |3          |3.000       |3    |3          |3.000       |3    
+1          |1.000       |1    |4          |4.000       |4    |4          |4.000       |4    
+2          |2.000       |2    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+3          |3.000       |3    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from t left outer join (s left outer join r on (f = i)) on (1 = 1);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
-1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
-1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-2          |2.000        |2    |3          |3.000        |3    |3          |3.000        |3    
-2          |2.000        |2    |4          |4.000        |4    |4          |4.000        |4    
-3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-3          |3.000        |3    |4          |4.000        |4    |4          |4.000        |4    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |2          |2.000       |2    |NULL       |NULL        |NULL 
+1          |1.000       |1    |3          |3.000       |3    |3          |3.000       |3    
+1          |1.000       |1    |4          |4.000       |4    |4          |4.000       |4    
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+2          |2.000       |2    |3          |3.000       |3    |3          |3.000       |3    
+2          |2.000       |2    |4          |4.000       |4    |4          |4.000       |4    
+3          |3.000       |3    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+3          |3.000       |3    |4          |4.000       |4    |4          |4.000       |4    
 ij> -- check for ON predicate for LOJ reordering: reordering is done
 select * from t left outer join (s left outer join r on (f = i)) on (a = d and b = e and c = f);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join (s left outer join r on (f = i)) on ((a = d and b = e) and c = f);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join (s left outer join r on (f = i)) on (a = d and (b = e and c = f));
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t left outer join (s left outer join r on (f = i)) on (not(a <> d or b <> e or c <> f));
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> -- check for LOJ reorder with subquery
 select * from t left outer join (s left outer join r on (f = i)) on (a = d) where a in (select j from tt);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> -- LOJ involving the same table
 select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.a=t2.a);
-A          |B            |C    |A          |B            |C    |A          |B            |C    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |A          |B           |C    |A          |B           |C    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |1          |1.000       |1    
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.b=t2.b);
-A          |B            |C    |A          |B            |C    |A          |B            |C    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |A          |B           |C    |A          |B           |C    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |1          |1.000       |1    
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.b)) on (t1.a=t2.b);
-A          |B            |C    |A          |B            |C    |A          |B            |C    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |A          |B           |C    |A          |B           |C    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |1          |1.000       |1    
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> -- comparing columns of different types.
 select t.a, s.d, r.g from t left outer join (s left outer join r on (e=g)) on (b=d);
 A          |D          |G          
@@ -345,11 +345,11 @@
 3          
 ij> -- these seem to work
 select * from t left outer join (s left outer join r on (e=g)) on (b=d);
-A          |B            |C    |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+A          |B           |C    |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
 A          
 -----------
@@ -357,71 +357,71 @@
 2          
 3          
 ij> select s.f, s.e, s.d, t.c, t.b, t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
-F    |E            |D          |C    |B            |A          
----------------------------------------------------------------
-NULL |NULL         |NULL       |1    |1.000        |1          
-2    |2.000        |2          |2    |2.000        |2          
-3    |3.000        |3          |3    |3.000        |3          
+F    |E           |D          |C    |B           |A          
+-------------------------------------------------------------
+NULL |NULL        |NULL       |1    |1.000       |1          
+2    |2.000       |2          |2    |2.000       |2          
+3    |3.000       |3          |3    |3.000       |3          
 ij> -- need to test more on changes deep inside...
 create view loj (a, b, c, d, e, f, g, h, i, ae) as (select a, b, c, d, e, f, g, h, i, a+e as "A+E" from t left outer join (s left outer join r on (f = i)) on (b = e));
 0 rows inserted/updated/deleted
 ij> select * from loj;
-A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
------------------------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
-2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+A          |B           |C    |D          |E           |F    |G          |H           |I    |AE               
+--------------------------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL             
+2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL |4.000            
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |6.000            
 ij> select * from t left outer join loj on (t.a=loj.a);
-A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
--------------------------------------------------------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+A          |B           |C    |A          |B           |C    |D          |E           |F    |G          |H           |I    |AE               
+---------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL             
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL |4.000            
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |6.000            
 ij> select * from t left outer join loj on (t.a=loj.d);
-A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
--------------------------------------------------------------------------------------------------------------------------------------------------
-1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+A          |B           |C    |A          |B           |C    |D          |E           |F    |G          |H           |I    |AE               
+---------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL             
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL |4.000            
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |6.000            
 ij> select * from t right outer join loj on (t.a=loj.a);
-A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
--------------------------------------------------------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+A          |B           |C    |A          |B           |C    |D          |E           |F    |G          |H           |I    |AE               
+---------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL             
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL |4.000            
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |6.000            
 ij> select * from t inner join loj on (t.a=loj.a);
-A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
--------------------------------------------------------------------------------------------------------------------------------------------------
-1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+A          |B           |C    |A          |B           |C    |D          |E           |F    |G          |H           |I    |AE               
+---------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000       |1    |1          |1.000       |1    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL             
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL |4.000            
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |6.000            
 ij> -- 4 level deep
 -- b=e will be pushed first, one level down
 -- j=a will then be pushed next, 2 levels down (after b=e pushed)
 select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a);
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=d);
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> -- TT LOJ (T LOJ (S LOJ R))) becomes TT LOJ ((T LOJ S) LOJ R)
 select 1 from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=r.g);
 1          
@@ -452,31 +452,31 @@
 1          
 ij> -- LOJ w/ left-deep LOJ: LOJ will be pushed twice
 select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where j > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where b > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where e > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where g > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select j+1, k+2, L||'s', a+10, b+10, C||'t', d+20, e+20, f||'u', g+30, h+30, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
 1          |2                |3     |4          |5                |6     |7          |8                |9     |10         |11               |12    
 ---------------------------------------------------------------------------------------------------------------------------------------------------
@@ -484,79 +484,79 @@
 4          |5.000            |3s    |13         |13.000           |3t    |23         |23.000           |3u    |33         |33.000           |3v    
 5          |6.000            |4s    |NULL       |NULL             |NULL  |NULL       |NULL             |NULL  |NULL       |NULL             |NULL  
 ij> select j, j+1, k, k+2, L, L||'s' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
-J          |2          |K            |4                |L    |6     
---------------------------------------------------------------------
-2          |3          |2.000        |4.000            |2    |2s    
-3          |4          |3.000        |5.000            |3    |3s    
-4          |5          |4.000        |6.000            |4    |4s    
+J          |2          |K           |4                |L    |6     
+-------------------------------------------------------------------
+2          |3          |2.000       |4.000            |2    |2s    
+3          |4          |3.000       |5.000            |3    |3s    
+4          |5          |4.000       |6.000            |4    |4s    
 ij> select a, a+10, b, b+10, C, C||'t' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
-A          |2          |B            |4                |C    |6     
---------------------------------------------------------------------
-2          |12         |2.000        |12.000           |2    |2t    
-3          |13         |3.000        |13.000           |3    |3t    
-NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+A          |2          |B           |4                |C    |6     
+-------------------------------------------------------------------
+2          |12         |2.000       |12.000           |2    |2t    
+3          |13         |3.000       |13.000           |3    |3t    
+NULL       |NULL       |NULL        |NULL             |NULL |NULL  
 ij> select d, d+20, e, e+20, f, f||'u' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
-D          |2          |E            |4                |F    |6     
---------------------------------------------------------------------
-2          |22         |2.000        |22.000           |2    |2u    
-3          |23         |3.000        |23.000           |3    |3u    
-NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+D          |2          |E           |4                |F    |6     
+-------------------------------------------------------------------
+2          |22         |2.000       |22.000           |2    |2u    
+3          |23         |3.000       |23.000           |3    |3u    
+NULL       |NULL       |NULL        |NULL             |NULL |NULL  
 ij> select g, g+30, h, h+30, i, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
-G          |2          |H            |4                |I    |6     
---------------------------------------------------------------------
-NULL       |NULL       |NULL         |NULL             |NULL |NULL  
-3          |33         |3.000        |33.000           |3    |3v    
-NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+G          |2          |H           |4                |I    |6     
+-------------------------------------------------------------------
+NULL       |NULL       |NULL        |NULL             |NULL |NULL  
+3          |33         |3.000       |33.000           |3    |3v    
+NULL       |NULL       |NULL        |NULL             |NULL |NULL  
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d);
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where j > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where b > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where e > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |2          |2.000       |2    |2          |2.000       |2    |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where g > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g);
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where j > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
-4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2          |2.000       |2    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
+4          |4.000       |4    |NULL       |NULL        |NULL |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where b > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where e > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where g > 0;
-J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+J          |K           |L    |A          |B           |C    |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    |3          |3.000       |3    
 ij> --
 -- Create views of union, regular joins, subquery, group by, having clause,
 -- and use the view in the LOJ operands and yet the LOJ reordering is applicable.
@@ -580,111 +580,111 @@
 ij> -- All these test cases need table references to determine if the join condition is proper for LOJ
 -- reordering: LHS = RHS
 select * from v1 left outer join (s left outer join r on (f = i)) on (d=v1.av);
-FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-NULL |NULL         |NULL       |1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+FV   |EV          |DV         |CV   |BV          |AV         |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+NULL |NULL        |NULL       |1    |1.000       |1          |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2    |2.000       |2          |2    |2.000       |2          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |3          |3    |3.000       |3          |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from v2 left outer join (s left outer join r on (f = i)) on (d=v2.av);
-FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+FV   |EV          |DV         |CV   |BV          |AV         |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2    |2.000       |2          |2    |2.000       |2          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |3          |3    |3.000       |3          |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from v3 left outer join (s left outer join r on (f = i)) on (d=v3.av);
-FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
-4    |4.000        |4          |NULL |NULL         |NULL       |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+FV   |EV          |DV         |CV   |BV          |AV         |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2    |2.000       |2          |2    |2.000       |2          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |3          |3    |3.000       |3          |3          |3.000       |3    |3          |3.000       |3    
+4    |4.000       |4          |NULL |NULL        |NULL       |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
 ij> select * from v4 left outer join (s left outer join r on (f = i)) on (d=v4.av);
-FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
--------------------------------------------------------------------------------------------------------------------------------
-2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+FV   |EV          |DV         |CV   |BV          |AV         |D          |E           |F    |G          |H           |I    
+---------------------------------------------------------------------------------------------------------------------------
+2    |2.000       |2          |2    |2.000       |2          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |3          |3    |3.000       |3          |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from v5 left outer join (s left outer join r on (f = i)) on (e=v5.bv);
-CV   |BV           |CNT        |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2    |2.000        |1          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |1          |3          |3.000        |3    |3          |3.000        |3    
+CV   |BV          |CNT        |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1    |1.000       |1          |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2    |2.000       |1          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |1          |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from v6 left outer join (s left outer join r on (f = i)) on (e=v6.bv);
-CV   |BV           |CNT        |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
-2    |2.000        |1          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |1          |3          |3.000        |3    |3          |3.000        |3    
+CV   |BV          |CNT        |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+1    |1.000       |1          |NULL       |NULL        |NULL |NULL       |NULL        |NULL 
+2    |2.000       |1          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |1          |3          |3.000       |3    |3          |3.000       |3    
 ij> select * from v7 left outer join (s left outer join r on (f = i)) on (e=v7.bv);
-CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
------------------------------------------------------------------------------------------------
-2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
-3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+CV   |BV          |AV         |D          |E           |F    |G          |H           |I    
+--------------------------------------------------------------------------------------------
+2    |2.000       |2          |2          |2.000       |2    |NULL       |NULL        |NULL 
+3    |3.000       |3          |3          |3.000       |3    |3          |3.000       |3    

[... 2843 lines stripped ...]


Mime
View raw message