SQL查询用不同id分组会报错 4016 - Internal error

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】5.7.25-OceanBase_CE-v4.3.5.2
【问题描述】

  • 都是内连接,不知道为什么第一个SQL进行分组就会报错 4016 - Internal error
  • 其他三个SQL区别就是group by和select的不一样
  • 主要报错是增加了这一行统计:sum(effective_sale_num) / sum(effective_sale_count),注释了也是可以执行的
  • 尝试用 select last_trace_id(); 去数据库看Observer的日志看不出什么问题
    【复现路径】问题出现前后相关操作
    【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)


SQL和表结构

-- 报错SQL:4016 Internal error
select 
sa.market_id as mark_id
,sum(effective_sale_num) / sum(effective_sale_count)
from stat_dws_market_sale sa 
join sys_base_shop as em on sa.market_id=em.id
where  em.id = 441 
group by sa.market_id;

-- 正常执行
select 
em.id as mark_id
,sum(effective_sale_num) / sum(effective_sale_count)
from stat_dws_market_sale sa 
join sys_base_shop as em on sa.market_id=em.id
where  em.id = 441 
group by em.id;

-- 正常执行
select 
sa.market_id as mark_id
,sum(effective_sale_num) / sum(effective_sale_count)
from stat_dws_market_sale sa 
join sys_base_shop as em on sa.market_id=em.id
where  em.id = 441 
group by em.id;

-- 正常执行
select  
em.id as mark_id
,sum(effective_sale_num) / sum(effective_sale_count)
from stat_dws_market_sale sa 
join sys_base_shop as em on sa.market_id=em.id
where  em.id = 441 
group by sa.market_id;

CREATE TABLE `stat_dws_market_sale` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `market_id` int(11) NOT NULL COMMENT '店铺ID',
  `calculate_date` date NOT NULL COMMENT '销售日期',
  `sale_count` int(11) DEFAULT '0' COMMENT '销售单数',
  `sale_num` int(11) DEFAULT '0' COMMENT '销售数量',
  `sale_amount` decimal(15,3) DEFAULT '0.000' COMMENT '销售金额',
  `effective_sale_count` int(11) DEFAULT '0' COMMENT '有效销售单数',
  `effective_sale_num` int(11) DEFAULT '0' COMMENT '有效销售数量',
  `effective_sale_amount` decimal(15,3) DEFAULT '0.000' COMMENT '有效销售金额',
  `gte500` int(11) DEFAULT '0' COMMENT '单笔金额大于等于500计数',
  `gte700` int(11) DEFAULT '0' COMMENT '单笔金额大于等于700计数',
  `gte1000` int(11) DEFAULT '0' COMMENT '单笔金额大于等于1000计数',
  `shoe_count` int(11) DEFAULT '0' COMMENT '鞋子计数',
  `socks_count` int(11) DEFAULT '0' COMMENT '袜子计数',
  `inner_pants_count` int(11) DEFAULT '0' COMMENT '内裤计数',
  `coat_count` int(11) DEFAULT '0' COMMENT '外套计数',
  `suit_count` int(11) DEFAULT '0' COMMENT '套西计数',
  `down_cloth_count` int(11) DEFAULT '0' COMMENT '下装计数',
  `inner_cloth_count` int(11) DEFAULT '0' COMMENT '内搭计数',
  `accessory_count` int(11) DEFAULT '0' COMMENT '配饰计数',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `audit_tx_id` varchar(32) DEFAULT NULL COMMENT '审计标识',
  PRIMARY KEY (`id`, `calculate_date`),
  UNIQUE KEY `idx_unique` (`market_id`, `calculate_date`) BLOCK_SIZE 16384 LOCAL
) ORGANIZATION INDEX AUTO_INCREMENT = 22206 AUTO_INCREMENT_MODE = 'ORDER' DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = '店铺每日销售汇总表';

CREATE TABLE `sys_base_shop` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `org_id` varchar(32) NOT NULL COMMENT '组织id',
  `code` varchar(32) DEFAULT NULL COMMENT '店铺编号',
  `simple_name` varchar(256) NOT NULL COMMENT '店铺简称',
  `operating_state` varchar(4) DEFAULT NULL COMMENT '营业状态 0:正常营业、1:临时停业、2:关店停业',
  `quality` varchar(4) DEFAULT NULL COMMENT '经营模式:1线下直营;2线下加盟;3联营;4批发……',
  `principal` varchar(32) DEFAULT NULL COMMENT '收件人',
  `principal_phone` varchar(32) DEFAULT NULL COMMENT '收件联系方式',
  `boss` varchar(20) DEFAULT NULL COMMENT '老板',
  `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  `country` varchar(64) DEFAULT NULL COMMENT '国家',
  `province` varchar(64) DEFAULT NULL COMMENT '省',
  `city` varchar(64) DEFAULT NULL COMMENT '市',
  `area` varchar(64) DEFAULT NULL COMMENT '县/区',
  `address` varchar(128) DEFAULT NULL COMMENT '详细地址',
  `longitude` varchar(32) DEFAULT NULL COMMENT '经度',
  `latitude` varchar(32) DEFAULT NULL COMMENT '纬度',
  `principal_json` longtext DEFAULT NULL COMMENT '相关负责人json',
  `not_cashier_user_id` varchar(512) DEFAULT NULL COMMENT '不允许收银的用户id(多个,逗号隔开)',
  `state` varchar(32) NOT NULL COMMENT '状态(字典:初始化/正常)',
  `enable` varchar(32) NOT NULL COMMENT '启用状态,字典(通用启用状态)',
  `create_time` datetime(3) NOT NULL COMMENT '创建时间',
  `create_user` varchar(32) NOT NULL COMMENT '创建人',
  `update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
  `update_user` varchar(32) DEFAULT NULL COMMENT '更新人',
  `del_flag` varchar(32) NOT NULL COMMENT '删除标记,字典(通用删除标记)',
  `audit_tx_id` varchar(32) DEFAULT NULL COMMENT '审计标识',
  PRIMARY KEY (`id`),
  KEY `idx_org_id` (`org_id`) BLOCK_SIZE 16384 LOCAL,
  KEY `idx_principal` (`principal`) BLOCK_SIZE 16384 LOCAL
) ORGANIZATION INDEX AUTO_INCREMENT = 2111743114 AUTO_INCREMENT_MODE = 'ORDER' DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = '店铺资料基本信息'

日志

  • 搜索数据库的日志:grep -r ‘YB4276C3B224-00064959E8D6FC84-0-0’.
observer.log:[2026-01-30 15:20:22.983771] WDIAG [SQL.PC] common_free (ob_lib_cache_object_manager.cpp:139) [28131][T1002_L0_G0][T1002][YB4276C3B224-00064959E8D6FC84-0-0] [lt=22][errcode=0] set logical del time(cache_obj->get_logical_del_time()=24441613253236, cache_obj->added_lc()=false, cache_obj->get_object_id()=62469, cache_obj->get_tenant_id()=1002, lbt()="0x2644d88d 0x1943e08e 0x92c2608 0x92b3dc5 0x92a5f03 0x929ef9d 0x928c144 0x13217099 0x260d8d52 0x7f36c0d36ea5 0x7f36c0a5fb0d")
···
1 个赞

报错sql能稳定复现吗?explain extended_noaddr 看看


看着像版本已知bug

2 个赞

是个已知bug,本地测试435bp5该问题已经被修复

1 个赞