This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit d54b97eb5779c442f3aeae668140abf30d848716 Author: zy-kkk <[email protected]> AuthorDate: Thu Jul 6 17:33:49 2023 +0800 [fix](type system) fix datetimev2 write column to arrow (#21529) *** Query id: c1d804d455a24dee-a8967d16a258fc15 *** *** Aborted at 1688530361 (unix time) try "date -d @1688530361" if you are using GNU date *** *** Current BE git commitID: f2025b9 *** *** SIGSEGV unknown detail explain (@0x0) received by PID 3709755 (TID 3710413 OR 0x7f5661d57700) from PID 0; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /root/doris/be/src/common/signal_handler.h:413 1# os::Linux::chained_handler(int, siginfo*, void*) in /usr/lib/jvm/TencentKona-8.0.12-352/jre/lib/amd64/server/[libjvm.so](http://libjvm.so/) 2# JVM_handle_linux_signal in /usr/lib/jvm/TencentKona-8.0.12-352/jre/lib/amd64/server/[libjvm.so](http://libjvm.so/) 3# signalHandler(int, siginfo*, void*) in /usr/lib/jvm/TencentKona-8.0.12-352/jre/lib/amd64/server/[libjvm.so](http://libjvm.so/) 4# 0x00007F5795EE5B50 in /lib64/libc.so.6 5# doris::vectorized::DateV2Value<doris::vectorized::DateTimeV2ValueType>::to_buffer(char*, int) const at /root/doris/be/src/vec/runtime/vdatetime_value.cpp:2409 6# doris::vectorized::DataTypeDateTimeV2SerDe::write_column_to_arrow(doris::vectorized::IColumn const&, unsigned char const*, arrow::ArrayBuilder*, int, int) const in /mnt/disk2/zhaobingquan/doris/be/lib/doris_be 7# doris::vectorized::DataTypeNullableSerDe::write_column_to_arrow(doris::vectorized::IColumn const&, unsigned char const*, arrow::ArrayBuilder*, int, int) const at /root/doris/be/src/vec/data_types/serde/data_type_nullable_serde.cpp:120 8# doris::FromBlockConverter::convert(std::shared_ptr<arrow::RecordBatch>*) at /root/doris/be/src/util/arrow/block_convertor.cpp:392 9# doris::convert_to_arrow_batch(doris::vectorized::Block const&, std::shared_ptr<arrow::Schema> const&, arrow::MemoryPool*, std::shared_ptr<arrow::RecordBatch>*) in /mnt/disk2/zhaobingquan/doris/be/lib/doris_be 10# doris::vectorized::MemoryScratchSink::send(doris::RuntimeState*, doris::vectorized::Block*, bool) at /root/doris/be/src/vec/sink/vmemory_scratch_sink.cpp:83 11# doris::PlanFragmentExecutor::open_vectorized_internal() in /mnt/disk2/zhaobingquan/doris/be/lib/doris_be 12# doris::PlanFragmentExecutor::open() at /root/doris/be/src/runtime/plan_fragment_executor.cpp:273 13# doris::FragmentExecState::execute() at /root/doris/be/src/runtime/fragment_mgr.cpp:263 14# doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::RuntimeState*, doris::Status*)> const&) at /root/doris/be/src/runtime/fragment_mgr.cpp:527 15# std::_Function_handler<void (), doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0>::_M_invoke(std::_Any_data const&) at /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291 16# doris::ThreadPool::dispatch_thread() in /mnt/disk2/zhaobingquan/doris/be/lib/doris_be 17# doris::Thread::supervise_thread(void*) at /root/doris/be/src/util/thread.cpp:466 18# start_thread in /lib64/libpthread.so.0 19# __clone in /lib64/libc.so.6 --- .../serde/data_type_datetimev2_serde.cpp | 4 +-- regression-test/suites/source_p0/ddl/create.sql | 19 +++++++++++ regression-test/suites/source_p0/ddl/insert.sql | 1 + .../suites/source_p0/doris_source.groovy | 39 ++++++++++++++++++++++ 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp index 0edfc0ae41..5b912ff79e 100644 --- a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp @@ -35,7 +35,7 @@ void DataTypeDateTimeV2SerDe::write_column_to_arrow(const IColumn& column, const for (size_t i = start; i < end; ++i) { char buf[64]; const vectorized::DateV2Value<vectorized::DateTimeV2ValueType>* time_val = - (const vectorized::DateV2Value<vectorized::DateTimeV2ValueType>*)(col_data[i]); + (const vectorized::DateV2Value<vectorized::DateTimeV2ValueType>*)(&col_data[i]); int len = time_val->to_buffer(buf); if (null_map && null_map[i]) { checkArrowStatus(string_builder.AppendNull(), column.get_name(), @@ -76,4 +76,4 @@ Status DataTypeDateTimeV2SerDe::write_column_to_mysql(const IColumn& column, } } // namespace vectorized -} // namespace doris \ No newline at end of file +} // namespace doris diff --git a/regression-test/suites/source_p0/ddl/create.sql b/regression-test/suites/source_p0/ddl/create.sql new file mode 100644 index 0000000000..757be2e121 --- /dev/null +++ b/regression-test/suites/source_p0/ddl/create.sql @@ -0,0 +1,19 @@ +CREATE TABLE doris_source +( + bigint_1 BIGINT, + char_1 char(10), + date_1 DATE, + datetime_1 DATETIME, + decimal_1 DECIMAL(5, 2), + double_1 DOUBLE, + float_1 FLOAT, + int_1 INT, + largeint_1 STRING, + smallint_1 SMALLINT, + tinyint_1 TINYINT, + varchar_1 VARCHAR(255) +) DUPLICATE KEY(`bigint_1`) +DISTRIBUTED BY HASH(`bigint_1`) BUCKETS 1 +PROPERTIES ( + "replication_num" = "1" +); diff --git a/regression-test/suites/source_p0/ddl/insert.sql b/regression-test/suites/source_p0/ddl/insert.sql new file mode 100644 index 0000000000..15704d9c83 --- /dev/null +++ b/regression-test/suites/source_p0/ddl/insert.sql @@ -0,0 +1 @@ +INSERT INTO doris_source values(1,'a','2022-01-01','2022-01-01 00:00:01',1.1,1.1,1.1,1,1,1,1,'b'); \ No newline at end of file diff --git a/regression-test/suites/source_p0/doris_source.groovy b/regression-test/suites/source_p0/doris_source.groovy new file mode 100644 index 0000000000..0b0cc5ffaa --- /dev/null +++ b/regression-test/suites/source_p0/doris_source.groovy @@ -0,0 +1,39 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// The cases is copied from https://github.com/trinodb/trino/tree/master +// /testing/trino-product-tests/src/main/resources/sql-tests/testcases/tpcds +// and modified by Doris. + +suite("doris_source") { + + def tableName = "doris_source" + sql """DROP TABLE IF EXISTS ${tableName}""" + sql new File("""${context.file.parent}/ddl/create.sql""").text + sql new File("""${context.file.parent}/ddl/insert.sql""").text + logger.info("start delete local doris source jar...") + def delete_local_doris_source_jar = "rm -rf doris-source-demo.jar".execute() + logger.info("start download doris source demo ...") + logger.info("getS3Url ==== ${getS3Url()}") + def download_doris_source_jar = "curl ${getS3Url()}/regression/doris-source-demo.jar --output doris-source-demo.jar".execute().getText() + logger.info("finish download doris source demo ...") + def run_cmd = "java -cp doris-source-demo.jar org.apache.doris.sdk.DorisReaderExample $context.config.feHttpAddress $context.config.feHttpUser regression_test_source_p0 $tableName" + logger.info("run_cmd : $run_cmd") + def run_source_jar = run_cmd.execute().getText() + logger.info("result: $run_source_jar") + +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
