diff --git a/build.gradle b/build.gradle index a690cef6b..90bbae31d 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ buildscript { plugins { id 'java' + id "com.vanniktech.maven.publish" version "latest.release" id 'maven-publish' id 'signing' @@ -62,16 +63,17 @@ def getVersion = { boolean considerSnapshot -> snapshot = "-SNAPSHOT" } - return patch != null - ? "${major}.${minor}.${patch}${snapshot}" - : "${major}.${minor}${snapshot}" + return "${major}.${minor}" + + (patch != null ? ".${patch}" : "") + + (build != null ? ".${build}" : "") + + snapshot } // for publishing a release, call Gradle with Environment Variable RELEASE: // RELEASE=true gradle JSQLParser:publish version = getVersion( !System.getenv("RELEASE") ) -group = 'com.github.jsqlparser' +group = 'com.manticore-projects.jsqlformatter' description = 'JSQLParser library' tasks.register('generateBuildInfo') { @@ -130,6 +132,7 @@ tasks.withType(Checkstyle).configureEach { repositories { gradlePluginPortal() + mavenLocal() mavenCentral() // JavaCC 8 Snapshots @@ -170,13 +173,13 @@ dependencies { xmlDoclet ('com.manticore-projects.tools:xml-doclet:+'){ changing = true } // enforce latest version of JavaCC - testImplementation('org.javacc:core:8.1.0-SNAPSHOT') { changing = true } - testImplementation('org.javacc.generator:java:8.1.0-SNAPSHOT') { changing = true } + testImplementation('org.javacc:core:8.1.1-SNAPSHOT') { changing = true } + testImplementation('org.javacc.generator:java:8.1.1-SNAPSHOT') { changing = true } jmh 'org.openjdk.jmh:jmh-core:1.37' jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' - javacc('org.javacc:core:8.1.0-SNAPSHOT') { changing = true } - javacc('org.javacc.generator:java:8.1.0-SNAPSHOT') { changing = true } + javacc('org.javacc:core:8.1.1-SNAPSHOT') { changing = true } + javacc('org.javacc.generator:java:8.1.1-SNAPSHOT') { changing = true } } configurations.configureEach { resolutionStrategy.eachDependency { DependencyResolveDetails details -> @@ -186,6 +189,10 @@ configurations.configureEach { } } } +configurations.javacc { + resolutionStrategy.force 'org.javacc:core:8.1.1-SNAPSHOT', + 'org.javacc.generator:java:8.1.1-SNAPSHOT' +} compileJavacc { arguments = [ @@ -198,82 +205,9 @@ compileJavacc { ] } -// Post-process the generated CCJSqlParserTokenManager.java to split large static -// array initializers into separate methods, preventing the method from -// exceeding the JVM's 64KB bytecode limit (which breaks ASM-based tools like sbt-assembly). -tasks.register('splitTokenManagerStaticInit') { - dependsOn(compileJavacc) - - def tokenManagerFile = layout.buildDirectory.file( - "generated/javacc/net/sf/jsqlparser/parser/CCJSqlParserTokenManager.java" - ) - - inputs.file(tokenManagerFile) - outputs.file(tokenManagerFile) - - doLast { - def file = tokenManagerFile.get().asFile - if (!file.exists()) { - throw new GradleException("CCJSqlParserTokenManager.java not found at ${file}") - } - def content = file.text - - // Pattern matches static final array field declarations with inline initialization. - // We extract large ones and move their initialization into separate methods. - def fieldsToExtract = [ - // [regex-safe field name, array type for method return] - ['stringLiterals', 'int[]'], - ['jjstrLiteralImages', 'String[]'], - ['jjmatchKinds', 'int[]'], - ['jjnewLexState', 'int[]'], - ] - - fieldsToExtract.each { entry -> - def fieldName = entry[0] - def arrayType = entry[1] - - // Match: = { ... }; - // The field declaration may use 'public' or 'private' and 'static final' - def pattern = ~"(?s)((?:public|private)\\s+static\\s+final\\s+${java.util.regex.Pattern.quote(arrayType)}\\s+${fieldName}\\s*=\\s*)\\{(.*?)\\};" - def matcher = pattern.matcher(content) - if (matcher.find()) { - def prefix = matcher.group(1) - def body = matcher.group(2) - def methodName = "_init_${fieldName}" - def replacement = "${prefix}${methodName}();\n" + - " private static ${arrayType} ${methodName}() { return new ${arrayType} {${body}}; }" - content = matcher.replaceFirst(java.util.regex.Matcher.quoteReplacement(replacement)) - logger.lifecycle("splitTokenManagerStaticInit: extracted ${fieldName} initialization into ${methodName}()") - } - } - - // Handle int[][] arrays separately (jjcompositeState, jjnextStateSet) - def arrayArrayFields = ['jjcompositeState', 'jjnextStateSet'] - arrayArrayFields.each { fieldName -> - def pattern = ~"(?s)(private\\s+static\\s+final\\s+int\\[\\]\\[\\]\\s+${fieldName}\\s*=\\s*)\\{(.*?)\\};" - def matcher = pattern.matcher(content) - if (matcher.find()) { - def prefix = matcher.group(1) - def body = matcher.group(2) - def methodName = "_init_${fieldName}" - def replacement = "${prefix}${methodName}();\n" + - " private static int[][] ${methodName}() { return new int[][] {${body}}; }" - content = matcher.replaceFirst(java.util.regex.Matcher.quoteReplacement(replacement)) - logger.lifecycle("splitTokenManagerStaticInit: extracted ${fieldName} initialization into ${methodName}()") - } - } - - file.text = content - } -} - -tasks.withType(JavaCompile).configureEach { - dependsOn('splitTokenManagerStaticInit') -} - java { withSourcesJar() - withJavadocJar() + // withJavadocJar() sourceCompatibility = '11' targetCompatibility = '11' @@ -676,85 +610,56 @@ publish { dependsOn(check, gitChangelogTask, renderRR, xslt, xmldoc) } -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'jsqlparser' +mavenPublishing { + publishToMavenCentral(true) + signAllPublications() - from components.java + coordinates(group, "jsqlparser", version) - versionMapping { - usage('java-api') { - fromResolutionOf('runtimeClasspath') - } - usage('java-runtime') { - fromResolutionResult() - } - } + pom { + name.set('JSQLParser library') + description.set('Parse SQL Statements into Abstract Syntax Trees (AST)') + url.set('https://github.com/JSQLParser/JSqlParser') - pom { - name.set('JSQLParser library') - description.set('Parse SQL Statements into Abstract Syntax Trees (AST)') - url.set('https://github.com/JSQLParser/JSqlParser') - - licenses { - license { - name.set('GNU Library or Lesser General Public License (LGPL) V2.1') - url.set('http://www.gnu.org/licenses/lgpl-2.1.html') - } - license { - name.set('The Apache Software License, Version 2.0') - url.set('http://www.apache.org/licenses/LICENSE-2.0.txt') - } - } - - developers { - developer { - id.set('twa') - name.set('Tobias Warneke') - email.set('t.warneke@gmx.net') - } - developer { - id.set('are') - name.set('Andreas Reichel') - email.set('andreas@manticore-projects.com') - } - } - - scm { - connection.set('scm:git:https://github.com/JSQLParser/JSqlParser.git') - developerConnection.set('scm:git:ssh://git@github.com:JSQLParser/JSqlParser.git') - url.set('https://github.com/JSQLParser/JSqlParser.git') - } + licenses { + license { + name.set('GNU Library or Lesser General Public License (LGPL) V2.1') + url.set('http://www.gnu.org/licenses/lgpl-2.1.html') + } + license { + name.set('The Apache Software License, Version 2.0') + url.set('http://www.apache.org/licenses/LICENSE-2.0.txt') } } - } - - repositories { - maven { - name = "ossrh" - def releasesRepoUrl = "https://central.sonatype.com/repository/maven-releases" - def snapshotsRepoUrl = "https://central.sonatype.com/repository/maven-snapshots/" - url(version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl) - credentials { - username = providers.environmentVariable("ossrhUsername").orNull - password = providers.environmentVariable("ossrhPassword").orNull + developers { + developer { + id.set('twa') + name.set('Tobias Warneke') + email.set('t.warneke@gmx.net') + } + developer { + id.set('are') + name.set('Andreas Reichel') + email.set('andreas@manticore-projects.com') } } + + scm { + connection.set('scm:git:https://github.com/JSQLParser/JSqlParser.git') + developerConnection.set('scm:git:ssh://git@github.com:JSQLParser/JSqlParser.git') + url.set('https://github.com/JSQLParser/JSqlParser.git') + } } } +// Fix signing task dependencies +tasks.withType(AbstractPublishToMaven).configureEach { + dependsOn(tasks.withType(Sign)) +} signing { - //def signingKey = findProperty("signingKey") - //def signingPassword = findProperty("signingPassword") - //useInMemoryPgpKeys(signingKey, signingPassword) - - // don't sign SNAPSHOTS - if (!version.endsWith('SNAPSHOT')) { - sign publishing.publications.mavenJava - } + required { !version.endsWith("SNAPSHOT") && gradle.taskGraph.hasTask("publish") } } tasks.withType(JavaCompile).configureEach { diff --git a/src/site/sphinx/javadoc_snapshot.rst b/src/site/sphinx/javadoc_snapshot.rst new file mode 100644 index 000000000..c5c1dce2b --- /dev/null +++ b/src/site/sphinx/javadoc_snapshot.rst @@ -0,0 +1,8 @@ +####################################################################### +JSQLParser Java API Snapshot +####################################################################### + +Base Package: net.sf.jsqlparser + +.. javadoc-api:: javadoc_snapshot.xml + :public-only: \ No newline at end of file diff --git a/src/site/sphinx/javadoc_stable.rst b/src/site/sphinx/javadoc_stable.rst new file mode 100644 index 000000000..d9980a745 --- /dev/null +++ b/src/site/sphinx/javadoc_stable.rst @@ -0,0 +1,8 @@ +####################################################################### +JSQLParser Java API Stable +####################################################################### + +Base Package: net.sf.jsqlparser + +.. javadoc-api:: javadoc_stable.xml + :public-only: \ No newline at end of file diff --git a/src/site/sphinx/syntax_stable.rst b/src/site/sphinx/syntax_stable.rst index 92839aa66..29cb15c1c 100644 --- a/src/site/sphinx/syntax_stable.rst +++ b/src/site/sphinx/syntax_stable.rst @@ -13,7 +13,7 @@ NonReservedWord .. raw:: html - + @@ -210,528 +210,530 @@ NonReservedWord ENCLOSED EMIT - - ENABLE - - ENCODING - - ENCRYPTION - - END - - ESCAPED - - ENFORCED - - ENGINE - - ERROR - - ESCAPE - - EXA - - EXCHANGE - - EXCLUDE - - EXCLUDING - - EXCLUSIVE - - EXEC - - EXECUTE - - EXPLAIN - - EXPLICIT - - EXTENDED - - EXTRACT - - EXPORT - - K_ISOLATION - FILTER - - FIELDS - - FIRST - - FLUSH - - FOLLOWING - - FORMAT - - FULLTEXT - - FUNCTION - - GRANT - - GROUP_CONCAT - - GUARD - - HASH - - HIGH - - HIGH_PRIORITY - - HISTORY - - HOPPING - - IDENTIFIED - - IDENTITY - - INCLUDE - - INCLUDE_NULL_VALUES - - INCLUDING - - INCREMENT - - INDEX - - INFORMATION - - INSERT - - INTERLEAVE - - INTERPRET - - INVALIDATE - - INVERSE - - INVISIBLE - - ISNULL - - JDBC - - JSON - - JSON_OBJECT - - JSON_OBJECTAGG - - JSON_ARRAY - - JSON_ARRAYAGG - - KEEP - - KEY_BLOCK_SIZE - - KEY - - KEYS - - KILL - - FN - - LAST - - LEADING - - LESS - - LEVEL + + EMPTY + + ENABLE + + ENCODING + + ENCRYPTION + + END + + ESCAPED + + ENFORCED + + ENGINE + + ERROR + + ESCAPE + + EXA + + EXCHANGE + + EXCLUDE + + EXCLUDING + + EXCLUSIVE + + EXEC + + EXECUTE + + EXPLAIN + + EXPLICIT + + EXTENDED + + EXTRACT + + EXPORT + + K_ISOLATION + FILTER + + FIELDS + + FIRST + + FLUSH + + FOLLOWING + + FORMAT + + FULLTEXT + + FUNCTION + + GRANT + + GROUP_CONCAT + + GUARD + + HASH + + HIGH + + HIGH_PRIORITY + + HISTORY + + HOPPING + + IDENTIFIED + + IDENTITY + + INCLUDE + + INCLUDE_NULL_VALUES + + INCLUDING + + INCREMENT + + INDEX + + INFORMATION + + INSERT + + INTERLEAVE + + INTERPRET + + INVALIDATE + + INVERSE + + INVISIBLE + + ISNULL + + JDBC + + JSON + + JSON_OBJECT + + JSON_OBJECTAGG + + JSON_ARRAY + + JSON_ARRAYAGG + + KEEP + + KEY_BLOCK_SIZE + + KEY + + KEYS + + KILL + + FN + + LAST + + LEADING + + LESS - LINES - - LOCAL - - LOCK - - LOCKED - - LINK - - LOG - - LOOP - - LOW - - LOW_PRIORITY - - LTRIM - - MATCH - - MATCH_ANY - - MATCH_ALL - - MATCH_PHRASE - - MATCH_PHRASE_PREFIX - - MATCH_REGEXP - - MATCHED - - MATERIALIZED - - MAX - - MAXVALUE - - MEMBER - - MERGE - - MIN - - MINVALUE - - MODE - - MODIFY - - MOVEMENT - - NAMES - - NAME - - NEVER - - NEXT - - K_NEXTVAL - NO - - NOCACHE - - NOKEEP - - NOLOCK - - NOMAXVALUE - - NOMINVALUE - - NONE - - NOORDER - - NOTHING + LEVEL + + LINES + + LOCAL + + LOCK + + LOCKED + + LINK + + LOG + + LOOP + + LOW + + LOW_PRIORITY + + LTRIM + + MATCH + + MATCH_ANY + + MATCH_ALL + + MATCH_PHRASE + + MATCH_PHRASE_PREFIX + + MATCH_REGEXP + + MATCHED + + MATERIALIZED + + MAX + + MAXVALUE + + MEMBER + + MERGE + + MIN + + MINVALUE + + MODE + + MODIFY + + MOVEMENT + + NAMES + + NAME + + NEVER + + NEXT + + K_NEXTVAL + NO + + NOCACHE + + NOKEEP + + NOLOCK + + NOMAXVALUE + + NOMINVALUE + + NONE + + NOORDER - NOTNULL - - NOVALIDATE - - NULLS - - NOWAIT - - OF - - OFF - - OPTIONALLY - - OPEN - - ORA - - ORDINALITY - - OUTFILE - - OVER - - OVERFLOW - - OVERLAPS - - OVERRIDING - - OVERWRITE - - PADDING - - PARALLEL - - PARENT + NOTHING + + NOTNULL + + NOVALIDATE + + NULLS + + NOWAIT + + OF + + OFF + + OPTIONALLY + + OPEN + + ORA + + ORDINALITY + + OUTFILE + + OVER + + OVERFLOW + + OVERLAPS + + OVERRIDING + + OVERWRITE + + PADDING + + PARALLEL - PARSER - - PARTITION - - PARTITIONING - - PATH - - PERCENT + PARENT + + PARSER + + PARTITION + + PARTITIONING + + PATH - PLACING - - PLAN + PERCENT + + PLACING - PLUS - - PRECEDING - - PRIMARY - - POLICY - - PURGE - - QUERY - - QUICK - - QUIESCE - - RANGE - - RAW + PLAN + + PLUS + + PRECEDING + + PRIMARY + + POLICY + + PURGE + + QUERY + + QUICK + + QUIESCE + + RANGE - READ - - REBUILD - - RECYCLEBIN - - RECURSIVE - - REFERENCES - - REFRESH - - REGEXP - - REJECT - - RESPECT - - RLIKE - - REGEXP_LIKE - - REGISTER - - REMOTE + RAW + + READ + + REBUILD + + RECYCLEBIN + + RECURSIVE + + REFERENCES + + REFRESH + + REGEXP + + REJECT + + RESPECT + + RLIKE + + REGEXP_LIKE + + REGISTER - REMOVE + REMOTE - RENAME - - REORGANIZE - - REPAIR - - REPEATABLE - - REPLACE - - RESET - - RESTART - - RESUMABLE - - RESUME - - RESTRICT - - RESTRICTED - - RETURN - - ROLLBACK - - ROLLUP - - ROOT - - ROW - - ROWS + REMOVE + + RENAME + + REORGANIZE + + REPAIR + + REPEATABLE + + REPLACE + + RESET + + RESTART + + RESUMABLE + + RESUME + + RESTRICT + + RESTRICTED + + RETURN + + ROLLBACK + + ROLLUP + + ROOT + + ROW - RTRIM - - SAFE_CAST - - SAFE_CONVERT - - SAVEPOINT - - SCHEMA - - SEARCH + ROWS + + RTRIM + + SAFE_CAST + + SAFE_CONVERT + + SAVEPOINT + + SCHEMA - SECURE - - SECURITY - - SEED - - SEQUENCE - - SEPARATOR - - SESSION - - SETS - - SHOW - - SHUTDOWN - - SHARE - - SIBLINGS - - SIMILAR - - SIZE - - SKIP - - SPATIAL - - STARTING - - STORED + SEARCH + + SECURE + + SECURITY + + SEED + + SEQUENCE + + SEPARATOR + + SESSION + + SETS + + SHOW + + SHUTDOWN + + SHARE + + SIBLINGS + + SIMILAR + + SIZE + + SKIP + + SPATIAL + + STARTING - STREAM - - STRICT - - STRING - - STRUCT - - SUMMARIZE - - SUSPEND - - SWITCH - - SYMMETRIC - - SYNONYM - - SYSTEM - - SYSTEM_TIME - - SYSTEM_TIMESTAMP - - SYSTEM_VERSION - - TABLE - - TABLESPACE - - TERMINATED - - TRIGGER - - THEN + STORED + + STREAM + + STRICT + + STRING + + STRUCT + + SUMMARIZE + + SUSPEND + + SWITCH + + SYMMETRIC + + SYNONYM + + SYSTEM + + SYSTEM_TIME + + SYSTEM_TIMESTAMP + + SYSTEM_VERSION + + TABLE + + TABLESPACE + + TERMINATED + + TRIGGER - TEMP - - K_TEXT_LITERAL - TEMPORARY - - THAN - - K_TIME_KEY_EXPR - TIMEOUT - - TO - - TRIM - - TRUNCATE - - TRY_CAST - - TRY_CONVERT - - TUMBLING - - TYPE - - UNLIMITED + THEN + + TEMP + + K_TEXT_LITERAL + TEMPORARY + + THAN + + K_TIME_KEY_EXPR + TIMEOUT + + TO + + TRIM + + TRUNCATE + + TRY_CAST + + TRY_CONVERT + + TUMBLING + + TYPE - UNLOGGED - - UPDATE + UNLIMITED + + UNLOGGED - UPSERT - - UNQIESCE - - USER - - SIGNED - - K_STRING_FUNCTION_NAME - UNSIGNED - - VALIDATE - - VALIDATION - - VERBOSE + UPDATE + + UPSERT + + UNQIESCE + + USER + + SIGNED + + K_STRING_FUNCTION_NAME + UNSIGNED + + VALIDATE + + VALIDATION - VERSION - - VIEW - - VISIBLE - - VOLATILE - - CONCURRENTLY - - WAIT - - WITH TIES - - WITHIN - - WITHOUT - - WITHOUT_ARRAY_WRAPPER - - WORK - - XML - - XMLAGG - - XMLDATA - - XMLSCHEMA - - XMLTEXT - - XSINIL - - YAML - - YES - - ZONE - + VERBOSE + + VERSION + + VIEW + + VISIBLE + + VOLATILE + + CONCURRENTLY + + WAIT + + WITH TIES + + WITHIN + + WITHOUT + + WITHOUT_ARRAY_WRAPPER + + WORK + + XML + + XMLAGG + + XMLDATA + + XMLSCHEMA + + XMLTEXT + + XSINIL + + YAML + + YES + + ZONE +
@@ -833,6 +835,7 @@ NonReservedWord
           | 'ELEMENTS'
           | 'ENCLOSED'
           | 'EMIT'
+
           | 'EMPTY'
           | 'ENABLE'
           | 'ENCODING'
           | 'ENCRYPTION'
@@ -10026,7 +10029,7 @@ JsonKeyword
         ::= S_IDENTIFIER
+ ====================================================================================================================== @@ -10087,27 +10090,30 @@ JsonValueOnResponseBehavior .. raw:: html - + ERROR NULL - - DEFAULT - - Expression + + EMPTY + + DEFAULT + + Expression
         ::= 'ERROR'
           | 'NULL'
+
           | 'EMPTY'
           | 'DEFAULT' Expression
+ ====================================================================================================================== @@ -10117,28 +10123,35 @@ JsonQueryOnResponseBehavior .. raw:: html - + ERROR - NULL - - S_IDENTIFIER - ARRAY - - JsonKeyword - -
+ NULL + + TRUE + + FALSE + + EMPTY + + ARRAY + + JsonKeyword + +
         ::= 'ERROR'
           | 'NULL'
-
           | S_IDENTIFIER ( 'ARRAY' | JsonKeyword )
+
           | 'TRUE'
+
           | 'FALSE'
+
           | 'EMPTY' ( 'ARRAY' | JsonKeyword )?
Referenced by: -
+
====================================================================================================================== @@ -10239,11 +10252,11 @@ JsonValueBody RETURNING ColDataType - - JsonValueOnResponseBehavior - ON - - JsonKeyword + + JsonValueOnResponseBehavior + ON + + EMPTY JsonValueOnResponseBehavior ON @@ -10251,12 +10264,12 @@ JsonValueBody ERROR ) - +
-
         ::= '(' JsonValueOrQueryInputExpression ',' Expression ( JsonKeyword Expression ( ',' Expression )* )? ( 'RETURNING' ColDataType )? ( JsonValueOnResponseBehavior 'ON' JsonKeyword )? ( JsonValueOnResponseBehavior 'ON' 'ERROR' )? ')'
+
         ::= '(' JsonValueOrQueryInputExpression ',' Expression ( JsonKeyword Expression ( ',' Expression )* )? ( 'RETURNING' ColDataType )? ( JsonValueOnResponseBehavior 'ON' 'EMPTY' )? ( JsonValueOnResponseBehavior 'ON' 'ERROR' )? ')'
Referenced by:
@@ -10269,7 +10282,7 @@ JsonQueryBody .. raw:: html - + @@ -10314,25 +10327,25 @@ JsonQueryBody STRING JsonQueryOnResponseBehavior - ON - - JsonKeyword - - JsonQueryOnResponseBehavior - ON - - ERROR + ON + + EMPTY + + JsonQueryOnResponseBehavior + ON + + ERROR Expression , - - ) - - -
+ + ) + + +
-
         ::= '(' JsonValueOrQueryInputExpression ',' Expression ( JsonKeyword Expression ( ',' Expression )* )? ( 'RETURNING' ColDataType ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? )? ( ( 'WITHOUT' | 'WITH' S_IDENTIFIER? ) 'ARRAY'? JsonKeyword )? ( ( 'KEEP' | JsonKeyword ) JsonKeyword ( 'ON' JsonKeyword 'STRING' )? )? ( JsonQueryOnResponseBehavior 'ON' JsonKeyword )? ( JsonQueryOnResponseBehavior 'ON' 'ERROR' )? ( ',' Expression ( 'RETURNING' ColDataType ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? )? ( ( 'WITHOUT' | 'WITH' S_IDENTIFIER? ) 'ARRAY'? JsonKeyword )? ( ( 'KEEP' | JsonKeyword ) JsonKeyword ( 'ON' JsonKeyword 'STRING' )? )? ( JsonQueryOnResponseBehavior 'ON' JsonKeyword )? ( JsonQueryOnResponseBehavior 'ON' 'ERROR' )? )* ')'
+
         ::= '(' JsonValueOrQueryInputExpression ',' Expression ( JsonKeyword Expression ( ',' Expression )* )? ( 'RETURNING' ColDataType ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? )? ( ( 'WITHOUT' | 'WITH' S_IDENTIFIER? ) 'ARRAY'? JsonKeyword )? ( ( 'KEEP' | JsonKeyword ) JsonKeyword ( 'ON' JsonKeyword 'STRING' )? )? ( JsonQueryOnResponseBehavior 'ON' 'EMPTY' )? ( JsonQueryOnResponseBehavior 'ON' 'ERROR' )? ( ',' Expression ( 'RETURNING' ColDataType ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? )? ( ( 'WITHOUT' | 'WITH' S_IDENTIFIER? ) 'ARRAY'? JsonKeyword )? ( ( 'KEEP' | JsonKeyword ) JsonKeyword ( 'ON' JsonKeyword 'STRING' )? )? ( JsonQueryOnResponseBehavior 'ON' 'EMPTY' )? ( JsonQueryOnResponseBehavior 'ON' 'ERROR' )? )* ')'
Referenced by:
@@ -11306,29 +11319,35 @@ JsonTableOnEmptyBehavior .. raw:: html - + ERROR NULL - - DEFAULT - - Expression - - S_IDENTIFIER - - JsonKeyword - ARRAY - + + TRUE + + FALSE + + DEFAULT + + Expression + + S_IDENTIFIER + + JsonKeyword + ARRAY +
         ::= 'ERROR'
           | 'NULL'
+
           | 'TRUE'
+
           | 'FALSE'
           | 'DEFAULT' Expression
           | S_IDENTIFIER ( JsonKeyword | 'ARRAY' )?
@@ -11403,7 +11422,7 @@ JsonTableColumnDefinition .. raw:: html - + @@ -11418,42 +11437,54 @@ JsonTableColumnDefinition JsonTableColumnsClause RelObjectName - FOR - - JsonKeyword - - ColDataType - FORMAT - - JSON - - ENCODING - - JsonEncoding - PATH - - Expression - - JsonTableWrapperClause - - JsonTableQuotesClause - - JsonTableOnEmptyBehavior - ON - - JsonKeyword - - JsonValueOnResponseBehavior - ON - - ERROR - - -
+ FOR + + ORDINALITY + + ColDataType + FORMAT + + JSON + + ENCODING + + JsonEncoding + + JsonKeyword + + JsonKeyword + EXISTS + + JsonTableWrapperClause + PATH + + Expression + + JsonTableWrapperClause + + JsonTableQuotesClause + + JsonTableOnEmptyBehavior + ON + + EMPTY + + JsonQueryOnResponseBehavior + ON + + ERROR + + JsonTableOnEmptyBehavior + ON + + EMPTY + + +
         ::= JsonKeyword 'PATH'? Expression ( 'AS' RelObjectName )? JsonTableColumnsClause
-
           | RelObjectName ( 'FOR' JsonKeyword | ColDataType ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? ( 'PATH' Expression )? JsonTableWrapperClause? JsonTableQuotesClause? ( JsonTableOnEmptyBehavior 'ON' JsonKeyword )? ( JsonValueOnResponseBehavior 'ON' 'ERROR' )? )
+
           | RelObjectName ( 'FOR' 'ORDINALITY' | ColDataType? ( 'FORMAT' 'JSON' ( 'ENCODING' JsonEncoding )? )? ( JsonKeyword JsonKeyword )? 'EXISTS'? JsonTableWrapperClause? ( 'PATH' Expression )? JsonTableWrapperClause? JsonTableQuotesClause? ( JsonTableOnEmptyBehavior 'ON' 'EMPTY' )? ( JsonQueryOnResponseBehavior 'ON' 'ERROR' )? ( JsonTableOnEmptyBehavior 'ON' 'EMPTY' )? )
Referenced by:
@@ -11589,22 +11620,94 @@ JsonTableOnErrorClause .. raw:: html - + - ERROR - - S_IDENTIFIER - ON - - ERROR - - -
+ ERROR + + EMPTY + + TRUE + + FALSE + + NULL + + ON + + ERROR + + +
-
         ::= ( 'ERROR' | S_IDENTIFIER ) 'ON' 'ERROR'
+
         ::= ( 'ERROR' | 'EMPTY' | 'TRUE' | 'FALSE' | 'NULL' ) 'ON' 'ERROR'
+
+ Referenced by: +
+ + +====================================================================================================================== +JsonTableOnEmptyClause +====================================================================================================================== + + +.. raw:: html + + + + + + ERROR + + EMPTY + + TRUE + + FALSE + + NULL + + ON + + EMPTY + + +
+ + +
         ::= ( 'ERROR' | 'EMPTY' | 'TRUE' | 'FALSE' | 'NULL' ) 'ON' 'EMPTY'
+
+ Referenced by: +
+ + +====================================================================================================================== +JsonTableParsingTypeClause +====================================================================================================================== + + +.. raw:: html + + + + + + TYPE + + ( + + STRICT + + JsonKeyword + ) + + +
+ + +
         ::= 'TYPE' '(' ( 'STRICT' | JsonKeyword ) ')'
Referenced by:
@@ -11617,37 +11720,47 @@ JsonTableBody .. raw:: html - - - - - ( - - Expression - , - - Expression - AS - - RelObjectName - - JsonKeyword - - JsonTablePassingClause - , - - JsonTableColumnsClause - - JsonTablePlanClause - - JsonTableOnErrorClause - ) - - -
+ + + + + ( + + Expression + FORMAT + + JSON + + , + + Expression + AS + + RelObjectName + + JsonKeyword + + JsonTablePassingClause + , + + JsonTableOnErrorClause + + JsonTableParsingTypeClause + + JsonTableOnEmptyClause + + JsonTableColumnsClause + + JsonTablePlanClause + + JsonTableOnErrorClause + ) + + +
- +
Referenced by:
@@ -12117,7 +12230,7 @@ DataType .. raw:: html - + @@ -12171,11 +12284,15 @@ DataType S_LONG MAX - - , - - S_LONG - ) + + BYTE + + CHAR + + , + + S_LONG + ) K_TEXT_LITERAL ARRAY @@ -12184,15 +12301,15 @@ DataType ColDataType > - - -
+ + +
           | 'ARRAY' '<' ColDataType '>'
           | ( K_DATETIMELITERAL | DT_ZONE | DATA_TYPE | 'SIGNED' | 'UNSIGNED' | 'CHARACTER' | 'BIT' | 'BYTES' | 'BINARY' | 'BOOLEAN' | 'CHAR' | 'JSON' | 'STRING' ) ( DATA_TYPE | 'SIGNED' | 'UNSIGNED' | 'CHARACTER' | 'BIT' | 'BYTES' | 'BINARY' | 'BOOLEAN' | - 'CHAR' | 'JSON' | 'STRING' )* ( '(' ( S_LONG | 'MAX' ) ( ',' S_LONG )? ')' )?
+ 'CHAR' | 'JSON' | 'STRING' )* ( '(' ( S_LONG | 'MAX' ) ( 'BYTE' | 'CHAR' )? ( ',' S_LONG )? ')' )?
Referenced by:
@@ -16578,7 +16695,7 @@ S_IDENTIFIER
           | '$' ( PART_LETTER_NO_DOLLAR PART_LETTER* )?
+
======================================================================================================================