问题
之前doris批量写数据的过程中, 如果出现字段相关的报错日志里面会给出具体报错字段对应的url, 但这次的算术溢出没有, 这是bug吗?
本次问题因为只有一个decimal字段有明显的精度差异, 如果数值类型的字段数量比较多的话, 人肉去核对比较困难, 能提示出具体是哪个字段报错方便开发人员去排查
ddl如下:
CREATE TABLE `dwd_pi_branch_fty_day_produ_plan` (
`work_date` varchar(24) NOT NULL COMMENT '作业日期',
`craft_unit` varchar(12) NOT NULL COMMENT '工艺单元',
`unit_no` varchar(6) NOT NULL COMMENT '单元号',
`produ_target_proj_code` varchar(60) NOT NULL COMMENT '生产指标项目代码',
`produ_target_proj_chinese_name` varchar(3000) NULL COMMENT '生产指标项目中文名称',
`produ_target_proj_value` DECIMAL(8, 3) NULL COMMENT '生产指标项目值',
`plan_stat` varchar(6) NULL COMMENT '计划状态',
`rec_creator` varchar(60) NULL COMMENT '记录创建责任者',
`rec_create_time` varchar(42) NULL COMMENT '记录创建时间',
`rec_revisor` varchar(60) NULL COMMENT '记录修改责任者',
`rec_revise_time` varchar(42) NULL COMMENT '记录修改时间',
`archive_flag` varchar(3) NULL COMMENT '归档标记',
`rec_del_person` varchar(60) NULL COMMENT '记录删除责任者',
`rec_del_time` varchar(42) NULL COMMENT '记录删除时间',
`ver` int(11) NULL COMMENT '版本',
`archive_stamp_no` varchar(30) NULL COMMENT '归档邮戳号',
`etl_time` datetime NULL COMMENT '数据加载时间'
)
CREATE TABLE `ods_tq1_tpsip01` (
`PROD_PLAN_TYPE` varchar(6) NOT NULL COMMENT '生产计划类型',
`PROC_UNIT` varchar(12) NOT NULL COMMENT '工艺单元',
`UNIT_NO` varchar(6) NOT NULL COMMENT '单元号',
`PROD_ITEM_CODE` varchar(60) NOT NULL COMMENT '生产指标项目代码',
`REC_CREATOR` varchar(60) NULL COMMENT '记录创建责任者',
`REC_CREATE_TIME` varchar(42) NULL COMMENT '记录创建时刻',
`REC_REVISOR` varchar(60) NULL COMMENT '记录修改责任者',
`REC_REVISE_TIME` varchar(42) NULL COMMENT '记录修改时刻',
`ARCHIVE_FLAG` varchar(3) NULL COMMENT '归档标记',
`DU_MAKER` varchar(60) NULL COMMENT '修改/删除责任者',
`DU_TIME` varchar(42) NULL COMMENT '修改/删除时间',
`VERSION` smallint(6) NULL COMMENT '版次',
`ARCH_STAMP_NO` varchar(30) NULL COMMENT '归档邮戳号',
`PROD_ITEM_CNAME` varchar(3000) NULL COMMENT '生产指标项目中文名称',
`MEASURE_UNIT` varchar(30) NULL COMMENT '计量单位',
`DECIMAL_DIGIT` smallint(6) NULL COMMENT '小数位数',
`DIS_SEQ_NO` smallint(6) NULL COMMENT '计划项目排序',
`REMARK` varchar(750) NULL COMMENT '备注',
`PROD_ITEM_VALUE` DECIMAL(11, 3) NULL COMMENT '生产指标项目值',
`etl_time` datetime NULL COMMENT '记录数据的写入时间'
)
CREATE TABLE `ods_tq1_tpsip24` (
`WORK_DATE` varchar(24) NOT NULL COMMENT '作业日期',
`PROC_UNIT` varchar(12) NOT NULL COMMENT '工艺单元',
`UNIT_NO` varchar(6) NOT NULL COMMENT '单元号',
`PROD_ITEM_CODE` varchar(60) NOT NULL COMMENT '生产指标项目代码',
`REC_CREATOR` varchar(60) NULL COMMENT '记录创建责任者',
`REC_CREATE_TIME` varchar(42) NULL COMMENT '记录创建时刻',
`REC_REVISOR` varchar(60) NULL COMMENT '记录修改责任者',
`REC_REVISE_TIME` varchar(42) NULL COMMENT '记录修改时刻',
`ARCHIVE_FLAG` varchar(3) NULL COMMENT '归档标记',
`DU_MAKER` varchar(60) NULL COMMENT '修改/删除责任者',
`DU_TIME` varchar(42) NULL COMMENT '修改/删除时间',
`VERSION` smallint(6) NULL COMMENT '版次',
`ARCH_STAMP_NO` varchar(30) NULL COMMENT '归档邮戳号',
`PROD_ITEM_VALUE` DECIMAL(11, 3) NULL COMMENT '生产指标项目值',
`PLAN_STATUS` varchar(6) NULL COMMENT '计划状态',
`etl_time` datetime NULL COMMENT '记录数据的写入时间'
)
sql如下:
INSERT INTO dwd_pi_branch_fty_day_produ_plan
(
work_date, --作业日期
craft_unit, --工艺单元
unit_no, --单元号
produ_target_proj_code, --生产指标项目代码
produ_target_proj_chinese_name, --生产指标项目中文名称
produ_target_proj_value, --生产指标项目值
plan_stat, --计划状态
rec_creator, --记录创建责任者
rec_create_time, --记录创建时间
rec_revisor, --记录修改责任者
rec_revise_time, --记录修改时间
archive_flag, --归档标记
rec_del_person, --记录删除责任者
rec_del_time, --记录删除时间
ver, --版本
archive_stamp_no, --归档邮戳号
etl_time --数据加载时间
)
SELECT A1.work_date AS work_date,
A1.proc_unit AS craft_unit,
A1.unit_no AS unit_no,
A1.prod_item_code AS produ_target_proj_code,
A2.prod_item_cname AS produ_target_proj_chinese_name,
A1.prod_item_value AS produ_target_proj_value,
A1.plan_status AS plan_stat,
A1.rec_creator AS rec_creator,
A1.rec_create_time AS rec_create_time,
A1.rec_revisor AS rec_revisor,
A1.rec_revise_time AS rec_revise_time,
A1.archive_flag AS archive_flag,
A1.du_maker AS rec_del_person,
A1.du_time AS rec_del_time,
A1.version AS ver,
A1.arch_stamp_no AS archive_stamp_no,
NOW() AS etl_time
FROM
ods_prod.ods_tq1_tpsip24 A1
LEFT JOIN (
SELECT
prod_item_code,
prod_item_cname,
etl_time
FROM
ods_prod.ods_tq1_tpsip01
WHERE
prod_plan_type = 22
) A2
省略后续条件
报错如下:
java.sql.SQLException: errCode = 2, detailMessage = (10.8.173.240)[E-124][E-124] Arithmetic overflow
0# doris::Exception::Exception(int, std::basic_string_view<char, std::char_traits<char> >) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:173
1# std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(doris::vectorized::convert_decimal_cols<doris::vectorized::DataTypeDecimal<doris
::vectorized::Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > >(doris::vectorized::ColumnDecimal<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >::FieldType>::Container::valu
e_type const*, doris::vectorized::ColumnDecimal<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> >::FieldType>::Container::value_type*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long)::{lambda
(auto:1)#1}&&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >&&)>, std::integer_sequence<unsigned long, 1ul> >::__visit_invoke(doris::vectorized::convert_decimal_cols<doris::vectorized::DataTyp
eDecimal<doris::vectorized::Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > >(doris::vectorized::ColumnDecimal<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >::FieldType>::C
ontainer::value_type const*, doris::vectorized::ColumnDecimal<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> >::FieldType>::Container::value_type*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned
long)::{lambda(auto:1)#1}&&, std::variant<std::integral_constant<bool, false>, std::integral_constant<bool, true> >&&) at /home/zcp/repo_center/doris_release/doris/be/src/vec/data_types/data_type_decimal.h:527
2# void doris::vectorized::convert_decimal_cols<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > >(doris::vectorized::ColumnDecimal<d
oris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >::FieldType>::Container::value_type const*, doris::vectorized::ColumnDecimal<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> >::FieldType>::Contai
ner::value_type*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:0
3# doris::Status doris::vectorized::ConvertImpl<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> >, doris::vectorized::NameCast>::execu
te<doris::vectorized::PrecisionScaleArg>(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long, bool, doris::vectorized::PrecisionScaleArg)
at /home/zcp/repo_center/doris_release/doris/be/src/vec/functions/function_cast.h:0
4# bool doris::vectorized::FunctionCast::create_decimal_wrapper<doris::vectorized::Decimal<int> >(std::shared_ptr<doris::vectorized::IDataType const> const&, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int>
> const*) const::{lambda(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}::operator()(doris::FunctionContext*, doris::vectorized:
:Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) const::{lambda(auto:1 const&)#1}::operator()<doris::vectorized::TypePair<doris::vectorized::DataTypeDecimal<doris::vectorized::
Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > > >(doris::vectorized::TypePair<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<long> >, doris::vectorized::DataTypeDecimal<doris::ve
ctorized::Decimal<int> > > const&) const at /home/zcp/repo_center/doris_release/doris/be/src/vec/functions/function_cast.h:1698
5# bool doris::vectorized::call_on_index_and_data_type<doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> >, doris::vectorized::FunctionCast::create_decimal_wrapper<doris::vectorized::Decimal<int> >(std::shar
ed_ptr<doris::vectorized::IDataType const> const&, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > const*) const::{lambda(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::alloca
tor<unsigned long> > const&, unsigned long, unsigned long)#1}::operator()(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) const::{la
mbda(auto:1 const&)#1}>(doris::vectorized::TypeIndex, doris::vectorized::FunctionCast::create_decimal_wrapper<doris::vectorized::Decimal<int> >(std::shared_ptr<doris::vectorized::IDataType const> const&, doris::vectorized::DataTypeDe
cimal<doris::vectorized::Decimal<int> > const*) const::{lambda(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}::operator()(doris:
:FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) const::{lambda(auto:1 const&)#1}&&) at /home/zcp/repo_center/doris_release/doris/be/src/ve
c/core/call_on_type_index.h:0
6# doris::vectorized::FunctionCast::create_decimal_wrapper<doris::vectorized::Decimal<int> >(std::shared_ptr<doris::vectorized::IDataType const> const&, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > co
nst*) const::{lambda(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}::operator()(doris::FunctionContext*, doris::vectorized::Bloc
k&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) const at /home/zcp/repo_center/doris_release/doris/be/src/vec/functions/function_cast.h:1708
7# std::_Function_handler<doris::Status (doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long), doris::vectorized::FunctionCast::
create_decimal_wrapper<doris::vectorized::Decimal<int> >(std::shared_ptr<doris::vectorized::IDataType const> const&, doris::vectorized::DataTypeDecimal<doris::vectorized::Decimal<int> > const*) const::{lambda(doris::FunctionContext*,
doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}>::_M_invoke(std::_Any_data const&, doris::FunctionContext*&&, doris::vectorized::Block&, std::vector<unsi
gned long, std::allocator<unsigned long> > const&, unsigned long&&, unsigned long&&) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
8# doris::vectorized::FunctionCast::prepare_remove_nullable(doris::FunctionContext*, std::shared_ptr<doris::vectorized::IDataType const> const&, std::shared_ptr<doris::vectorized::IDataType const> const&, bool) const::{lambd
a(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}::operator()(doris::FunctionContext*, doris::vectorized::Block&, std::vector<uns
igned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) const at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:335
9# std::_Function_handler<doris::Status (doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long), doris::vectorized::FunctionCast::
prepare_remove_nullable(doris::FunctionContext*, std::shared_ptr<doris::vectorized::IDataType const> const&, std::shared_ptr<doris::vectorized::IDataType const> const&, bool) const::{lambda(doris::FunctionContext*, doris::vectorized:
:Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long)#1}>::_M_invoke(std::_Any_data const&, doris::FunctionContext*&&, doris::vectorized::Block&, std::vector<unsigned long, std::all
ocator<unsigned long> > const&, unsigned long&&, unsigned long&&) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
10# doris::vectorized::PreparedFunctionCast::execute_impl(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsigned long) at /var/local/ldb_
toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:335
11# doris::vectorized::PreparedFunctionImpl::execute_without_low_cardinality_columns(doris::FunctionContext*, doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, unsign
ed long, bool) at /home/zcp/repo_center/doris_release/doris/be/src/vec/functions/function.cpp:0
: