Skip to content

Commit f7ef063

Browse files
committed
Merge origin/master
2 parents afc7bdb + 6b35e37 commit f7ef063

File tree

171 files changed

+5933
-707
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+5933
-707
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,8 @@ jobs:
2626
- name: Run Gradle Check
2727
run: ./gradlew check
2828

29-
maven_verify:
30-
needs: gradle_check
31-
runs-on: ubuntu-latest
32-
steps:
33-
- uses: actions/checkout@main
34-
with:
35-
fetch-depth: 0
36-
- name: Set up JDK 17
37-
uses: actions/setup-java@main
38-
with:
39-
java-version: '17'
40-
distribution: 'temurin'
41-
cache: maven
42-
server-id: sonatype-nexus-snapshots
43-
server-username: MAVEN_USERNAME
44-
server-password: MAVEN_PASSWORD
45-
- name: Build with Maven
46-
run: mvn -B verify --file pom.xml -DdisableXmlReport=true -Djacoco.skip=true -Dpmd.skip=true
47-
env:
48-
MAVEN_USERNAME: ${{ secrets.OSSRHUSERNAME }}
49-
MAVEN_PASSWORD: ${{ secrets.OSSRHPASSWORD }}
50-
5129
gradle_publish:
52-
needs: maven_verify
30+
needs: gradle_check
5331
runs-on: ubuntu-latest
5432
steps:
5533
- uses: actions/checkout@main

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# [JSqlParser 5.2 Website](https://jsqlparser.github.io/JSqlParser) <img src="src/site/sphinx/_images/logo-no-background.svg" alt="drawing" width="200" align="right"/>
1+
# [JSqlParser 5.3 Website](https://jsqlparser.github.io/JSqlParser) <img src="src/site/sphinx/_images/logo-no-background.svg" alt="drawing" width="200" align="right"/>
22

33
[![CI](https://github.com/JSQLParser/JSqlParser/actions/workflows/ci.yml/badge.svg)](https://github.com/JSQLParser/JSqlParser/actions/workflows/ci.yml)
44
[![Coverage Status](https://coveralls.io/repos/JSQLParser/JSqlParser/badge.svg?branch=master)](https://coveralls.io/r/JSQLParser/JSqlParser?branch=master)
@@ -69,16 +69,18 @@ JSQLParser-4.9 was the last JDK8 compatible version. JSQLParser-5.0 and later de
6969

7070
Building JSQLParser-5.1 and newer with Gradle will depend on a JDK17 toolchain due to the used plugins.
7171

72+
JSQLParser-5.4 Snapshot and later use JavaCC-8 Snapshots for generating the parser.
73+
7274
## Performance
7375

7476
Unfortunately the released JSQLParser-5.2 shows a performance deterioration caused by commit [30cf5d7](https://github.com/JSQLParser/JSqlParser/commit/30cf5d7b930ae0a076f49deb5cc841d39e62b3dc) related to `FunctionAllColumns()`.
75-
This has been resolved in JSQLParser 5.3-SNAPSHOT and JMH benchmarks have been added to avoid such regressions in the future. Further all `LOOKAHEADS` have been revised one by one, and we have gained back a very good performance of the Parser.
77+
This has been resolved in JSQLParser 5.3-SNAPSHOT and JMH benchmarks have been added to avoid such regressions in the future. Further all `LOOKAHEAD` have been revised one by one, and we have gained back a very good performance of the Parser.
7678

7779
```text
78-
Benchmark (version) Mode Cnt Score Error Units
79-
JSQLParserBenchmark.parseSQLStatements latest avgt 30 78.287 ± 4.730 ms/op <-- `FunctionAllColumns()` disabled
80-
JSQLParserBenchmark.parseSQLStatements 5.2 avgt 30 400.876 ± 8.291 ms/op
81-
JSQLParserBenchmark.parseSQLStatements 5.1 avgt 30 85.731 ± 1.288 ms/op
80+
Benchmark (version) Mode Cnt Score Error Units
81+
JSQLParserBenchmark.parseSQLStatements latest avgt 15 82.695 ± 2.841 ms/op
82+
JSQLParserBenchmark.parseSQLStatements 5.3 avgt 15 84.687 ± 3.321 ms/op
83+
JSQLParserBenchmark.parseSQLStatements 5.1 avgt 15 86.592 ± 5.781 ms/op
8284
```
8385

8486
## [Supported Grammar and Syntax](https://jsqlparser.github.io/JSqlParser/syntax.html)

build.gradle

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import com.nwalsh.gradle.saxon.SaxonXsltTask
33

44
buildscript {
55
dependencies {
6-
classpath group: 'net.sf.saxon', name: 'Saxon-HE', version: '12.5'
6+
classpath group: 'net.sf.saxon', name: 'Saxon-HE', version: 'latest.release'
77
}
88
}
99

@@ -74,12 +74,11 @@ description = 'JSQLParser library'
7474

7575
repositories {
7676
gradlePluginPortal()
77-
mavenLocal()
7877
mavenCentral()
7978

80-
// Sonatype OSSRH
79+
// JavaCC 8 Snapshots
8180
maven {
82-
url = uri('https://s01.oss.sonatype.org/content/repositories/snapshots/')
81+
url = uri('https://central.sonatype.com/repository/maven-snapshots/')
8382
}
8483

8584
maven { url "https://dev.saxonica.com/maven" }
@@ -104,21 +103,31 @@ dependencies {
104103
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.11.4'
105104

106105
// https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
107-
testImplementation 'org.mockito:mockito-junit-jupiter:+'
106+
testImplementation 'org.mockito:mockito-junit-jupiter:5.18.0'
108107

109108
// Performance Benchmark
110109
testImplementation 'org.openjdk.jmh:jmh-core:+'
111110
testImplementation 'org.openjdk.jmh:jmh-generator-annprocess:+'
112111

113112
// Java Doc in XML Format
114-
xmlDoclet 'com.manticore-projects.tools:xml-doclet:+'
113+
xmlDoclet 'com.manticore-projects.tools:xml-doclet:2.+'
115114

116115
// enforce latest version of JavaCC
117-
testImplementation 'net.java.dev.javacc:javacc:+'
118-
javacc 'net.java.dev.javacc:javacc:+'
116+
testImplementation('org.javacc:core:8.1.0-SNAPSHOT') { changing = true }
117+
testImplementation('org.javacc.generator:java:8.1.0-SNAPSHOT') { changing = true }
119118

120119
jmh 'org.openjdk.jmh:jmh-core:1.37'
121120
jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
121+
javacc('org.javacc:core:8.1.0-SNAPSHOT') { changing = true }
122+
javacc('org.javacc.generator:java:8.1.0-SNAPSHOT') { changing = true }
123+
}
124+
configurations.configureEach {
125+
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
126+
if (details.requested.group in ['org.javacc:core', 'org.javacc.generator']) {
127+
// Check for updates every build
128+
resolutionStrategy.cacheChangingModulesFor 30, 'seconds'
129+
}
130+
}
122131
}
123132

124133
compileJavacc {
@@ -310,6 +319,7 @@ pmd {
310319
pmdMain {
311320
excludes = [
312321
"build/generated/*"
322+
, "**/net/sf/jsqlparser/parser/SimpleCharStream.java"
313323
]
314324
}
315325
}
@@ -319,6 +329,12 @@ checkstyle {
319329
configFile = rootProject.file('config/checkstyle/checkstyle.xml')
320330
}
321331

332+
tasks.named('checkstyleMain') {
333+
source = source.filter {
334+
!it.absolutePath.contains('net/sf/jsqlparser/parser/SimpleCharStream.java')
335+
}
336+
}
337+
322338
spotless {
323339
// optional: limit format enforcement to just the files changed by this feature branch
324340
ratchetFrom 'origin/master'
@@ -448,15 +464,15 @@ tasks.register('updateKeywords', JavaExec) {
448464
dependsOn(compileJava)
449465
}
450466

451-
task xslt(type: SaxonXsltTask) {
467+
tasks.register('xslt', SaxonXsltTask) {
452468
def outFile = version.endsWith("-SNAPSHOT")
453-
? file("src/site/sphinx/syntax_snapshot.rst")
454-
: file("src/site/sphinx/syntax_stable.rst")
469+
? file("src/site/sphinx/syntax_snapshot.rst")
470+
: file("src/site/sphinx/syntax_stable.rst")
455471

456472
dependsOn(renderRR)
457473
stylesheet file('src/main/resources/rr/xhtml2rst.xsl')
458474

459-
parameters (
475+
parameters(
460476
"withFloatingToc": System.getenv().getOrDefault("FLOATING_TOC", "true"),
461477
"isSnapshot": Boolean.toString(version.endsWith("-SNAPSHOT"))
462478
)
@@ -513,7 +529,7 @@ publish {
513529

514530
publishing {
515531
publications {
516-
create("mavenJava", MavenPublication) {
532+
mavenJava(MavenPublication) {
517533
artifactId = 'jsqlparser'
518534

519535
from components.java
@@ -568,8 +584,8 @@ publishing {
568584
repositories {
569585
maven {
570586
name = "ossrh"
571-
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
572-
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
587+
def releasesRepoUrl = "https://central.sonatype.com/repository/maven-releases"
588+
def snapshotsRepoUrl = "https://central.sonatype.com/repository/maven-snapshots/"
573589
url(version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl)
574590

575591
credentials {
@@ -637,8 +653,8 @@ check {
637653

638654
jmh {
639655
includes = ['.*JSQLParserBenchmark.*']
640-
warmupIterations = 3
656+
warmupIterations = 2
641657
fork = 3
642-
iterations = 10
658+
iterations = 5
643659
timeOnIteration = '1s'
644660
}

pom.xml

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,37 @@
2424
</license>
2525
</licenses>
2626

27+
<repositories>
28+
<repository>
29+
<id>javacc8-snapshots</id>
30+
<snapshots>
31+
<enabled>true</enabled>
32+
</snapshots>
33+
<releases><enabled>false</enabled></releases>
34+
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
35+
</repository>
36+
<repository>
37+
<id>ossrh-snapshots</id>
38+
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
39+
<snapshots><enabled>true</enabled></snapshots>
40+
<releases><enabled>false</enabled></releases>
41+
</repository>
42+
</repositories>
43+
2744
<dependencies>
2845
<!-- needed for parsing the Keywords via JTree in ParserKeywordsUtils -->
2946
<dependency>
30-
<groupId>net.java.dev.javacc</groupId>
31-
<artifactId>javacc</artifactId>
32-
<version>7.0.13</version>
47+
<groupId>org.javacc</groupId>
48+
<artifactId>core</artifactId>
49+
<version>8.1.0-SNAPSHOT</version>
50+
<type>pom</type>
51+
<scope>test</scope>
52+
</dependency>
53+
<dependency>
54+
<groupId>org.javacc.generator</groupId>
55+
<artifactId>java</artifactId>
56+
<version>8.1.0-SNAPSHOT</version>
57+
<type>pom</type>
3358
<scope>test</scope>
3459
</dependency>
3560
<dependency>
@@ -111,11 +136,13 @@
111136
<distributionManagement>
112137
<repository>
113138
<id>sonatype-nexus-staging</id>
114-
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
139+
<url>https://central.sonatype.com/repository/maven-releases</url>
115140
</repository>
116141
<snapshotRepository>
117-
<id>sonatype-nexus-snapshots</id>
118-
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
142+
<id>sonatype-nexus-snapshots</id>
143+
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
144+
<releases><enabled>false</enabled></releases>
145+
<snapshots><enabled>true</enabled></snapshots>
119146
</snapshotRepository>
120147
</distributionManagement>
121148
-->
@@ -158,6 +185,7 @@
158185
<excludes>
159186
<exclude>**/*Bean.java</exclude>
160187
<exclude>**/generated/*.java</exclude>
188+
<exclude>**/net/sf/jsqlparser/parser/SimpleCharStream.java</exclude>
161189
</excludes>
162190
<excludeRoots>
163191
<excludeRoot>target/generated-sources</excludeRoot>
@@ -242,17 +270,20 @@
242270
<goal>jjtree-javacc</goal>
243271
</goals>
244272
<configuration>
245-
<grammarEncoding>UTF-8</grammarEncoding>
246-
<isStatic>false</isStatic>
247-
<jdkVersion>1.8</jdkVersion>
273+
<codeGenerator>java</codeGenerator>
248274
</configuration>
249275
</execution>
250276
</executions>
251277
<dependencies>
252278
<dependency>
253-
<groupId>net.java.dev.javacc</groupId>
254-
<artifactId>javacc</artifactId>
255-
<version>[7.0.13,8)</version>
279+
<groupId>org.javacc.generator</groupId>
280+
<artifactId>java</artifactId>
281+
<version>8.1.0-SNAPSHOT</version>
282+
</dependency>
283+
<dependency>
284+
<groupId>org.javacc</groupId>
285+
<artifactId>core</artifactId>
286+
<version>8.1.0-SNAPSHOT</version>
256287
</dependency>
257288
</dependencies>
258289
</plugin>
@@ -571,7 +602,7 @@
571602
<logViolationsToConsole>true</logViolationsToConsole>
572603
<includeTestSourceDirectory>true</includeTestSourceDirectory>
573604
<sourceDirectories>${project.build.sourceDirectory}</sourceDirectories>
574-
<excludes>**/module-info.java</excludes>
605+
<excludes>**/module-info.java,**/net/sf/jsqlparser/parser/SimpleCharStream.java</excludes>
575606
<checkstyleRules>
576607
<module name="Checker">
577608
<module name="SuppressWarningsFilter" />

src/main/java/module-info.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
exports net.sf.jsqlparser.statement.delete;
3737
exports net.sf.jsqlparser.statement.drop;
3838
exports net.sf.jsqlparser.statement.execute;
39+
exports net.sf.jsqlparser.statement.export;
3940
exports net.sf.jsqlparser.statement.grant;
41+
exports net.sf.jsqlparser.statement.imprt;
4042
exports net.sf.jsqlparser.statement.insert;
4143
exports net.sf.jsqlparser.statement.merge;
4244
exports net.sf.jsqlparser.statement.piped;

src/main/java/net/sf/jsqlparser/expression/AnalyticExpression.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public AnalyticExpression(Function function) {
6060
this.distinct = function.isDistinct();
6161
this.unique = function.isUnique();
6262

63-
6463
ExpressionList<? extends Expression> list = function.getParameters();
6564
if (list != null) {
6665
if (list.size() > 3) {
@@ -117,16 +116,16 @@ public void setKeep(KeepExpression keep) {
117116
}
118117

119118
public ExpressionList<?> getPartitionExpressionList() {
120-
return windowDef.partitionBy.getPartitionExpressionList();
119+
return windowDef.partitionBy;
121120
}
122121

123-
public void setPartitionExpressionList(ExpressionList<?> partitionExpressionList) {
122+
public void setPartitionExpressionList(ExpressionList<Expression> partitionExpressionList) {
124123
setPartitionExpressionList(partitionExpressionList, false);
125124
}
126125

127-
public void setPartitionExpressionList(ExpressionList<?> partitionExpressionList,
126+
public void setPartitionExpressionList(ExpressionList<Expression> partitionExpressionList,
128127
boolean brackets) {
129-
windowDef.partitionBy.setPartitionExpressionList(partitionExpressionList, brackets);
128+
windowDef.partitionBy.setExpressions(partitionExpressionList, brackets);
130129
}
131130

132131
public boolean isPartitionByBrackets() {

0 commit comments

Comments
 (0)