doris icon indicating copy to clipboard operation
doris copied to clipboard

[Bug] Falied to execute query due to type checking

Open fornaix opened this issue 1 year ago • 0 comments

Search before asking

  • [X] I had searched in the issues and found no similar issues.

Version

2.0.2-rc05

What's Wrong?

When we join two tables, an exception is thrown by type checking during predicate pushdown

Failed to execute sql: java.sql.SQLException: (conn=5692) errCode = 2, detailMessage = (10.218.23.57)[CANCELLED][INTERNAL_ERROR]PrimitiveType 6 meet invalid input value size 4, expect size 8
0. /root/doris-code/doris-2.0.2-rc05/be/src/common/stack_trace.cpp:302: StackTrace::tryCapture() @ 0x000000000ba74a47 in /data/apache-doris-vision-test/be/lib/doris_be
1. /root/doris-code/doris-2.0.2-rc05/be/src/common/stack_trace.h:0: doris::get_stack_trace[abi:cxx11]() @ 0x000000000ba72fdd in /data/apache-doris-vision-test/be/lib/doris_be
2. /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:173: doris::Status doris::Status::Error<true, doris::PrimitiveType, unsigned long&, unsigned long>(int, std::basic_string_view<char, std::char_traits<char> >, doris::PrimitiveType&&, unsigned long&, unsigned long&&) @ 0x000000000f272b24 in /data/apache-doris-vision-test/be/lib/doris_be
3. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:367: doris::Status doris::vectorized::VScanNode::_normalize_in_and_eq_predicate<(doris::PrimitiveType)6>(doris::vectorized::VExpr*, doris::vectorized::VExprContext*, doris::SlotDescriptor*, doris::ColumnValueRange<(doris::PrimitiveType)6>&, doris::vectorized::VScanNode::PushDownType*) @ 0x000000000f279d38 in /data/apache-doris-vision-test/be/lib/doris_be
4. /root/doris-code/doris-2.0.2-rc05/be/src/vec/exec/scan/vscan_node.cpp:504: std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(doris::vectorized::VScanNode::_normalize_predicate(std::shared_ptr<doris::vectorized::VExpr> const&, doris::vectorized::VExprContext*, std::shared_ptr<doris::vectorized::VExpr>&)::$_1&&, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::PrimitiveType)5>, doris::ColumnValueRange<(doris::PrimitiveType)6>, doris::ColumnValueRange<(doris::PrimitiveType)7>, doris::ColumnValueRange<(doris::PrimitiveType)15>, doris::ColumnValueRange<(doris::PrimitiveType)10>, doris::ColumnValueRange<(doris::PrimitiveType)23>, doris::ColumnValueRange<(doris::PrimitiveType)11>, doris::ColumnValueRange<(doris::PrimitiveType)25>, doris::ColumnValueRange<(doris::PrimitiveType)12>, doris::ColumnValueRange<(doris::PrimitiveType)26>, doris::ColumnValueRange<(doris::PrimitiveType)20>, doris::ColumnValueRange<(doris::PrimitiveType)2>, doris::ColumnValueRange<(doris::PrimitiveType)19>, doris::ColumnValueRange<(doris::PrimitiveType)28>, doris::ColumnValueRange<(doris::PrimitiveType)29>, doris::ColumnValueRange<(doris::PrimitiveType)30> >&)>, std::integer_sequence<unsigned long, 3ul> >::__visit_invoke(doris::vectorized::VScanNode::_normalize_predicate(std::shared_ptr<doris::vectorized::VExpr> const&, doris::vectorized::VExprContext*, std::shared_ptr<doris::vectorized::VExpr>&)::$_1&&, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::PrimitiveType)5>, doris::ColumnValueRange<(doris::PrimitiveType)6>, doris::ColumnValueRange<(doris::PrimitiveType)7>, doris::ColumnValueRange<(doris::PrimitiveType)15>, doris::ColumnValueRange<(doris::PrimitiveType)10>, doris::ColumnValueRange<(doris::PrimitiveType)23>, doris::ColumnValueRange<(doris::PrimitiveType)11>, doris::ColumnValueRange<(doris::PrimitiveType)25>, doris::ColumnValueRange<(doris::PrimitiveType)12>, doris::ColumnValueRange<(doris::PrimitiveType)26>, doris::ColumnValueRange<(doris::PrimitiveType)20>, doris::ColumnValueRange<(doris::PrimitiveType)2>, doris::ColumnValueRange<(doris::PrimitiveType)19>, doris::ColumnValueRange<(doris::PrimitiveType)28>, doris::ColumnValueRange<(doris::PrimitiveType)29>, doris::ColumnValueRange<(doris::PrimitiveType)30> >&) @ 0x000000000f252d03 in /data/apache-doris-vision-test/be/lib/doris_be
5. /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/tuple:180: doris::vectorized::VScanNode::_normalize_predicate(std::shared_ptr<doris::vectorized::VExpr> const&, doris::vectorized::VExprContext*, std::shared_ptr<doris::vectorized::VExpr>&) @ 0x000000000f24e972 in /data/apache-doris-vision-test/be/lib/doris_be
6. /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:701: doris::vectorized::VScanNode::_normalize_conjuncts() @ 0x000000000f24d59b in /data/apache-doris-vision-test/be/lib/doris_be
7. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:432: doris::vectorized::NewOlapScanNode::_process_conjuncts() @ 0x000000000f1bd034 in /data/apache-doris-vision-test/be/lib/doris_be
8. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:432: doris::vectorized::VScanNode::alloc_resource(doris::RuntimeState*) @ 0x000000000f247a2f in /data/apache-doris-vision-test/be/lib/doris_be
9. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:432: doris::pipeline::StreamingOperator<doris::pipeline::ScanOperatorBuilder>::open(doris::RuntimeState*) @ 0x00000000126c2e54 in /data/apache-doris-vision-test/be/lib/doris_be
10. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:432: doris::pipeline::PipelineTask::_open() @ 0x00000000126f9dfa in /data/apache-doris-vision-test/be/lib/doris_be
11. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:427: doris::pipeline::PipelineTask::execute(bool*) @ 0x00000000126fa20c in /data/apache-doris-vision-test/be/lib/doris_be
12. /root/doris-code/doris-2.0.2-rc05/be/src/common/status.h:348: doris::pipeline::TaskScheduler::_do_work(unsigned long) @ 0x0000000012703103 in /data/apache-doris-vision-test/be/lib/doris_be
13. /root/doris-code/doris-2.0.2-rc05/be/src/util/threadpool.cpp:0: doris::ThreadPool::dispatch_thread() @ 0x000000000bab165f in /data/apache-doris-vision-test/be/lib/doris_be
14. /var/local/ldb-toolchain/bin/../usr/include/pthread.h:562: doris::Thread::supervise_thread(void*) @ 0x000000000baa75ec in /data/apache-doris-vision-test/be/lib/doris_be
15. start_thread @ 0x0000000000007ea5 in /usr/lib64/libpthread-2.17.so
16. clone @ 0x00000000000fe96d in /usr/lib64/libc-2.17.so

What You Expected?

success to execute

How to Reproduce?

create table:

create table tb1(id int, val string) duplicate key(id) distributed by hash(id);
create table tb2(id bigint, val string) duplicate key(id) distributed by hash(id);
insert into tb1 values (1,'a'),(2,'b');
insert into tb2 values (2,'bb'),(3, 'cc');

failed query:

select tb1.*
from tb1 join tb2 on tb1.id=tb2.id
where tb1.id = 2

success query:

select tb1.*
from tb1 join tb2 on tb1.id=tb2.id
where tb2.id = 2

the following query is also correct:

select * from tb1 where id=2;
select * from tb2 where id=2;

Anything Else?

related PR(type checking): https://github.com/apache/doris/pull/21890

Are you willing to submit PR?

  • [ ] Yes I am willing to submit a PR!

Code of Conduct

fornaix avatar Feb 23 '24 03:02 fornaix