解析器配置
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
SQL 解析器 API 附带多种设置来控制其行为。这些设置包括
-
parseAppendMissingTableReferences
:当投影表引用未在FROM
子句中显式列出时,支持 Teradata 样式的隐式连接。 -
parseDateFormat
:解析没有显式格式的日期格式化函数时自动应用的日期格式。 -
parseDialect
:解析器输入方言。此方言用于决定在无法从上下文解析的歧义情况下应应用哪些特定于供应商的语法。 -
parseIgnoreComments
:使用此标志,解析器可以忽略某些 RDBMS 将执行的部分。parseIgnoreCommentStart
和parseIgnoreCommentStop
标记之间的所有内容都将被忽略。 -
parseIgnoreCommentStart
:用于分隔 jOOQ 要忽略的部分的开始的标记。 理想情况下,此标记位于 SQL 注释内部。 -
parseIgnoreCommentStop
:用于分隔 jOOQ 要忽略的部分的结尾的标记。 理想情况下,此标记位于 SQL 注释内部。 -
parseIgnoreCommercialOnlyFeatures
:解析时忽略仅限商业的功能,以避免不必要的异常。 -
parseMetaDefaultExpressions
:指定org.jooq.Meta
实现是否应尝试解析DEFAULT
表达式,还是将它们保留为原始 SQL 字符串。 -
parseMetaViewSources
:指定org.jooq.Meta
实现是否应尝试解析视图源代码,还是将它们保留为原始 SQL 字符串。 -
parseNameCase
:指定名称大小写行为,具体取决于名称是否被引用。 -
parseNamedParamPrefix
:命名参数的前缀,默认为:
,例如:param
样式的名称。 -
parseRetainCommentsBetweenQueries
:是否保留Parser.parse()
中语句之间的注释,并将其解析为被忽略的查询。 jOOQ 目前不支持语句(包括过程语句)中的注释。 -
parseSearchPath
:在使用parseWithMetaLookups
时,用于查找非限定标识符的搜索路径。 大多数方言都支持搜索路径上的单个模式 (CURRENT_SCHEMA
)。 PostgreSQL 支持'search_path'
,它允许列出多个模式,以便用于查找非限定表、过程等。 -
parseSetCommands
:是否应解析或忽略 SET 命令。 -
parseTimestampFormat
:解析没有显式格式的时间戳格式化函数时自动应用的时间戳格式。 -
parseUnsupportedSyntax
:解析器可以解析 jOOQ 不支持的某些语法。 默认情况下,此类语法将被忽略。 如果您希望在此类情况下失败,请使用此标志。 -
parseUnknownFunctions
:解析器仅解析“已知”(对于 jOOQ)的内置函数,否则将失败。 此标志允许使用标准func_name(arg1, arg2, ...)
语法解析任何内置函数。 -
parseWithMetaLookups
:是否应使用org.jooq.Meta
查找元信息,例如模式、表、列、列类型等。
使用 parseIgnoreComments
功能的示例
-- What you execute /* [jooq ignore start] */ CREATE SCHEMA s1; SET SCHEMA s1; /* [jooq ignore stop] */ /* [jooq ignore start] */ -- /* [jooq ignore stop] */ CREATE SCHEMA s2; /* [jooq ignore start] */ -- /* [jooq ignore stop] */ SET SCHEMA s2; CREATE TABLE t (i INTEGER);
-- What the jOOQ parser sees /* */ /* */ CREATE SCHEMA s2; /* */ SET SCHEMA s2; CREATE TABLE t (i INTEGER);
示例配置
Settings settings = new Settings() .withParseDialect(SQLSERVER) // Defaults to DEFAULT .withParseWithMetaLookups(THROW_ON_FAILURE) // Defaults to OFF .withParseSearchPath( new ParseSearchSchemata().withSchema("PUBLIC"), new ParseSearchSchemata().withSchema("TEST")) .withParseUnsupportedSyntax(FAIL) // Defaults to IGNORE .withParseUnknownFunctions(IGNORE) // Defaults to FAIL .withParseIgnoreComments(true) // Defaults to false .withParseIgnoreCommentStart("<ignore>") // Defaults to "[jooq ignore start]" .withParseIgnoreCommentStop("</ignore>") // Defaults to "[jooq ignore stop]"
除了上述设置之外,还有一个强大的 解析器侦听器 SPI,称为 org.jooq.ParseListener
。
反馈
您对此页面有任何反馈吗? 我们很乐意听到!