Skip to content

Commit c1129a0

Browse files
author
Stefan Steinhauser
committed
test: Implement unit tests for EXPORT statement
1 parent c4e5907 commit c1129a0

File tree

1 file changed

+256
-0
lines changed

1 file changed

+256
-0
lines changed
Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2019 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.export;
11+
12+
import net.sf.jsqlparser.JSQLParserException;
13+
import net.sf.jsqlparser.test.TestUtils;
14+
import org.junit.jupiter.api.parallel.Execution;
15+
import org.junit.jupiter.api.parallel.ExecutionMode;
16+
import org.junit.jupiter.params.ParameterizedTest;
17+
import org.junit.jupiter.params.provider.ValueSource;
18+
19+
@Execution(ExecutionMode.CONCURRENT)
20+
public class ExportTest {
21+
@ParameterizedTest
22+
@ValueSource(strings = {
23+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv'",
24+
"EXPORT schemaName.tableName ( columnName ) INTO LOCAL CSV FILE 'file.csv'",
25+
"EXPORT schemaName.tableName ( columnName1, columnName2 ) INTO LOCAL CSV FILE 'file.csv'",
26+
27+
"EXPORT ( select 1 ) INTO LOCAL CSV FILE 'file.csv'",
28+
})
29+
public void testExport(String sqlStr) throws JSQLParserException {
30+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
31+
}
32+
33+
@ParameterizedTest
34+
@ValueSource(strings = {
35+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv'",
36+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file1.csv' FILE 'file2.csv'",
37+
38+
"EXPORT schemaName.tableName INTO LOCAL SECURE CSV FILE 'file.csv'",
39+
"EXPORT schemaName.tableName INTO LOCAL SECURE CSV FILE 'file1.csv' FILE 'file2.csv'"
40+
})
41+
public void testExportIntoFileCSV(String sqlStr) throws JSQLParserException {
42+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
43+
}
44+
45+
@ParameterizedTest
46+
@ValueSource(strings = {
47+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 )",
48+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1, 2 )",
49+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 FORMAT = 'format' )",
50+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 DELIMIT = ALWAYS )",
51+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 DELIMIT = NEVER )",
52+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 DELIMIT = AUTO )",
53+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 FORMAT = 'format', 2 FORMAT = 'format', DELIMIT = ALWAYS )",
54+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1 .. 2 )",
55+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1, 1 .. 2 )",
56+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ( 1, 1 .. 2, 3 )"
57+
})
58+
public void testExportIntoFileCSVCols(String sqlStr) throws JSQLParserException {
59+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
60+
}
61+
62+
@ParameterizedTest
63+
@ValueSource(strings = {
64+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv'",
65+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file1.fbv' FILE 'file2.fbv'",
66+
67+
"EXPORT schemaName.tableName INTO LOCAL SECURE FBV FILE 'file.fbv'",
68+
"EXPORT schemaName.tableName INTO LOCAL SECURE FBV FILE 'file1.fbv' FILE 'file2.fbv'"
69+
})
70+
public void testExportIntoFileFBV(String sqlStr) throws JSQLParserException {
71+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
72+
}
73+
74+
@ParameterizedTest
75+
@ValueSource(strings = {
76+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( SIZE = 1 )",
77+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( FORMAT = 'format' )",
78+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( ALIGN = LEFT )",
79+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( ALIGN = RIGHT )",
80+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( PADDING = 'padding' )",
81+
82+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( SIZE = 1, START = 1 )",
83+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( SIZE = 1 START = 1 )",
84+
"EXPORT schemaName.tableName INTO LOCAL FBV FILE 'file.fbv' ( SIZE = 1 START = 1, FORMAT = 'format' )"
85+
})
86+
public void testExportIntoFileFBVCols(String sqlStr) throws JSQLParserException {
87+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
88+
}
89+
90+
@ParameterizedTest
91+
@ValueSource(strings = {
92+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ENCODING = 'UTF-8'",
93+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' REPLACE",
94+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' TRUNCATE",
95+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' NULL = 'null'",
96+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' BOOLEAN = 'yes/no'",
97+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ROW SEPARATOR = 'CRLF'",
98+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' COLUMN SEPARATOR = ','",
99+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' COLUMN DELIMITER = '\"'",
100+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' DELIMIT = ALWAYS",
101+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' DELIMIT = NEVER",
102+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' DELIMIT = AUTO",
103+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' WITH COLUMN NAMES",
104+
105+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ENCODING = 'UTF-8' REPLACE",
106+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ENCODING = 'UTF-8' REPLACE WITH COLUMN NAMES"
107+
})
108+
public void testExportIntoFileFileOpts(String sqlStr) throws JSQLParserException {
109+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
110+
}
111+
112+
@ParameterizedTest
113+
@ValueSource(strings = {
114+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' VERIFY CERTIFICATE",
115+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' IGNORE CERTIFICATE",
116+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' PUBLIC KEY 'publicKey'",
117+
118+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' VERIFY CERTIFICATE PUBLIC KEY 'publicKey'",
119+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' IGNORE CERTIFICATE PUBLIC KEY 'publicKey'"
120+
})
121+
public void testExportIntoFileCertVerification(String sqlStr) throws JSQLParserException {
122+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
123+
}
124+
125+
@ParameterizedTest
126+
@ValueSource(strings = {
127+
"EXPORT schemaName.tableName INTO CSV AT connectionName FILE 'file.csv'",
128+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' FILE 'file.csv'",
129+
130+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'",
131+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'",
132+
133+
"EXPORT schemaName.tableName INTO CSV AT connectionName IGNORE CERTIFICATE FILE 'file.csv'",
134+
"EXPORT schemaName.tableName INTO CSV AT connectionName VERIFY CERTIFICATE FILE 'file.csv'",
135+
"EXPORT schemaName.tableName INTO CSV AT connectionName PUBLIC KEY 'publicKey' FILE 'file.csv'",
136+
"EXPORT schemaName.tableName INTO CSV AT connectionName IGNORE CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'",
137+
"EXPORT schemaName.tableName INTO CSV AT connectionName VERIFY CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'",
138+
139+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' IGNORE CERTIFICATE FILE 'file.csv'",
140+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' IGNORE CERTIFICATE FILE 'file.csv'",
141+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' VERIFY CERTIFICATE FILE 'file.csv'",
142+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' VERIFY CERTIFICATE FILE 'file.csv'",
143+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' PUBLIC KEY 'publicKey' FILE 'file.csv'",
144+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' PUBLIC KEY 'publicKey' FILE 'file.csv'",
145+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' IGNORE CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'",
146+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' IGNORE CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'",
147+
"EXPORT schemaName.tableName INTO CSV AT connectionName USER 'user' IDENTIFIED BY 'password' VERIFY CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'",
148+
"EXPORT schemaName.tableName INTO CSV AT '127.0.0.1' USER 'user' IDENTIFIED BY 'password' VERIFY CERTIFICATE PUBLIC KEY 'publicKey' FILE 'file.csv'"
149+
})
150+
public void testExportIntoConnectionDef(String sqlStr) throws JSQLParserException {
151+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
152+
}
153+
154+
@ParameterizedTest
155+
@ValueSource(strings = {
156+
"EXPORT schemaName.tableName INTO CSV AT CLOUD NONE connectionName FILE 'file.csv'",
157+
"EXPORT schemaName.tableName INTO CSV AT CLOUD NONE '127.0.0.1' FILE 'file.csv'",
158+
"EXPORT schemaName.tableName INTO CSV AT CLOUD NONE connectionName USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'",
159+
"EXPORT schemaName.tableName INTO CSV AT CLOUD NONE '127.0.0.1' USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'",
160+
"EXPORT schemaName.tableName INTO CSV AT CLOUD AZURE BLOBSTORAGE connectionName FILE 'file.csv'",
161+
"EXPORT schemaName.tableName INTO CSV AT CLOUD AZURE BLOBSTORAGE '127.0.0.1' FILE 'file.csv'",
162+
"EXPORT schemaName.tableName INTO CSV AT CLOUD AZURE BLOBSTORAGE connectionName USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'",
163+
"EXPORT schemaName.tableName INTO CSV AT CLOUD AZURE BLOBSTORAGE '127.0.0.1' USER 'user' IDENTIFIED BY 'password' FILE 'file.csv'"
164+
})
165+
public void testExportIntoCloudConnectionDef(String sqlStr) throws JSQLParserException {
166+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
167+
}
168+
169+
@ParameterizedTest
170+
@ValueSource(strings = {
171+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName",
172+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName ( columnName )",
173+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName ( columnName1, columnName2 )",
174+
175+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName REPLACE",
176+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName TRUNCATE",
177+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName CREATED BY 'CREATE OR REPLACE TABLE schemaName (columnName INTEGER)'",
178+
179+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName REPLACE TRUNCATE",
180+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName ( columnName ) REPLACE TRUNCATE",
181+
"EXPORT schemaName.tableName INTO EXA AT connectionName TABLE schemaName.tableName ( columnName1, columnName2 ) REPLACE TRUNCATE",
182+
183+
"EXPORT schemaName.tableName INTO EXA AT connectionName STATEMENT 'insert into schemaName.tableName ( columnName ) values ( ? )'"
184+
})
185+
public void testExportIntoDBMSEXA(String sqlStr) throws JSQLParserException {
186+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
187+
}
188+
189+
@ParameterizedTest
190+
@ValueSource(strings = {
191+
"EXPORT schemaName.tableName INTO ORA AT connectionName TABLE schemaName.tableName",
192+
"EXPORT schemaName.tableName INTO ORA AT connectionName TABLE schemaName.tableName ( columnName )",
193+
"EXPORT schemaName.tableName INTO ORA AT connectionName TABLE schemaName.tableName ( columnName1, columnName2 )",
194+
195+
"EXPORT schemaName.tableName INTO ORA AT connectionName STATEMENT 'insert into schemaName.tableName ( columnName ) values ( ? )'"
196+
})
197+
public void testExportIntoDBMSORA(String sqlStr) throws JSQLParserException {
198+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
199+
}
200+
201+
@ParameterizedTest
202+
@ValueSource(strings = {
203+
"EXPORT schemaName.tableName INTO JDBC AT connectionName TABLE tableName",
204+
"EXPORT schemaName.tableName INTO JDBC DRIVER = 'driverName' AT connectionName TABLE tableName"
205+
})
206+
public void testExportIntoDBMSJDBC(String sqlStr) throws JSQLParserException {
207+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
208+
}
209+
210+
@ParameterizedTest
211+
@ValueSource(strings = {
212+
"EXPORT schemaName.tableName INTO SCRIPT scriptName",
213+
"EXPORT schemaName.tableName INTO SCRIPT scriptName AT connectionName",
214+
"EXPORT schemaName.tableName INTO SCRIPT scriptName WITH propertyName = 'value'",
215+
"EXPORT schemaName.tableName INTO SCRIPT scriptName WITH propertyName = 'value' propertyName2 = 'value2'",
216+
"EXPORT schemaName.tableName INTO SCRIPT scriptName AT connectionName WITH propertyName = 'value' propertyName2 = 'value2'"
217+
})
218+
public void testExportIntoScript(String sqlStr) throws JSQLParserException {
219+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
220+
}
221+
222+
@ParameterizedTest
223+
@ValueSource(strings = {
224+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT 1",
225+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT UNLIMITED",
226+
227+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT 1 ERRORS",
228+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT UNLIMITED ERRORS",
229+
230+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO CSV AT connectionName FILE 'file.csv'",
231+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL CSV FILE 'file.csv'",
232+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL SECURE CSV FILE 'file.csv'",
233+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO schemaName.tableName",
234+
235+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO CSV AT connectionName FILE 'file.csv' REJECT LIMIT 1",
236+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT 1",
237+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL SECURE CSV FILE 'file.csv' REJECT LIMIT 1",
238+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO schemaName.tableName REJECT LIMIT 1",
239+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO CSV AT connectionName FILE 'file.csv' REJECT LIMIT 1 ERRORS",
240+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT 1 ERRORS",
241+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL SECURE CSV FILE 'file.csv' REJECT LIMIT 1 ERRORS",
242+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO schemaName.tableName REJECT LIMIT 1 ERRORS",
243+
244+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO CSV AT connectionName FILE 'file.csv' REJECT LIMIT UNLIMITED",
245+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT UNLIMITED",
246+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL SECURE CSV FILE 'file.csv' REJECT LIMIT UNLIMITED",
247+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO schemaName.tableName REJECT LIMIT UNLIMITED",
248+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO CSV AT connectionName FILE 'file.csv' REJECT LIMIT UNLIMITED ERRORS",
249+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL CSV FILE 'file.csv' REJECT LIMIT UNLIMITED ERRORS",
250+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO LOCAL SECURE CSV FILE 'file.csv' REJECT LIMIT UNLIMITED ERRORS",
251+
"EXPORT schemaName.tableName INTO LOCAL CSV FILE 'file.csv' ERRORS INTO schemaName.tableName REJECT LIMIT UNLIMITED ERRORS"
252+
})
253+
public void testImportErrorClause(String sqlStr) throws JSQLParserException {
254+
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr);
255+
}
256+
}

0 commit comments

Comments
 (0)