Skip to content

Support TopN pushdown for Oracle connector #26566

@jjak0b

Description

@jjak0b

Description

TopN pushdown doesn't work using LIMIT and ORDER BY on Oracle Connector
Trino version: 476

The following query do TopN pushdown :

SELECT a.my_record_id, A.anno
FROM oracle_repo.myschema.PROVA2 a
LIMIT 10

but this one dont .

SELECT a.my_record_id, A.anno
FROM oracle_repo.myschema.PROVA2 a
ORDER BY a.MY_record_id ASC
LIMIT 10

Expected Result:

ORDER BY ... LIMIT TopN pushdown : should be supported on Oracle Connector

Current Result:

                                                                         Query Plan                                                                          
-------------------------------------------------------------------------------------------------------------------------------------------------------------
 Trino version: 476                                                                                                                                          
 Fragment 0 [SINGLE]                                                                                                                                         
     Output layout: [my_record_id, anno]                                                                                                                     
     Output partitioning: SINGLE []                                                                                                                          
     Output[columnNames = [my_record_id, anno]]                                                                                                              
          Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                            
          Estimates: {rows: 10 (340B), cpu: 0, memory: 0B, network: 0B}                                                                                       
          TopN[count = 10, orderBy = [my_record_id ASC NULLS LAST]]                                                                                            
             Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                         
             Estimates: {rows: 10 (340B), cpu: ?, memory: ?, network: ?}                                                                                      
             LocalExchange[partitioning = SINGLE]                                                                                                              
                Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                      
                Estimates: {rows: ? (?), cpu: 0, memory: 0B, network: 0B}                                                                                     
                RemoteSource[sourceFragmentIds = [1]]                                                                                                          
                  Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                   
                                                                                                                                                             
 Fragment 1 [SOURCE]                                                                                                                                         
     Output layout: [my_record_id, anno]                                                                                                                     
     Output partitioning: SINGLE []                                                                                                                          
     TopNPartial[count = 10, orderBy = [my_record_id ASC NULLS LAST]]                                                                                        
          Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                            
          LocalExchange[partitioning = SINGLE]                                                                                                                 
             Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                         
             Estimates: {rows: ? (?), cpu: 0, memory: 0B, network: 0B}                                                                                        
             TopNPartial[count = 10, orderBy = [my_record_id ASC NULLS LAST]]                                                                                  
                Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                      
                LocalExchange[partitioning = ROUND_ROBIN]                                                                                                      
                   Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                   
                   Estimates: {rows: ? (?), cpu: ?, memory: 0B, network: 0B}                                                                                  
                   TopNPartial[count = 10, orderBy = [my_record_id ASC NULLS LAST]]                                                                            
                      Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                                
                      TableScan[table = oracle_repo:myschema.prova2 myschema.PROVA2 columns=[MY_RECORD_ID:decimal(19,0):NUMBER, ANNO:decimal(38,8):NUMBER]] 
                        Layout: [my_record_id:decimal(19,0), anno:decimal(38,8)]                                                                             
                        Estimates: {rows: ? (?), cpu: ?, memory: 0B, network: 0B}                                                                            
                        my_record_id := MY_RECORD_ID:decimal(19,0):NUMBER                                                                                    
                        anno := ANNO:decimal(38,8):NUMBER 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions