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

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


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 4e9012fd8e4 branch-3.0: [fix](hive) fix block decompressor bug #45289 
(#45377)
4e9012fd8e4 is described below

commit 4e9012fd8e48f1ab080bac275afa22bd7d0b143f
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Dec 14 20:56:50 2024 -0800

    branch-3.0: [fix](hive) fix block decompressor bug #45289 (#45377)
    
    Cherry-picked from #45289
    
    Co-authored-by: Socrates <suyit...@selectdb.com>
---
 be/src/exec/decompressor.cpp | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/be/src/exec/decompressor.cpp b/be/src/exec/decompressor.cpp
index 9365bb00288..5da2e6acbb9 100644
--- a/be/src/exec/decompressor.cpp
+++ b/be/src/exec/decompressor.cpp
@@ -492,15 +492,15 @@ Status Lz4BlockDecompressor::decompress(uint8_t* input, 
size_t input_len, size_t
     auto* output_ptr = output;
 
     while (input_len > 0) {
-        //if faild ,  fall back to large block begin
-        auto* large_block_input_ptr = input_ptr;
-        auto* large_block_output_ptr = output_ptr;
-
         if (input_len < sizeof(uint32_t)) {
-            return Status::InvalidArgument(strings::Substitute(
-                    "fail to do hadoop-lz4 decompress, input_len=$0", 
input_len));
+            *more_input_bytes = sizeof(uint32_t) - input_len;
+            break;
         }
 
+        //if faild, fall back to large block begin
+        auto* large_block_input_ptr = input_ptr;
+        auto* large_block_output_ptr = output_ptr;
+
         uint32_t remaining_decompressed_large_block_len = 
BigEndian::Load32(input_ptr);
 
         input_ptr += sizeof(uint32_t);
@@ -609,15 +609,15 @@ Status SnappyBlockDecompressor::decompress(uint8_t* 
input, size_t input_len,
     auto* output_ptr = output;
 
     while (input_len > 0) {
-        //if faild ,  fall back to large block begin
-        auto* large_block_input_ptr = input_ptr;
-        auto* large_block_output_ptr = output_ptr;
-
         if (input_len < sizeof(uint32_t)) {
-            return Status::InvalidArgument(strings::Substitute(
-                    "fail to do hadoop-snappy decompress, input_len=$0", 
input_len));
+            *more_input_bytes = sizeof(uint32_t) - input_len;
+            break;
         }
 
+        //if faild, fall back to large block begin
+        auto* large_block_input_ptr = input_ptr;
+        auto* large_block_output_ptr = output_ptr;
+
         uint32_t remaining_decompressed_large_block_len = 
BigEndian::Load32(input_ptr);
 
         input_ptr += sizeof(uint32_t);


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

Reply via email to