Skip to content

Commit 5bbdc47

Browse files
committed
Add postgresql grammar
1 parent ad9860d commit 5bbdc47

File tree

80 files changed

+296789
-100240
lines changed

Some content is hidden

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

80 files changed

+296789
-100240
lines changed

src/external/Readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Build:
1414
- cd antlr4-grammar-vsql && git pull && cd ..
1515
- mvn antlr4:antlr4 -Dgrammars="grammars-v4/sql/mysql/Positive-Technologies" -Dgrammars.package="org.antlr.sql.dialects.mysql" -Dgrammars.out.dir="mysql"
1616
- mvn antlr4:antlr4 -Dgrammars="grammars-v4/sql/tsql" -Dgrammars.package="org.antlr.sql.dialects.tsql" -Dgrammars.out.dir="tsql"
17-
- mvn antlr4:antlr4 -Dgrammars="antlr_psql/antlr4" -Dgrammars.package="org.antlr.sql.dialects.psql" -Dgrammars.out.dir="psql"
18-
- mvn antlr4:antlr4 -Dgrammars="grammars-v4/sql/postgresql" -Dgrammars.package="org.antlr.sql.dialects.psql2" -Dgrammars.out.dir="psql2"
17+
- mvn antlr4:antlr4 -Dgrammars="antlr_psql/antlr4" -Dgrammars.package="org.antlr.sql.dialects.psqlv1" -Dgrammars.out.dir="psqlv1"
18+
- mvn antlr4:antlr4 -Dgrammars="grammars-v4/sql/postgresql" -Dgrammars.package="org.antlr.sql.dialects.psqlv2" -Dgrammars.out.dir="psqlv2"
1919
- mvn antlr4:antlr4 -Dgrammars="antlr4-grammar-vsql/antlr4-grammar-vsql/src/main/antlr4" -Dgrammars.package="org.antlr.sql.dialects.vsql" -Dgrammars.out.dir="vsql"
2020
- mvn antlr4:antlr4 -Dgrammars="antlr4-grammar-sql-comments/src/main/antlr4" -Dgrammars.package="org.antlr.sql.dialects.comments" -Dgrammars.out.dir="comments"
2121

src/external/grammars-v4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Subproject commit 7f2d97420aab16247d68a8f1900f7de55d4be912
1+
Subproject commit 89c60a763e77b38654262d0b0a86f4885c023e00

src/external/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<plugin>
2323
<groupId>org.antlr</groupId>
2424
<artifactId>antlr4-maven-plugin</artifactId>
25-
<version>4.9.3</version>
25+
<version>4.11.1</version>
2626
<configuration>
2727
<sourceDirectory>${basedir}</sourceDirectory>
2828
<outputDirectory>${basedir}/../sonar-sql-plugin/src/main/java/org/antlr/sql/dialects/${grammars.out.dir}</outputDirectory>
@@ -54,7 +54,7 @@
5454
<plugin>
5555
<groupId>org.apache.maven.plugins</groupId>
5656
<artifactId>maven-compiler-plugin</artifactId>
57-
<version>3.5.1</version>
57+
<version>3.10.1</version>
5858
<configuration>
5959
<source>${jdk.min.version}</source>
6060
<target>${jdk.min.version}</target>
1.28 KB
Binary file not shown.

src/sonar-sql-plugin/pom.xml

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0"
2-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
42
<modelVersion>4.0.0</modelVersion>
53

64
<groupId>org.sonar.plugins</groupId>
@@ -25,18 +23,18 @@
2523
</properties>
2624

2725
<dependencies>
28-
<dependency>
29-
<groupId>jakarta.xml.bind</groupId>
30-
<artifactId>jakarta.xml.bind-api</artifactId>
31-
<version>4.0.0-RC2</version>
32-
<scope>test</scope>
33-
</dependency>
34-
<dependency>
35-
<groupId>com.sun.xml.bind</groupId>
36-
<artifactId>jaxb-impl</artifactId>
37-
<version>4.0.1</version>
38-
<scope>test</scope>
39-
</dependency>
26+
<dependency>
27+
<groupId>jakarta.xml.bind</groupId>
28+
<artifactId>jakarta.xml.bind-api</artifactId>
29+
<version>4.0.0-RC2</version>
30+
<scope>test</scope>
31+
</dependency>
32+
<dependency>
33+
<groupId>com.sun.xml.bind</groupId>
34+
<artifactId>jaxb-impl</artifactId>
35+
<version>4.0.1</version>
36+
<scope>test</scope>
37+
</dependency>
4038
<dependency>
4139
<groupId>org.jvnet.jaxb2.maven2</groupId>
4240
<artifactId>maven-jaxb2-plugin</artifactId>
@@ -94,19 +92,23 @@
9492
<dependency>
9593
<groupId>org.antlr</groupId>
9694
<artifactId>antlr4-runtime</artifactId>
97-
<version>4.9.3</version>
95+
<version>4.11.1</version>
9896
</dependency>
99-
97+
10098
</dependencies>
10199

102100
<build>
103101
<plugins>
102+
<plugin>
103+
<groupId>com.diffplug.spotless</groupId>
104+
<artifactId>spotless-maven-plugin</artifactId>
105+
<version>2.27.1</version>
106+
</plugin>
104107
<plugin>
105108
<groupId>org.apache.maven.plugins</groupId>
106109
<artifactId>maven-javadoc-plugin</artifactId>
107110
<version>3.3.1</version>
108-
<configuration>
109-
</configuration>
111+
<configuration></configuration>
110112
</plugin>
111113

112114
<plugin>
@@ -134,4 +136,4 @@
134136
<url>https://github.com/gretard/sonar-sql-plugin</url>
135137
</scm>
136138

137-
</project>
139+
</project>
Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,43 @@
11
package org.antlr.sql.dialects;
22

33
import java.util.Collections;
4-
import java.util.LinkedList;
54
import java.util.List;
65

76
import org.antlr.sql.dialects.rules.CommonRules;
87
import org.antlr.sql.models.AntlrContext;
9-
import org.sonar.plugins.sql.models.rules.Rule;
108
import org.sonar.plugins.sql.models.rules.SqlRules;
119

1210
public enum Dialects {
13-
TSQL(new TSQLDialect()), PSSQL(new PsSqlDialect()), MYSQL(new MySqlDialect()), VSQL(new VSQLDialect());
14-
15-
public AntlrContext parse(String text) {
16-
return parse(text, Collections.emptyList());
17-
}
18-
19-
public AntlrContext parse(String text, List<SqlRules> rules) {
20-
AntlrContext ctx = this.dialect.parse(text);
21-
ctx.initialContents = text;
22-
SQLDialectRules.INSTANCE.getRules().forEach(r -> {
23-
if (r.getDialect() == null || this.name().equalsIgnoreCase(r.getDialect())) {
24-
ctx.rules.add(r);
25-
}
26-
27-
});
28-
29-
rules.forEach(r -> {
30-
if (r.getDialect() == null || this.name().equalsIgnoreCase(r.getDialect())) {
31-
ctx.rules.add(r);
32-
}
33-
});
34-
ctx.rules.addAll(CommonRules.INSTANCE.getRules());
35-
36-
return ctx;
37-
}
38-
39-
private final IDialect dialect;
40-
41-
private Dialects(IDialect dialect) {
42-
this.dialect = dialect;
43-
}
11+
TSQL(new TSQLDialect()), PSSQL(new PsSqlDialect()), MYSQL(new MySqlDialect()), VSQL(new VSQLDialect()),
12+
PSQLV2(new PsSqlV2Dialect());
13+
14+
public AntlrContext parse(String text) {
15+
return parse(text, Collections.emptyList());
16+
}
17+
18+
public AntlrContext parse(String text, List<SqlRules> rules) {
19+
AntlrContext ctx = this.dialect.parse(text);
20+
ctx.initialContents = text;
21+
SQLDialectRules.INSTANCE.getRules().forEach(r -> {
22+
if (r.getDialect() == null || this.name().equalsIgnoreCase(r.getDialect())) {
23+
ctx.rules.add(r);
24+
}
25+
26+
});
27+
28+
rules.forEach(r -> {
29+
if (r.getDialect() == null || this.name().equalsIgnoreCase(r.getDialect())) {
30+
ctx.rules.add(r);
31+
}
32+
});
33+
ctx.rules.addAll(CommonRules.INSTANCE.getRules());
34+
35+
return ctx;
36+
}
37+
38+
private final IDialect dialect;
39+
40+
private Dialects(IDialect dialect) {
41+
this.dialect = dialect;
42+
}
4443
}

src/sonar-sql-plugin/src/main/java/org/antlr/sql/dialects/PsSqlDialect.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package org.antlr.sql.dialects;
22

3-
import org.antlr.sql.dialects.psql.PostgreSQLLexer;
4-
import org.antlr.sql.dialects.psql.PostgreSQLParser;
5-
import org.antlr.sql.dialects.psql.PostgreSQLParser.Combine_clauseContext;
6-
import org.antlr.sql.dialects.psql.PostgreSQLParser.Grouping_elemContext;
7-
import org.antlr.sql.dialects.psql.PostgreSQLParser.Order_by_itemContext;
8-
import org.antlr.sql.dialects.psql.PostgreSQLParser.PredicateContext;
9-
import org.antlr.sql.dialects.psql.PostgreSQLParser.Select_stmtContext;
10-
import org.antlr.sql.dialects.psql.PostgreSQLParser.Update_stmtContext;
3+
import org.antlr.sql.dialects.psqlv1.PostgreSQLLexer;
4+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser;
5+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.Combine_clauseContext;
6+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.Grouping_elemContext;
7+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.Order_by_itemContext;
8+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.PredicateContext;
9+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.Select_stmtContext;
10+
import org.antlr.sql.dialects.psqlv1.PostgreSQLParser.Update_stmtContext;
1111
import org.antlr.v4.runtime.CharStream;
1212
import org.antlr.v4.runtime.CommonTokenStream;
1313
import org.antlr.v4.runtime.Lexer;
@@ -32,7 +32,8 @@ protected DialectLanguageTypesMap getTypesMap() {
3232
return new DialectLanguageTypesMap().addCommentToken(PostgreSQLParser.COMMENT)
3333
.addCommentToken(PostgreSQLParser.BLOCK_COMMENT).addCommentToken(PostgreSQLParser.LINE_COMMENT)
3434
.addStringToken(PostgreSQLParser.SINGLEQ_STRING_LITERAL)
35-
.addStringToken(PostgreSQLParser.DOUBLEQ_STRING_LITERAL).addComplexityType(PredicateContext.class)
35+
.addStringToken(PostgreSQLParser.DOUBLEQ_STRING_LITERAL)
36+
.addComplexityType(PredicateContext.class)
3637

3738
.addCognitiveComplexityType(Order_by_itemContext.class)
3839
.addCognitiveComplexityType(PredicateContext.class)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.antlr.sql.dialects;
2+
3+
4+
import org.antlr.sql.dialects.psqlv2.PostgreSQLLexer;
5+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser;
6+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.A_exprContext;
7+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.A_expr_andContext;
8+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.Group_by_itemContext;
9+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.SelectstmtContext;
10+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.SortbyContext;
11+
import org.antlr.sql.dialects.psqlv2.PostgreSQLParser.UpdatestmtContext;
12+
import org.antlr.v4.runtime.CharStream;
13+
import org.antlr.v4.runtime.CommonTokenStream;
14+
import org.antlr.v4.runtime.Lexer;
15+
import org.antlr.v4.runtime.tree.ParseTree;
16+
17+
public class PsSqlV2Dialect extends BaseDialect {
18+
19+
@Override
20+
protected Lexer getLexer(CharStream charStream) {
21+
return new PostgreSQLLexer(charStream);
22+
}
23+
24+
@Override
25+
protected ParseTree getRoot(CommonTokenStream stream) {
26+
PostgreSQLParser p = new PostgreSQLParser(stream);
27+
p.removeErrorListeners();
28+
return p.root();
29+
}
30+
31+
@Override
32+
protected DialectLanguageTypesMap getTypesMap() {
33+
return new DialectLanguageTypesMap()
34+
.addCommentToken(PostgreSQLLexer.BlockComment)
35+
.addCommentToken(PostgreSQLLexer.LineComment)
36+
.addCommentToken(PostgreSQLLexer.UnterminatedBlockComment)
37+
.addStringToken(PostgreSQLLexer.StringConstant)
38+
.addComplexityType(A_exprContext.class)
39+
40+
.addCognitiveComplexityType(SortbyContext.class)
41+
.addCognitiveComplexityType(A_expr_andContext.class)
42+
.addCognitiveComplexityType(SelectstmtContext.class)
43+
.addCognitiveComplexityType(UpdatestmtContext.class)
44+
.addCognitiveComplexityType(Group_by_itemContext.class)
45+
46+
;
47+
}
48+
}

src/sonar-sql-plugin/src/main/java/org/antlr/sql/dialects/TSQLDialect.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ protected ParseTree getRoot(CommonTokenStream stream) {
2525
protected DialectLanguageTypesMap getTypesMap() {
2626
return new DialectLanguageTypesMap().addCommentToken(TSqlParser.COMMENT)
2727
.addCommentToken(TSqlParser.LINE_COMMENT).addStringToken(TSqlParser.STRING)
28+
2829
.addComplexityType(TSqlParser.Search_conditionContext.class)
2930
.addComplexityType(TSqlParser.Try_catch_statementContext.class)
3031

src/sonar-sql-plugin/src/main/java/org/antlr/sql/dialects/VSQLDialect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ protected ParseTree getRoot(CommonTokenStream stream) {
2525
protected DialectLanguageTypesMap getTypesMap() {
2626
return new DialectLanguageTypesMap().addCommentToken(VSqlParser.COMMENT)
2727
.addCommentToken(VSqlParser.LINE_COMMENT).addStringToken(VSqlParser.DOUBLE_QUOTE_STRING)
28-
.addStringToken(VSqlParser.SINGLE_QUOTE_STRING).addComplexityType(VSqlParser.ExpressionContext.class)
28+
.addStringToken(VSqlParser.SINGLE_QUOTE_STRING)
29+
.addComplexityType(VSqlParser.ExpressionContext.class)
2930

3031
.addCognitiveComplexityType(VSqlParser.FunctionCallContext.class)
3132
.addCognitiveComplexityType(VSqlParser.JoinPredicateContext.class)

0 commit comments

Comments
 (0)