1+ import  {  getEnv  }  from  '@cubejs-backend/shared' ; 
12import  {  prepareJsCompiler  }  from  '../../unit/PrepareCompiler' ; 
23import  {  dbRunner  }  from  './PostgresDBRunner' ; 
34import  {  transformResultsForTesseractIfNeeded  }  from  '../../unit/utils' ; 
4- import  {  getEnv  }  from  '@cubejs-backend/shared' ; 
55
66describe ( 'Views Join Order using join maps' ,  ( )  =>  { 
77  jest . setTimeout ( 200000 ) ; 
@@ -14,7 +14,7 @@ view(\`View\`, {
1414  cubes: [ 
1515    { 
1616      join_path: A, 
17-       includes: ['id', 'name', 'd_name'], 
17+       includes: ['id', 'name', 'c_name', ' d_name'], 
1818      prefix: true, 
1919    }, 
2020    { 
@@ -88,7 +88,9 @@ cube('B', {
8888
8989cube('C', { 
9090  sql: \` 
91-     SELECT 3 id, 2 as fk, 1 as fk_a, 'c'::text as "name"\`, 
91+     SELECT 3 id, 2 as fk, 2 as fk_a, 'c1'::text as "name" 
92+     UNION ALL 
93+     SELECT 4 id, 3 as fk, 1 as fk_a, 'c2'::text as "name"\`, 
9294  joins: { 
9395    D: { 
9496      relationship: \`many_to_one\`, 
@@ -159,4 +161,71 @@ cube('D', {
159161      expect ( sql ) . not . toMatch ( / O N   " a " .i d   =   " d " .f k / ) ; 
160162    } ) ; 
161163  } 
164+ 
165+   if  ( getEnv ( 'nativeSqlPlanner' ) )  { 
166+     it ( 'querying A member proxied to non-leaf C' ,  ( )  =>  { 
167+       // TODO: Fix in tesseract 
168+     } ) ; 
169+   }  else  { 
170+     it ( 'querying A member proxied to non-leaf C' ,  async  ( )  =>  { 
171+       const  [ sql ,  _params ]  =  await  dbRunner . runQueryTest ( { 
172+         dimensions : [ 
173+           'View.A_id' , 
174+           'View.A_name' , 
175+           'View.A_c_name' , 
176+         ] , 
177+         timeDimensions : [ ] , 
178+         segments : [ ] , 
179+         filters : [ ] , 
180+         total : true , 
181+       } ,  transformResultsForTesseractIfNeeded ( [ { 
182+         view___a_id : 1 , 
183+         view___a_name : 'a' , 
184+         view___a_c_name : 'c1' , 
185+       } ] ) ,  {  compiler,  joinGraph,  cubeEvaluator } ) ; 
186+ 
187+       expect ( sql ) . toMatch ( / A S   " b " / ) ; 
188+       expect ( sql ) . toMatch ( / A S   " c " / ) ; 
189+       expect ( sql ) . toMatch ( / O N   " a " .i d   =   " b " .f k / ) ; 
190+       expect ( sql ) . toMatch ( / O N   " b " .i d   =   " c " .f k / ) ; 
191+       expect ( sql ) . not . toMatch ( / O N   " c " .i d   =   " d " .f k _ d / ) ; 
192+       expect ( sql ) . not . toMatch ( / A S   " d " / ) ; 
193+       expect ( sql ) . not . toMatch ( / O N   " a " .i d   =   " c " .f k _ a / ) ; 
194+     } ) ; 
195+   } 
196+ 
197+   if  ( getEnv ( 'nativeSqlPlanner' ) )  { 
198+     it ( 'querying A member proxied to non-leaf C' ,  ( )  =>  { 
199+       // TODO: Fix in tesseract 
200+     } ) ; 
201+   }  else  { 
202+     it ( 'querying A member proxied to non-leaf C' ,  async  ( )  =>  { 
203+       const  [ sql ,  _params ]  =  await  dbRunner . runQueryTest ( { 
204+         dimensions : [ 
205+           'View.A_id' , 
206+           'View.A_name' , 
207+           'View.A_c_name' , 
208+           'View.A_d_name' , 
209+         ] , 
210+         timeDimensions : [ ] , 
211+         segments : [ ] , 
212+         filters : [ ] , 
213+         total : true , 
214+       } ,  transformResultsForTesseractIfNeeded ( [ { 
215+         view___a_id : 1 , 
216+         view___a_name : 'a' , 
217+         view___a_c_name : 'c1' , 
218+         view___a_d_name : 'd3' , 
219+       } ] ) ,  {  compiler,  joinGraph,  cubeEvaluator } ) ; 
220+ 
221+       expect ( sql ) . toMatch ( / A S   " b " / ) ; 
222+       expect ( sql ) . toMatch ( / A S   " c " / ) ; 
223+       expect ( sql ) . toMatch ( / A S   " d " / ) ; 
224+       expect ( sql ) . toMatch ( / O N   " a " .i d   =   " b " .f k / ) ; 
225+       expect ( sql ) . toMatch ( / O N   " b " .i d   =   " c " .f k / ) ; 
226+       expect ( sql ) . toMatch ( / O N   " c " .i d   =   " d " .f k _ d / ) ; 
227+       expect ( sql ) . not . toMatch ( / O N   " a " .i d   =   " c " .f k _ a / ) ; 
228+       expect ( sql ) . not . toMatch ( / O N   " a " .i d   =   " d " .f k / ) ; 
229+     } ) ; 
230+   } 
162231} ) ; 
0 commit comments