Skip to content

Commit 0130d56

Browse files
author
Stefan Steinhauser
committed
test: Implement unit tests for IMPORT
1 parent bcfa4e9 commit 0130d56

File tree

8 files changed

+330
-22
lines changed

8 files changed

+330
-22
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public String toString() {
2929

3030
sql.append("AT CLOUD ");
3131
sql.append(storage);
32+
sql.append(" ");
3233
appendConnectionDefinition(sql);
3334

3435
return sql.toString();

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ public void setFilePaths(List<StringValue> filePaths) {
4646
public String toString() {
4747
StringBuilder sql = new StringBuilder();
4848

49-
sql.append(connectionDefinition);
49+
if (connectionDefinition != null) {
50+
sql.append(connectionDefinition);
51+
}
52+
5053
for (StringValue filePath : filePaths) {
5154
sql.append(" FILE ").append(filePath);
5255
}

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

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@ public class FBVColumn {
1717
private boolean precedesComma;
1818
private String key;
1919
private Expression value;
20+
private String stringValue;
2021

2122
private FBVColumn(String key, Expression value) {
2223
this.key = key;
2324
this.value = value;
25+
this.stringValue = null;
26+
}
27+
28+
public FBVColumn(String key, String value) {
29+
this.key = key;
30+
this.value = null;
31+
this.stringValue = value;
2432
}
2533

2634
public FBVColumn(String key, StringValue value) {
@@ -51,12 +59,22 @@ public Expression getValue() {
5159
return value;
5260
}
5361

54-
public void setValue(StringValue value) {
62+
public void setValue(String value) {
63+
this.stringValue = value;
64+
this.value = null;
65+
}
66+
67+
private void setValue(Expression value) {
5568
this.value = value;
69+
this.stringValue = null;
70+
}
71+
72+
public void setValue(StringValue value) {
73+
setValue((Expression) value);
5674
}
5775

5876
public void setValue(LongValue value) {
59-
this.value = value;
77+
setValue((Expression) value);
6078
}
6179

6280
@Override
@@ -69,7 +87,11 @@ public String toString() {
6987

7088
sql.append(key);
7189
sql.append(" = ");
72-
sql.append(value);
90+
if (stringValue != null) {
91+
sql.append(stringValue);
92+
} else {
93+
sql.append(value);
94+
}
7395

7496
return sql.toString();
7597
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ public void setExcludingComments(Boolean excludingComments) {
9999
public StringBuilder appendTo(StringBuilder builder) {
100100
builder.append(" LIKE ");
101101
builder.append(table);
102-
PlainSelect.appendStringListTo(builder, columnsList, true, false);
102+
if (columnsList != null) {
103+
builder.append(" ");
104+
PlainSelect.appendStringListTo(builder, columnsList, true, true);
105+
}
103106

104107
if (includingDefaults != null) {
105108
if (includingDefaults) {

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import java.io.Serializable;
1616
import java.util.List;
17+
import java.util.Objects;
1718

1819
public class FileSource extends ImportFromItem implements Serializable {
1920
private DataSource dataSource;
@@ -98,29 +99,37 @@ public String toString() {
9899
sql.append("LOCAL ");
99100
}
100101

101-
if (secure) {
102+
if (Objects.requireNonNullElse(secure, false)) {
102103
sql.append("SECURE ");
103104
}
104105
}
105106

106107
sql.append(dataSource);
107-
PlainSelect.appendStringListTo(sql, connectionFileDefinitions, false, false);
108+
if (connectionFileDefinitions != null) {
109+
sql.append(" ");
110+
PlainSelect.appendStringListTo(sql, connectionFileDefinitions, false, false);
111+
}
108112

109113
if (csvColumns != null) {
114+
sql.append(" ");
110115
PlainSelect.appendStringListTo(sql, csvColumns, true, true);
111116
} else if (fbvColumns != null) {
117+
sql.append(" ");
112118
PlainSelect.appendStringListTo(sql, fbvColumns, false, true);
113119
}
114120

115121
if (fileOptions != null) {
122+
sql.append(" ");
116123
PlainSelect.appendStringListTo(sql, fileOptions, false, false);
117124
}
118125

119126
if (certificateVerification != null) {
127+
sql.append(" ");
120128
sql.append(certificateVerification);
121129
}
122130

123131
if (errorClause != null) {
132+
sql.append(" ");
124133
sql.append(errorClause);
125134
}
126135

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ public String toString() {
7171
} else {
7272
PlainSelect.appendStringListTo(sql, importColumns, true, true);
7373
}
74+
sql.append(" ");
7475
}
7576

76-
sql.append(" FROM ");
77+
sql.append("FROM ");
7778
sql.append(fromItem);
7879

7980
return sql.toString();

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ LikeClause LikeClause(): {
10521052
} {
10531053
<K_LIKE>
10541054
table = Table() { likeClause.setTable(table); }
1055-
[ LOOKAHEAD(2) columnsList = ColumnSelectItemsList() { likeClause.setColumnsList(columnsList); }]
1055+
[ "(" columnsList = ColumnSelectItemsList() ")" { likeClause.setColumnsList(columnsList); }]
10561056

10571057
[
10581058
LOOKAHEAD(2)
@@ -1196,7 +1196,6 @@ DBMSSource DBMSSource() #DBMSSource: {
11961196

11971197
FileSource FileSource() #FileSource: {
11981198
FileSource fileSource = new FileSource();
1199-
ConnectionDefinition connectionDefinition;
12001199
List<ConnectionFileDefinition> connectionFileDefinitions = new ArrayList<ConnectionFileDefinition>();
12011200
List<StringValue> filePaths;
12021201
CertificateVerification certificateVerification;
@@ -1213,10 +1212,11 @@ FileSource FileSource() #FileSource: {
12131212
)
12141213

12151214
(
1216-
(
1217-
LOOKAHEAD(2) connectionDefinition = ConnectionDefinition()
1218-
| connectionDefinition = CloudConnectionDefinition()
1219-
)
1215+
{ ConnectionDefinition connectionDefinition = null; }
1216+
[
1217+
LOOKAHEAD(2) connectionDefinition = CloudConnectionDefinition()
1218+
| connectionDefinition = ConnectionDefinition()
1219+
]
12201220
<K_FILE> token = <S_CHAR_LITERAL>
12211221
{
12221222
filePaths = new ArrayList<StringValue>();
@@ -1225,6 +1225,7 @@ FileSource FileSource() #FileSource: {
12251225
filePaths.add(stringVal);
12261226
}
12271227
(
1228+
LOOKAHEAD(2)
12281229
<K_FILE> token = <S_CHAR_LITERAL>
12291230
{
12301231
stringVal = new StringValue(token.image);
@@ -1238,10 +1239,11 @@ FileSource FileSource() #FileSource: {
12381239
(
12391240
LOOKAHEAD(2)
12401241
(
1241-
(
1242-
LOOKAHEAD(2) connectionDefinition = ConnectionDefinition()
1243-
| connectionDefinition = CloudConnectionDefinition()
1244-
)
1242+
{ connectionDefinition = null; }
1243+
[
1244+
LOOKAHEAD(2) connectionDefinition = CloudConnectionDefinition()
1245+
| connectionDefinition = ConnectionDefinition()
1246+
]
12451247
<K_FILE> token = <S_CHAR_LITERAL>
12461248
{
12471249
filePaths = new ArrayList<StringValue>();
@@ -1250,6 +1252,7 @@ FileSource FileSource() #FileSource: {
12501252
filePaths.add(stringVal);
12511253
}
12521254
(
1255+
LOOKAHEAD(2)
12531256
<K_FILE> token = <S_CHAR_LITERAL>
12541257
{
12551258
stringVal = new StringValue(token.image);
@@ -1345,7 +1348,7 @@ FileSource FileSource() #FileSource: {
13451348
token2=<K_LEFT>
13461349
| token2=<K_RIGHT>
13471350
)
1348-
{ fbvColumn = new FBVColumn(token.image, new StringValue(token2.image)); }
1351+
{ fbvColumn = new FBVColumn(token.image, token2.image); }
13491352
)
13501353
{
13511354
List<FBVColumn> fbvColumns = new ArrayList<FBVColumn>();
@@ -1373,7 +1376,7 @@ FileSource FileSource() #FileSource: {
13731376
token2=<K_LEFT>
13741377
| token2=<K_RIGHT>
13751378
)
1376-
{ fbvColumn = new FBVColumn(token.image, new StringValue(token2.image)); }
1379+
{ fbvColumn = new FBVColumn(token.image, token2.image); }
13771380
)
13781381
{
13791382
fbvColumn.setPrecedesComma(precedesComma);
@@ -1632,8 +1635,8 @@ CSVFileDestination CSVFileDestination(): {
16321635
(
16331636
<K_CSV>
16341637
(
1635-
LOOKAHEAD(2) connectionDefinition = ConnectionDefinition()
1636-
| connectionDefinition = CloudConnectionDefinition()
1638+
LOOKAHEAD(2) connectionDefinition = CloudConnectionDefinition()
1639+
| connectionDefinition = ConnectionDefinition()
16371640
)
16381641
{ csvFileDestination.setConnectionDefinition(connectionDefinition); }
16391642
| <K_LOCAL> { csvFileDestination.setLocal(true); }

0 commit comments

Comments
 (0)