MCPcopy Create free account
hub / github.com/Nemo1870/sql-parse / SqlParserTest

Class SqlParserTest

src/test/java/com/sql/parse/util/SqlParserTest.java:15–134  ·  view source on GitHub ↗

@date 2019/4/30 10:48 @desc sql解析器测试类

Source from the content-addressed store, hash-verified

13 * @desc sql解析器测试类
14 */
15public class SqlParserTest {
16 private static final Logger logger = LogManager.getLogger(SqlParserTest.class);
17
18 /**
19 * @desc 获取所有表名
20 */
21 @Test
22 public void testGetTableNames(){
23 SqlParser sqlParser = new SqlParser("DELETE FROM A");
24 List<String> tableNames = sqlParser.getTableNames();
25 logger.debug(tableNames.toString());
26 Assert.assertEquals(tableNames.size(), 1);
27 Assert.assertTrue(tableNames.contains("A"));
28
29 sqlParser = new SqlParser("insert into A (select * from B)");
30 tableNames = sqlParser.getTableNames();
31 logger.debug(tableNames.toString());
32 Assert.assertEquals(tableNames.size(), 2);
33 Assert.assertTrue(tableNames.contains("A"));
34 Assert.assertTrue(tableNames.contains("B"));
35
36 sqlParser = new SqlParser("UPDATE job SET status = 1, finish = 1, last_update_time = 1 WHERE status = 0 ORDER BY create_time DESC LIMIT 1");
37 tableNames = sqlParser.getTableNames();
38 logger.debug(tableNames.toString());
39 Assert.assertEquals(tableNames.size(), 1);
40 Assert.assertTrue(tableNames.contains("job"));
41
42 sqlParser = new SqlParser("select * from (select id, name from B) A");
43 tableNames = sqlParser.getTableNames();
44 logger.debug(tableNames.toString());
45 Assert.assertEquals(tableNames.size(), 1);
46 Assert.assertFalse(tableNames.contains("A"));
47 Assert.assertTrue(tableNames.contains("B"));
48
49 sqlParser = new SqlParser("SELECT A.name AS name, A.age AS age, A.sex AS sex, B.name AS subject, B.value AS score FROM Student A LEFT JOIN Score B ON A.id = B.student WHERE B.name = 'math' AND B.value > 90 OR (B.name = 'chinese' AND B.value > 85) AND A.class_id IN (SELECT * FROM Class WHERE grade IN (2, 3))");
50 tableNames = sqlParser.getTableNames();
51 logger.debug(tableNames.toString());
52 Assert.assertEquals(tableNames.size(), 3);
53 Assert.assertTrue(tableNames.contains("Student"));
54 Assert.assertTrue(tableNames.contains("Score"));
55 Assert.assertTrue(tableNames.contains("Class"));
56 }
57
58 /**
59 * @desc 获取列名
60 */
61 @Test
62 public void testGetColumnNames(){
63 SqlParser sqlParser = new SqlParser("insert into A (select * from B)");
64 List<String> columnNames = sqlParser.getColumnNames();
65 logger.debug(columnNames.toString());
66 Assert.assertEquals(columnNames.size(), 0);
67
68 sqlParser = new SqlParser("insert into A(a, b) (select * from B)");
69 columnNames = sqlParser.getColumnNames();
70 logger.debug(columnNames.toString());
71 Assert.assertEquals(columnNames.size(), 2);
72 Assert.assertTrue(columnNames.contains("a"));

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected