执行load data提示timeout,但实际导入成功

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】
Server version: OceanBase_CE 4.1.0.1 (r102000042023061314-43bca414d5065272a730c92a645c3e25768c1d05) (Built Jun 13 2023 14:26:23)

【问题描述】
sysbench生成的测试表,20万行数据,执行load data导入后提示timeout,但实际上已导入成功。

【复现路径】

>load data infile '/tmp/t1.csv' into table t1;
ERROR 4012 (HY000): Timeout  -- 报告timeout
>
>select count(*) from t1;
+----------+
| count(*) |
+----------+
|   200000 |
+----------+
1 row in set (0.164 sec)


# 清空,再次导入
>truncate table t1;
Query OK, 0 rows affected (1.102 sec)
>
>load data /*+ direct */ infile '/tmp/t1.csv' into table t1;
ERROR 4012 (HY000): Timeout  -- 还是报告timeout
>select count(*) from t1;
+----------+
| count(*) |
+----------+
|   200000 |
+----------+
1 row in set (0.234 sec)

不是太理解为何提示timeout。

【问题现象及影响】

【附件】

原始数据就是200000吗,可以看下 ob_query_timeout 参数的值,调大些再试试

建议再次测试一下 如果有相同结果的话辛苦回复下

OceanBase 数据库的查询超时时间默认由租户变量 ob_query_timeout 控制,默认值是 10000000(单位,微秒)。当查询时间超过该变量值后,会返回错误 -4012(HY000): Timeout

查询超时变量示例

查看当前查询超时时间

obclient> SHOW VARIABLES LIKE ‘ob_query_timeout’;

可以参考文档查询
https://www.oceanbase.com/docs/common-oceanbase-database-10000000001697286

确实是收到 ob_query_timeout 参数的影响,但如果执行下面的SQL,结果却是另一个样子的

> select sleep(10.5);
ERROR 4012 (HY000): Timeout, query has reached the maximum query timeout: 10000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again.

不再是简单的提示 Timeout,虽然错误代码一样,但提示信息更详细了,也更好理解。

load data期间也是活跃事务,不应该这么简单处理。
另外,既然提示timeout了,可能会直观以为这个SQL被回滚了,但实际上却又导入成功了。
综上,用户体验不好。