Skip to content

[Bug]: Binary-string bitwise length mismatch is reported as an internal error #28792

Description

@Ariznawlll

问题描述

二进制字符串位运算的操作数长度不等时,MO 能识别该用户输入无效,却以 20101 internal error 返回。该错误不表示服务器内部状态异常,而是 MySQL 定义的可预期语义校验错误。

环境

  • MatrixOne: main@6875e4203519de1ed98b842c1cbc8c57f11dc326
  • 对照: MySQL 8.3.0

复现

SELECT HEX(_binary X'01' & _binary X'0001');
SELECT HEX(_binary X'01' | _binary X'0001');
SELECT HEX(_binary X'01' ^ _binary X'0001');

MO 对三种运算均返回:

ERROR 20101 (HY000): internal error:
Binary operands of bitwise operators must be of equal length

MySQL 返回:

ERROR 3513 (HY000): Binary operands of bitwise operators must be of equal length

9 组长度组合和三个操作符的矩阵中,等长输入结果均与 MySQL 相同;所有不等长输入都保留了相同文字但被包装为 internal error。表列路径亦相同。

初步定位与预期

pkg/sql/plan/function/func_compare.go 的三个 binary-string 位运算实现对长度不等调用 moerr.NewInternalErrorNoCtx。应改用表示用户可恢复输入错误的错误码/类别,并尽可能与 MySQL 3513 语义对齐;客户端不应将正常参数校验误判为服务端故障。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

kind/bugSomething isn't workingneeds-triageNeeds evaluation before prioritization. Not yet decided whether to proceed

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions