Skip to content

Commit 711200d

Browse files
author
Stefan Steinhauser
committed
fix: Fix issues in IMPORT implementation
1 parent e1a74e1 commit 711200d

File tree

16 files changed

+277
-83
lines changed

16 files changed

+277
-83
lines changed

src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
exports net.sf.jsqlparser.statement.drop;
3737
exports net.sf.jsqlparser.statement.execute;
3838
exports net.sf.jsqlparser.statement.grant;
39+
exports net.sf.jsqlparser.statement.imprt;
3940
exports net.sf.jsqlparser.statement.insert;
4041
exports net.sf.jsqlparser.statement.merge;
4142
exports net.sf.jsqlparser.statement.refresh;

src/main/java/net/sf/jsqlparser/parser/feature/Feature.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,11 @@ public enum Feature {
792792
* allows sub selects without parentheses, e.g. `select * from dual where 1 = select 1`
793793
*/
794794
allowUnparenthesizedSubSelects(false),
795+
796+
/**
797+
* "IMPORT"
798+
*/
799+
imprt,
795800
;
796801

797802
private final Object value;

src/main/java/net/sf/jsqlparser/statement/CertificateVerification.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2025 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
110
package net.sf.jsqlparser.statement;
211

312
import net.sf.jsqlparser.expression.StringValue;

src/main/java/net/sf/jsqlparser/statement/ConnectionFileDefinition.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
package net.sf.jsqlparser.statement;
1111

1212
import net.sf.jsqlparser.expression.StringValue;
13-
import net.sf.jsqlparser.statement.select.PlainSelect;
1413

1514
import java.util.List;
1615

1716
public class ConnectionFileDefinition {
1817
private ConnectionDefinition connectionDefinition;
1918
private List<StringValue> filePaths;
2019

20+
public ConnectionFileDefinition(List<StringValue> filePaths) {
21+
this(null, filePaths);
22+
}
23+
2124
public ConnectionFileDefinition(ConnectionDefinition connectionDefinition, List<StringValue> filePaths) {
2225
this.connectionDefinition = connectionDefinition;
2326
this.filePaths = filePaths;

src/main/java/net/sf/jsqlparser/statement/LikeClause.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ public void setIncludingDefaults(Boolean includingDefaults) {
5656
this.includingDefaults = includingDefaults;
5757
}
5858

59+
public Boolean isExcludingDefaults() {
60+
return includingDefaults == null ? null : !includingDefaults;
61+
}
62+
63+
public void setExcludingDefaults(Boolean excludingDefaults) {
64+
this.includingDefaults = !excludingDefaults;
65+
}
66+
5967
public Boolean isIncludingIdentity() {
6068
return includingIdentity;
6169
}
@@ -64,6 +72,14 @@ public void setIncludingIdentity(Boolean includingIdentity) {
6472
this.includingIdentity = includingIdentity;
6573
}
6674

75+
public Boolean isExcludingIdentity() {
76+
return includingIdentity == null ? null : !includingIdentity;
77+
}
78+
79+
public void setExcludingIdentity(Boolean excludingIdentity) {
80+
this.includingIdentity = !excludingIdentity;
81+
}
82+
6783
public Boolean isIncludingComments() {
6884
return includingComments;
6985
}
@@ -72,6 +88,14 @@ public void setIncludingComments(Boolean includingComments) {
7288
this.includingComments = includingComments;
7389
}
7490

91+
public Boolean isExcludingComments() {
92+
return includingComments == null ? null : !includingComments;
93+
}
94+
95+
public void setExcludingComments(Boolean excludingComments) {
96+
this.includingComments = !excludingComments;
97+
}
98+
7599
public StringBuilder appendTo(StringBuilder builder) {
76100
builder.append(" LIKE ");
77101
builder.append(table);

src/main/java/net/sf/jsqlparser/statement/RejectClause.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,17 @@
99
*/
1010
package net.sf.jsqlparser.statement;
1111

12+
import net.sf.jsqlparser.expression.LongValue;
13+
1214
public class RejectClause {
13-
private Long limit;
15+
private LongValue limit;
1416
private boolean errors;
1517

16-
public Long getLimit() {
18+
public LongValue getLimit() {
1719
return limit;
1820
}
1921

20-
public void setLimit(Long limit) {
22+
public void setLimit(LongValue limit) {
2123
this.limit = limit;
2224
}
2325

src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import net.sf.jsqlparser.statement.drop.Drop;
2929
import net.sf.jsqlparser.statement.execute.Execute;
3030
import net.sf.jsqlparser.statement.grant.Grant;
31+
import net.sf.jsqlparser.statement.imprt.Import;
3132
import net.sf.jsqlparser.statement.insert.Insert;
3233
import net.sf.jsqlparser.statement.insert.ParenthesedInsert;
3334
import net.sf.jsqlparser.statement.merge.Merge;
@@ -308,4 +309,9 @@ public <S> T visit(UnsupportedStatement unsupportedStatement, S context) {
308309
public <S> T visit(RefreshMaterializedViewStatement materializedView, S context) {
309310
return null;
310311
}
312+
313+
@Override
314+
public <S> T visit(Import imprt, S context) {
315+
return null;
316+
}
311317
}

src/main/java/net/sf/jsqlparser/statement/imprt/DBMSSource.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@
1616
import net.sf.jsqlparser.statement.ConnectionDefinition;
1717
import net.sf.jsqlparser.statement.select.PlainSelect;
1818

19-
import javax.sql.DataSource;
2019
import java.io.Serializable;
2120
import java.util.List;
2221

23-
public class DBMSSource implements ImportFromItem, Serializable {
22+
public class DBMSSource extends ImportFromItem implements Serializable {
2423
private DataSource dataSource;
2524
private StringValue jdbcDriverDefinition;
2625
private ConnectionDefinition connectionDefinition;
@@ -82,22 +81,26 @@ public String toString() {
8281

8382
sql.append(dataSource);
8483

85-
if(jdbcDriverDefinition != null) {
84+
if (jdbcDriverDefinition != null) {
8685
sql.append(" DRIVER = ").append(jdbcDriverDefinition);
8786
}
8887

8988
sql.append(" ");
9089
sql.append(connectionDefinition);
9190

92-
if(table != null) {
91+
if (table != null) {
9392
sql.append(" TABLE ").append(table);
9493
PlainSelect.appendStringListTo(sql, columns, true, true);
9594
} else if (statements != null) {
96-
for(StringValue statement : statements) {
95+
for (StringValue statement : statements) {
9796
sql.append(" STATEMENT ").append(statement);
9897
}
9998
}
10099

100+
if (errorClause != null) {
101+
sql.append(errorClause);
102+
}
103+
101104
return sql.toString();
102105
}
103106
}

src/main/java/net/sf/jsqlparser/statement/imprt/FileSource.java

Lines changed: 70 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@
99
*/
1010
package net.sf.jsqlparser.statement.imprt;
1111

12-
import net.sf.jsqlparser.expression.StringValue;
1312
import net.sf.jsqlparser.statement.*;
1413
import net.sf.jsqlparser.statement.select.PlainSelect;
1514

1615
import java.io.Serializable;
1716
import java.util.List;
1817

19-
public class FileSource implements ImportFromItem, Serializable {
18+
public class FileSource extends ImportFromItem implements Serializable {
2019
private DataSource dataSource;
21-
private ConnectionDefinition connectionDefinition;
2220
private List<ConnectionFileDefinition> connectionFileDefinitions;
2321
private Boolean local;
2422
private Boolean secure;
@@ -27,6 +25,70 @@ public class FileSource implements ImportFromItem, Serializable {
2725
private List<FileOption> fileOptions;
2826
private CertificateVerification certificateVerification;
2927

28+
public DataSource getDataSource() {
29+
return dataSource;
30+
}
31+
32+
public void setDataSource(DataSource dataSource) {
33+
this.dataSource = dataSource;
34+
}
35+
36+
public List<ConnectionFileDefinition> getConnectionFileDefinitions() {
37+
return connectionFileDefinitions;
38+
}
39+
40+
public void setConnectionFileDefinitions(List<ConnectionFileDefinition> connectionFileDefinitions) {
41+
this.connectionFileDefinitions = connectionFileDefinitions;
42+
}
43+
44+
public Boolean isLocal() {
45+
return local;
46+
}
47+
48+
public void setLocal(Boolean local) {
49+
this.local = local;
50+
}
51+
52+
public Boolean isSecure() {
53+
return secure;
54+
}
55+
56+
public void setSecure(Boolean secure) {
57+
this.secure = secure;
58+
}
59+
60+
public List<CSVColumn> getCSVColumns() {
61+
return csvColumns;
62+
}
63+
64+
public void setCSVColumns(List<CSVColumn> csvColumns) {
65+
this.csvColumns = csvColumns;
66+
}
67+
68+
public List<FBVColumn> getFBVColumns() {
69+
return fbvColumns;
70+
}
71+
72+
public void setFBVColumns(List<FBVColumn> fbvColumns) {
73+
this.fbvColumns = fbvColumns;
74+
}
75+
76+
public List<FileOption> getFileOptions() {
77+
return fileOptions;
78+
}
79+
80+
public void setFileOptions(List<FileOption> fileOptions) {
81+
this.fileOptions = fileOptions;
82+
}
83+
84+
public CertificateVerification getCertificateVerification() {
85+
return certificateVerification;
86+
}
87+
88+
public void setCertificateVerification(CertificateVerification certificateVerification) {
89+
this.certificateVerification = certificateVerification;
90+
}
91+
3092
@Override
3193
public String toString() {
3294
StringBuilder sql = new StringBuilder();
@@ -54,10 +116,14 @@ public String toString() {
54116
PlainSelect.appendStringListTo(sql, fileOptions, false, false);
55117
}
56118

57-
if(certificateVerification != null) {
119+
if (certificateVerification != null) {
58120
sql.append(certificateVerification);
59121
}
60122

123+
if (errorClause != null) {
124+
sql.append(errorClause);
125+
}
126+
61127
return sql.toString();
62128
}
63129
}

src/main/java/net/sf/jsqlparser/statement/imprt/Import.java

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,52 @@
1919
import java.util.List;
2020

2121
public class Import implements Statement {
22-
private Table intoTable;
23-
private ExpressionList<Column> columnList;
22+
private Table table;
23+
private ExpressionList<Column> columns;
2424
private List<ImportColumn> importColumns;
2525
private ImportFromItem fromItem;
2626

27+
public Table getTable() {
28+
return table;
29+
}
30+
31+
public void setTable(Table table) {
32+
this.table = table;
33+
}
34+
35+
public ExpressionList<Column> getColumns() {
36+
return columns;
37+
}
38+
39+
public void setColumns(ExpressionList<Column> columns) {
40+
this.columns = columns;
41+
}
42+
43+
public List<ImportColumn> getImportColumns() {
44+
return importColumns;
45+
}
46+
47+
public void setImportColumns(List<ImportColumn> importColumns) {
48+
this.importColumns = importColumns;
49+
}
50+
51+
public ImportFromItem getFromItem() {
52+
return fromItem;
53+
}
54+
55+
public void setFromItem(ImportFromItem fromItem) {
56+
this.fromItem = fromItem;
57+
}
58+
2759
@Override
2860
public String toString() {
2961
StringBuilder sql = new StringBuilder();
3062
sql.append("IMPORT ");
31-
if (intoTable != null || importColumns != null) {
63+
if (table != null || importColumns != null) {
3264
sql.append("INTO ");
33-
if (intoTable != null) {
34-
sql.append(intoTable);
35-
PlainSelect.appendStringListTo(sql, columnList, true, true);
65+
if (table != null) {
66+
sql.append(table);
67+
PlainSelect.appendStringListTo(sql, columns, true, true);
3668
} else {
3769
PlainSelect.appendStringListTo(sql, importColumns, true, true);
3870
}

0 commit comments

Comments
 (0)