Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
Impala 1.2.1
-
None
-
None
Description
When executing a "insert into parquet_table select * from text_table", DCHECK is hit:
F1206 18:47:52.691009 16628 rle-encoding.h:297] Check failed: result
Here's the stack:
#0 0x00000035d64328a5 in raise () from /lib64/libc.so.6 #1 0x00000035d6434085 in abort () from /lib64/libc.so.6 #2 0x0000000001a80019 in ?? () #3 0x0000000001a7771d in google::LogMessage::Fail() () #4 0x0000000001a7b1a7 in google::LogMessage::SendToLog() () #5 0x0000000001a7a706 in google::LogMessage::Flush() () #6 0x0000000001a7b63d in google::LogMessageFatal::~LogMessageFatal() () #7 0x00000000010f9fa3 in impala::RleEncoder::FlushLiteralRun(bool) () #8 0x00000000010fa6f5 in impala::RleEncoder::FlushBufferedValues(bool) () #9 0x00000000010f9d73 in impala::RleEncoder::Put(unsigned long) () #10 0x00000000010fb84a in impala::HdfsParquetTableWriter::BaseColumnWriter::AppendRow(impala::TupleRow*) () #11 0x00000000010f78d2 in impala::HdfsParquetTableWriter::AppendRowBatch(impala::RowBatch*, std::vector<int, std::allocator<int> > const&, bool*) ()
From the code:
inline void RleEncoder::FlushLiteralRun(bool update_indicator_byte) { if (literal_indicator_byte_ == NULL) { // The literal indicator byte has not been reserved yet, get one now. literal_indicator_byte_ = bit_writer_.GetNextBytePtr(); DCHECK(literal_indicator_byte_ != NULL); } // Write all the buffered values as bit packed literals bool result = true; for (int i = 0; i < num_buffered_values_; ++i) { result &= bit_writer_.PutValue(buffered_values_[i], bit_width_); } DCHECK(result); <-------- This DCHECK is getting hit