MERGE INTO语法 后台报错 但是数据入表成功

【 使用环境 】 测试环境
【 OB or 其他组件 】OB
【 使用版本 】ob-loader-dumper-4.2.4-RELEASE以及druid-1.2.9
【问题描述】功能中很多使用merge into 的写法,但是在执行过程中报错,数据却正常入表。将打印出来的sql在odc中执行,也执行成功。
【复现路径】日志如下:
[ERROR] 10:43:10.204 [http-nio-0.0.0.0-8086-exec-151]StatFilter.java:169 lxq | wtBRtUuFV0aSclk_hJNlz com.alibaba.druid.filter.stat.StatFilter - merge sql error, dbType oceanbase, druid-1.2.9, sql :
MERGE INTO CHB_PRD_BASEINFO CII
USING (
select * from(
select
? PRODUUID,
? FPROD_ID,
? PROD_ID,
? ORG_CODE,
? PROD_NAME,
? REG_CODE,
? LACKS
from dual
)
) TEMP
ON (CII.PROD_ID = TEMP.PROD_ID)
WHEN MATCHED THEN
UPDATE
SET
CII.PRODUUID = TEMP.PRODUUID,
CII.FPROD_ID = TEMP.FPROD_ID,
CII.ORG_CODE = TEMP.ORG_CODE,
CII.PROD_NAME = TEMP.PROD_NAME,
CII.REG_CODE = TEMP.REG_CODE,
CII.LACKS = TEMP.LACKS
WHEN NOT MATCHED THEN
INSERT (PRODUUID, FPROD_ID, PROD_ID,
ORG_CODE, PROD_NAME, REG_CODE,
LACKS)
values(
TEMP.PRODUUID,
TEMP.FPROD_ID,
TEMP.PROD_ID,
TEMP.ORG_CODE,
TEMP.PROD_NAME,
TEMP.REG_CODE,
TEMP.LACKS
)
com.alibaba.druid.sql.parser.ParserException: not supported.pos 5, line 1, column 1, token IDENTIFIER MERGE
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:630)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:114)
at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:154)
at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:127)
at com.alibaba.druid.filter.stat.StatFilter.mergeSql(StatFilter.java:167)
at com.alibaba.druid.filter.stat.StatFilter.createSqlStat(StatFilter.java:694)
at com.alibaba.druid.filter.stat.StatFilter.statementPrepareAfter(StatFilter.java:344)
at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:124)
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:568)
at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:930)
at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:122)
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:568)
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:341)
at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:377)
at sun.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:55)
at com.sun.proxy.$Proxy1402.prepareStatement(Unknown Source)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:86)
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at sun.reflect.GeneratedMethodAccessor354.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)

【问题现象及影响】
请大神帮忙诊断下sql哪里有问题,避免这种后台打印错误
【附件】

obdumper 暂时没有使用 merge into 语法;该问题看上去是业务自己在 ibatis 框架中使用 merge into 语法?关于 merge into 语法的使用可以参考官方文档。

你这个具体是在做什么操作,使用obloader导入数据吗?

老师 不是用工具操作 是在mybatisl里写的这些语句 这些成熟的语句已经投产 不过生产是oracle 现在要换成ob 前台操作没什么变化都能正常入表 但是后台有很多报错 也参考官方文档了 语法一致呢 所以来次求

不是用工具导入导出 而是mybatis里面写的业务代码呢

查看 v$sql_audit 找到你那个 merge into 语句,是成功还是失败,一目了然。

老板,又没有结果?我也遇到了 :joy:

oceanbase是支持的 但是Druid是不支持的 可以在yml中配置参数关闭这个 具体参数可以搜下

好的,谢谢