即使设置已关闭,jOOQ 也会用引号将函数括起来
jOOQ surrounds functions with quotes even if the setting is turned off
我在设置中关闭了添加引号:
.withRenderQuotedNames(RenderQuotedNames.NEVER)
但是当我检查 SQL 日志时,我仍然在输出中找到双引号。 jOOQ 将其添加到函数调用中:
select connect_by_isleaf LEAF, ms.MODULNAME, ms.MODULNAMESPRUNG,
TOSCA.PA_BEZ."MODULTOSCA_MENUBEZ"(ms.MODULNAMESPRUNG,
TOSCA.PA_BASIS."SPRACHE_USER"()) MENUBEZ, app.BEZKURZ
from TOSCA.MODULSPRUNG ms
join TOSCA.MODULTOSCA mt1 on (ms.MODULNAME = mt1.MODULNAME and mt1.MODULART = 'M')
left outer join TOSCA.MODULTOSCA mt2 on mt2.MODULNAME = ms.MODULNAMESPRUNG
left outer join TOSCA.APPLIKATION app on app.APPL = mt2.APPL
start with ms.MODULNAME = 'X000'
connect by (prior ms.MODULNAMESPRUNG = ms.MODULNAME and prior ms.FUNKTION = 'springen')
order siblings by ms.SEQUENZ
过程调用:
begin ? := TOSCA.PA_SPRACH."MSGALERT_TEXT" (P_MODULNAME => 'ALLE', P_LAUFNR => 0); end;
这是一个错误吗?还是我必须配置其他东西?
最近报告了一个相关的错误。也许是 3.12 回归:https://github.com/jOOQ/jOOQ/issues/9813。我们目前正在对此进行调查。
解决方法是实施 ExecuteListener
并将所有函数标识符 \."(\w+)"\(
正则表达式替换为 .(
:
class WorkaroundFor9813 extends DefaultExecuteListener {
static final Pattern P = Pattern.compile("\.\"(\w+)\"\(");
@Override
public void renderEnd(ExecuteContext ctx) {
ctx.sql(P.matcher(ctx.sql()).replaceAll(".("));
}
}
当然,这是一种解决方法,它可能会意外匹配不应该匹配的内容...
我在设置中关闭了添加引号:
.withRenderQuotedNames(RenderQuotedNames.NEVER)
但是当我检查 SQL 日志时,我仍然在输出中找到双引号。 jOOQ 将其添加到函数调用中:
select connect_by_isleaf LEAF, ms.MODULNAME, ms.MODULNAMESPRUNG,
TOSCA.PA_BEZ."MODULTOSCA_MENUBEZ"(ms.MODULNAMESPRUNG,
TOSCA.PA_BASIS."SPRACHE_USER"()) MENUBEZ, app.BEZKURZ
from TOSCA.MODULSPRUNG ms
join TOSCA.MODULTOSCA mt1 on (ms.MODULNAME = mt1.MODULNAME and mt1.MODULART = 'M')
left outer join TOSCA.MODULTOSCA mt2 on mt2.MODULNAME = ms.MODULNAMESPRUNG
left outer join TOSCA.APPLIKATION app on app.APPL = mt2.APPL
start with ms.MODULNAME = 'X000'
connect by (prior ms.MODULNAMESPRUNG = ms.MODULNAME and prior ms.FUNKTION = 'springen')
order siblings by ms.SEQUENZ
过程调用:
begin ? := TOSCA.PA_SPRACH."MSGALERT_TEXT" (P_MODULNAME => 'ALLE', P_LAUFNR => 0); end;
这是一个错误吗?还是我必须配置其他东西?
最近报告了一个相关的错误。也许是 3.12 回归:https://github.com/jOOQ/jOOQ/issues/9813。我们目前正在对此进行调查。
解决方法是实施 ExecuteListener
并将所有函数标识符 \."(\w+)"\(
正则表达式替换为 .(
:
class WorkaroundFor9813 extends DefaultExecuteListener {
static final Pattern P = Pattern.compile("\.\"(\w+)\"\(");
@Override
public void renderEnd(ExecuteContext ctx) {
ctx.sql(P.matcher(ctx.sql()).replaceAll(".("));
}
}
当然,这是一种解决方法,它可能会意外匹配不应该匹配的内容...