Skip to content

Commit 02a2f34

Browse files
Merge branch 'master' into manticore
2 parents 5704172 + e7f4532 commit 02a2f34

File tree

13 files changed

+445
-61
lines changed

13 files changed

+445
-61
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ As per March-2026, the productions `Condition()`, `RegularCondition()` and `AndE
8080

8181
```text
8282
Benchmark (version) Mode Cnt Score Error Units
83-
JSQLParserBenchmark.parseSQLStatements latest avgt 15 33.995 ± 0.764 ms/op <-- March/26
83+
JSQLParserBenchmark.parseSQLStatements latest avgt 15 15.908 ± 0.446 ms/op <-- March/26
8484
JSQLParserBenchmark.parseSQLStatements 5.3 avgt 15 84.687 ± 3.321 ms/op
8585
JSQLParserBenchmark.parseSQLStatements 5.1 avgt 15 86.592 ± 5.781 ms/op
8686
```

src/main/java/net/sf/jsqlparser/statement/create/index/CreateIndex.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import static java.util.stream.Collectors.joining;
1313

1414
import java.util.*;
15-
1615
import net.sf.jsqlparser.schema.*;
1716
import net.sf.jsqlparser.statement.*;
1817
import net.sf.jsqlparser.statement.create.table.*;
@@ -106,9 +105,7 @@ public String toString() {
106105

107106
buffer.append(
108107
index.getColumns().stream()
109-
.map(cp -> cp.columnName + (cp.getParams() != null
110-
? " " + String.join(" ", cp.getParams())
111-
: ""))
108+
.map(Index.ColumnParams::toString)
112109
.collect(joining(", ")));
113110

114111
buffer.append(")");

src/main/java/net/sf/jsqlparser/statement/create/table/Index.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.Collections;
1818
import java.util.List;
1919
import java.util.Optional;
20-
20+
import net.sf.jsqlparser.expression.Expression;
2121
import net.sf.jsqlparser.statement.select.PlainSelect;
2222

2323
public class Index implements Serializable {
@@ -32,7 +32,7 @@ public class Index implements Serializable {
3232

3333
public List<String> getColumnsNames() {
3434
return columns.stream()
35-
.map(col -> col.columnName)
35+
.map(ColumnParams::getColumnName)
3636
.collect(toList());
3737
}
3838

@@ -202,28 +202,52 @@ public void setCommentText(String commentText) {
202202
public static class ColumnParams implements Serializable {
203203
public final String columnName;
204204
public final List<String> params;
205+
private final Expression expression;
205206

206207
public ColumnParams(String columnName) {
207208
this.columnName = columnName;
208209
this.params = null;
210+
this.expression = null;
209211
}
210212

211213
public ColumnParams(String columnName, List<String> params) {
212214
this.columnName = columnName;
213215
this.params = params;
216+
this.expression = null;
217+
}
218+
219+
public ColumnParams(Expression expression) {
220+
this.columnName = null;
221+
this.params = null;
222+
this.expression = expression;
223+
}
224+
225+
public ColumnParams(Expression expression, List<String> params) {
226+
this.columnName = null;
227+
this.params = params;
228+
this.expression = expression;
214229
}
215230

216231
public String getColumnName() {
217-
return columnName;
232+
return expression != null ? expression.toString() : columnName;
218233
}
219234

220235
public List<String> getParams() {
221236
return params;
222237
}
223238

239+
public Expression getExpression() {
240+
return expression;
241+
}
242+
243+
public boolean isExpression() {
244+
return expression != null;
245+
}
246+
224247
@Override
225248
public String toString() {
226-
return columnName + (params != null ? " " + String.join(" ", params) : "");
249+
String head = expression != null ? "(" + expression + ")" : columnName;
250+
return head + (params != null ? " " + String.join(" ", params) : "");
227251
}
228252
}
229253
}

src/main/java/net/sf/jsqlparser/util/deparser/CreateIndexDeParser.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public void deParse(CreateIndex createIndex) {
5454
if (index.getColumnsNames() != null) {
5555
builder.append(" (");
5656
builder.append(index.getColumnWithParams().stream()
57-
.map(cp -> cp.columnName
58-
+ (cp.getParams() != null ? " " + String.join(" ", cp.getParams())
59-
: ""))
57+
.map(Index.ColumnParams::toString)
6058
.collect(joining(", ")));
6159
builder.append(")");
6260
}

src/main/java/net/sf/jsqlparser/util/validation/validator/AlterValidator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
*/
1010
package net.sf.jsqlparser.util.validation.validator;
1111

12-
import java.util.EnumSet;
12+
import static java.util.stream.Collectors.toList;
1313

14+
import java.util.EnumSet;
1415
import net.sf.jsqlparser.parser.feature.Feature;
1516
import net.sf.jsqlparser.statement.alter.Alter;
1617
import net.sf.jsqlparser.statement.alter.AlterExpression;
@@ -74,7 +75,11 @@ public void validate(Alter alter, AlterExpression e) {
7475
if (e.getIndex() != null) {
7576
validateName(c, NamedObject.index, e.getIndex().getName());
7677
if (e.getIndex().getColumns() != null) {
77-
validateOptionalColumnNames(c, e.getIndex().getColumnsNames(),
78+
validateOptionalColumnNames(c,
79+
e.getIndex().getColumns().stream()
80+
.filter(cp -> !cp.isExpression())
81+
.map(cp -> cp.getColumnName())
82+
.collect(toList()),
7883
NamedObject.index);
7984
}
8085
}

src/main/java/net/sf/jsqlparser/util/validation/validator/CreateIndexValidator.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
*/
1010
package net.sf.jsqlparser.util.validation.validator;
1111

12+
import static java.util.stream.Collectors.toList;
13+
1214
import net.sf.jsqlparser.parser.feature.Feature;
1315
import net.sf.jsqlparser.statement.create.index.CreateIndex;
1416
import net.sf.jsqlparser.statement.create.table.Index;
15-
import net.sf.jsqlparser.util.validation.metadata.NamedObject;
1617
import net.sf.jsqlparser.util.validation.ValidationCapability;
18+
import net.sf.jsqlparser.util.validation.metadata.NamedObject;
1719

1820
/**
1921
* @author gitmotte
@@ -27,7 +29,14 @@ public void validate(CreateIndex createIndex) {
2729
validateFeature(c, Feature.createIndex);
2830
validateName(c, NamedObject.table, createIndex.getTable().getFullyQualifiedName());
2931
validateName(c, NamedObject.index, index.getName(), false);
30-
validateOptionalColumnNames(c, index.getColumnsNames(), NamedObject.table);
32+
if (index.getColumns() != null) {
33+
validateOptionalColumnNames(c,
34+
index.getColumns().stream()
35+
.filter(cp -> !cp.isExpression())
36+
.map(Index.ColumnParams::getColumnName)
37+
.collect(toList()),
38+
NamedObject.table);
39+
}
3140
}
3241
}
3342

0 commit comments

Comments
 (0)