JOOQ 慢速代码生成
JOOQ slow code generation
在jooq代码生成过程中,是否有任何参数可以on/off执行下一个查询?
SELECT "SYS"."ALL_OBJECTS"."OWNER",
"SYS"."ALL_OBJECTS"."OBJECT_NAME",
"SYS"."ALL_OBJECTS"."OBJECT_ID",
"SYS"."ALL_PROCEDURES"."AGGREGATE"
FROM "SYS"."ALL_OBJECTS"
LEFT OUTER JOIN "SYS"."ALL_PROCEDURES"
ON ( "SYS"."ALL_OBJECTS"."OWNER" =
"SYS"."ALL_PROCEDURES"."OWNER"
AND "SYS"."ALL_OBJECTS"."OBJECT_NAME" =
"SYS"."ALL_PROCEDURES"."OBJECT_NAME")
WHERE ( UPPER ("SYS"."ALL_OBJECTS"."OWNER") IN ( 'MYSCHEMA')
AND "SYS"."ALL_OBJECTS"."OBJECT_TYPE" IN ( 'FUNCTION', 'PROCEDURE'))
ORDER BY "SYS"."ALL_OBJECTS"."OWNER" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_NAME" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_ID" ASC
在具有大量模式和对象的数据库上执行大约需要一个小时
jOOQ 查询 运行 的一个主要问题是 UPPER(OWNER)
表达式。这是在 jOOQ 2.4 (#1418) 中引入的,以防止用户意外使用小写模式名称的错误配置。该功能基于一个错误的假设,即区分大小写的用户是不可能的。它们当然是可能的(即使很少见),所以#1418 是错误的。我为这个问题创建了两个问题:
与此同时,您有一些可能的解决方法:
jOOQ 3.8 之前
你总是可以从 jooq-codegen 覆盖 JavaGenerator
并重新实现一些方法,包括 generatePackages()
和 generateRoutines()
为空。这样,相关代码就完全不会执行了。
当然,这意味着您不会得到任何生成的包和例程。
Post jOOQ 3.8
有一个新的配置选项,您可以在其中进行与上面相同的配置:
<configuration>
<generator>
<database>
<includeRoutines>false</includeRoutines>
<includePackages>false</includePackages>
...
在jooq代码生成过程中,是否有任何参数可以on/off执行下一个查询?
SELECT "SYS"."ALL_OBJECTS"."OWNER",
"SYS"."ALL_OBJECTS"."OBJECT_NAME",
"SYS"."ALL_OBJECTS"."OBJECT_ID",
"SYS"."ALL_PROCEDURES"."AGGREGATE"
FROM "SYS"."ALL_OBJECTS"
LEFT OUTER JOIN "SYS"."ALL_PROCEDURES"
ON ( "SYS"."ALL_OBJECTS"."OWNER" =
"SYS"."ALL_PROCEDURES"."OWNER"
AND "SYS"."ALL_OBJECTS"."OBJECT_NAME" =
"SYS"."ALL_PROCEDURES"."OBJECT_NAME")
WHERE ( UPPER ("SYS"."ALL_OBJECTS"."OWNER") IN ( 'MYSCHEMA')
AND "SYS"."ALL_OBJECTS"."OBJECT_TYPE" IN ( 'FUNCTION', 'PROCEDURE'))
ORDER BY "SYS"."ALL_OBJECTS"."OWNER" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_NAME" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_ID" ASC
在具有大量模式和对象的数据库上执行大约需要一个小时
jOOQ 查询 运行 的一个主要问题是 UPPER(OWNER)
表达式。这是在 jOOQ 2.4 (#1418) 中引入的,以防止用户意外使用小写模式名称的错误配置。该功能基于一个错误的假设,即区分大小写的用户是不可能的。它们当然是可能的(即使很少见),所以#1418 是错误的。我为这个问题创建了两个问题:
与此同时,您有一些可能的解决方法:
jOOQ 3.8 之前
你总是可以从 jooq-codegen 覆盖 JavaGenerator
并重新实现一些方法,包括 generatePackages()
和 generateRoutines()
为空。这样,相关代码就完全不会执行了。
当然,这意味着您不会得到任何生成的包和例程。
Post jOOQ 3.8
有一个新的配置选项,您可以在其中进行与上面相同的配置:
<configuration>
<generator>
<database>
<includeRoutines>false</includeRoutines>
<includePackages>false</includePackages>
...