This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 788abf2d7c3 [fix](iceberg_orc)Fixed the bug that the iceberg reader 
did not perform position delete when reading the orc file without a predicate. 
(#34814)
788abf2d7c3 is described below

commit 788abf2d7c3c7c2d57487a9608e889e7662d5fb2
Author: daidai <2017501...@qq.com>
AuthorDate: Wed May 15 10:49:59 2024 +0800

    [fix](iceberg_orc)Fixed the bug that the iceberg reader did not perform 
position delete when reading the orc file without a predicate. (#34814)
    
    fix this bug:
    Scenario : iceberg table uses orc storage format
    sql : `select * from iceberg_orc;`
    When executing this sql, position delete filter is not performed.
---
 be/src/vec/exec/format/orc/vorc_reader.cpp         |  7 +++
 .../iceberg/iceberg_position_delete.groovy         | 56 ++++++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp 
b/be/src/vec/exec/format/orc/vorc_reader.cpp
index 6909e1b3798..942eba59d08 100644
--- a/be/src/vec/exec/format/orc/vorc_reader.cpp
+++ b/be/src/vec/exec/format/orc/vorc_reader.cpp
@@ -1747,9 +1747,16 @@ Status OrcReader::get_next_block(Block* block, size_t* 
read_rows, bool* eof) {
             }
         } else {
             if (_delete_rows_filter_ptr) {
+                
_execute_filter_position_delete_rowids(*_delete_rows_filter_ptr);
                 RETURN_IF_CATCH_EXCEPTION(Block::filter_block_internal(block, 
columns_to_filter,
                                                                        
(*_delete_rows_filter_ptr)));
+            } else {
+                std::unique_ptr<IColumn::Filter> filter(new 
IColumn::Filter(block->rows(), 1));
+                _execute_filter_position_delete_rowids(*filter);
+                RETURN_IF_CATCH_EXCEPTION(
+                        Block::filter_block_internal(block, columns_to_filter, 
(*filter)));
             }
+
             Block::erase_useless_column(block, column_to_keep);
             static_cast<void>(_convert_dict_cols_to_string_cols(block, 
&batch_vec));
         }
diff --git 
a/regression-test/suites/external_table_p2/iceberg/iceberg_position_delete.groovy
 
b/regression-test/suites/external_table_p2/iceberg/iceberg_position_delete.groovy
index 7774b108da3..8f62aaba50d 100644
--- 
a/regression-test/suites/external_table_p2/iceberg/iceberg_position_delete.groovy
+++ 
b/regression-test/suites/external_table_p2/iceberg/iceberg_position_delete.groovy
@@ -101,6 +101,62 @@ suite("iceberg_position_delete", 
"p2,external,iceberg,external_remote,external_r
         qt_parquet_19 """ select count(*) from iceberg_position_parquet where  
name != 'final entryxxxxxx' ;""" 
         qt_parquet_20 """ select count(*) from iceberg_position_parquet; """ 
 
+
+        List<List<Object>> iceberg_position_orc = sql """ select * from 
iceberg_position_orc ;"""
+        List<List<Object>> iceberg_position_parquet = sql """ select * from 
iceberg_position_parquet;"""
+        List<List<Object>> iceberg_position_gen = sql """ select * from 
iceberg_position_gen_data;"""
+
+        assertTrue(iceberg_position_orc.size() == iceberg_position_gen.size())
+        assertTrue(iceberg_position_orc.size() == 
iceberg_position_parquet.size())
+        assertTrue(iceberg_position_orc.size() == 5632)
+
+
+        List<List<Object>> iceberg_position_orc_1 = sql  """select * from 
iceberg_position_orc where id != 1;"""
+        List<List<Object>> iceberg_position_orc_2 = sql """select * from 
iceberg_position_orc where name != "hello word" ;"""
+        List<List<Object>> iceberg_position_orc_3 = sql """select id from 
iceberg_position_orc where id != 1;"""
+        List<List<Object>> iceberg_position_orc_4 = sql """select name from 
iceberg_position_orc where id != 1;"""
+        List<List<Object>> iceberg_position_orc_5 = sql """select name from 
iceberg_position_orc where name != "hello word" ;"""
+        List<List<Object>> iceberg_position_orc_6 = sql """select id from 
iceberg_position_orc where name != "hello word" ;"""
+        List<List<Object>> iceberg_position_orc_7 = sql """select * from 
iceberg_position_orc where id != 1 and name != "33333";"""
+        assertTrue(iceberg_position_orc_1.size() == 5632)
+        assertTrue(iceberg_position_orc_2.size() == 5632)
+        assertTrue(iceberg_position_orc_3.size() == 5632)
+        assertTrue(iceberg_position_orc_4.size() == 5632)
+        assertTrue(iceberg_position_orc_5.size() == 5632)
+        assertTrue(iceberg_position_orc_6.size() == 5632)
+        assertTrue(iceberg_position_orc_7.size() == 5632)
+
+
+        List<List<Object>> iceberg_position_gen_1 = sql """select * from 
iceberg_position_gen_data where id != 1 and name != "hello";"""
+        assertTrue(iceberg_position_gen_1.size() == 5632)
+
+        List<List<Object>> iceberg_position_gen_2 = sql """select * from 
iceberg_position_gen_data where id != 2;"""
+        assertTrue(iceberg_position_gen_2.size() == 5120)
+        
+        List<List<Object>> iceberg_position_gen_22 = sql """select * from 
iceberg_position_gen_data where id != 5;"""
+        assertTrue(iceberg_position_gen_22.size() == 5632)
+
+        List<List<Object>> iceberg_position_gen_3 = sql """select * from 
iceberg_position_gen_data where name != "hello word" ;"""
+        assertTrue(iceberg_position_gen_3.size() == 5632)
+        
+        List<List<Object>> iceberg_position_gen_4 = sql """select id from 
iceberg_position_gen_data where id != 2;"""
+        assertTrue(iceberg_position_gen_4.size() == 5120)
+        
+        List<List<Object>> iceberg_position_gen_44 = sql """select id from 
iceberg_position_gen_data where id != 5;"""
+        assertTrue(iceberg_position_gen_44.size() == 5632)
+        
+        List<List<Object>> iceberg_position_gen_5 = sql """select name from 
iceberg_position_gen_data where id != 2;"""
+        assertTrue(iceberg_position_gen_5.size() == 5120)
+        
+        List<List<Object>> iceberg_position_gen_55 = sql """select name from 
iceberg_position_gen_data where id != 5;"""
+        assertTrue(iceberg_position_gen_55.size() == 5632)
+        
+        List<List<Object>> iceberg_position_gen_6 = sql """select name from 
iceberg_position_gen_data where name != "hello wordxx" ;"""
+        assertTrue(iceberg_position_gen_6.size() == 5632)
+        
+        List<List<Object>> iceberg_position_gen_7 = sql """select id from 
iceberg_position_gen_data where name != "hello word" ;"""
+        assertTrue(iceberg_position_gen_7.size() == 5632)
+
         sql """drop catalog ${catalog_name}"""
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to