Skip to content

Commit d5ec766

Browse files
committed
Complete
0 parents  commit d5ec766

File tree

10 files changed

+797
-0
lines changed

10 files changed

+797
-0
lines changed

.gitignore

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/
34+
/.mvn/
35+
/target/

pom.xml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.shf.sql</groupId>
8+
<artifactId>sql-parse-sample</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<name>sql-parse-sample</name>
12+
<url>http://www.example.com</url>
13+
14+
<properties>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
<maven.compiler.source>1.8</maven.compiler.source>
17+
</properties>
18+
19+
<dependencies>
20+
<dependency>
21+
<groupId>com.google.guava</groupId>
22+
<artifactId>guava</artifactId>
23+
<version>19.0</version>
24+
</dependency>
25+
26+
<dependency>
27+
<groupId>org.slf4j</groupId>
28+
<artifactId>slf4j-api</artifactId>
29+
<version>1.7.30</version>
30+
</dependency>
31+
32+
<dependency>
33+
<groupId>log4j</groupId>
34+
<artifactId>log4j</artifactId>
35+
<version>1.2.17</version>
36+
</dependency>
37+
38+
<dependency>
39+
<groupId>org.slf4j</groupId>
40+
<artifactId>slf4j-log4j12</artifactId>
41+
<version>1.7.25</version>
42+
</dependency>
43+
44+
<dependency>
45+
<groupId>org.projectlombok</groupId>
46+
<artifactId>lombok</artifactId>
47+
<version>1.18.20</version>
48+
</dependency>
49+
50+
<dependency>
51+
<groupId>com.github.jsqlparser</groupId>
52+
<artifactId>jsqlparser</artifactId>
53+
<version>4.0</version>
54+
</dependency>
55+
56+
<dependency>
57+
<groupId>org.apache.commons</groupId>
58+
<artifactId>commons-collections4</artifactId>
59+
<version>4.2</version>
60+
</dependency>
61+
62+
<dependency>
63+
<groupId>org.apache.calcite</groupId>
64+
<artifactId>calcite-core</artifactId>
65+
<version>1.26.0</version>
66+
</dependency>
67+
</dependencies>
68+
69+
<build>
70+
</build>
71+
</project>

src/main/java/com/shf/sql/App.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.shf.sql;
2+
3+
import com.shf.sql.helper.CalciteHelper;
4+
import com.shf.sql.helper.SqlInfo;
5+
import com.shf.sql.helper.SqlParseHelper;
6+
import lombok.extern.slf4j.Slf4j;
7+
8+
@Slf4j
9+
public class App {
10+
public static void main(String[] args) throws Exception {
11+
log.info("***************************calciteExtractTest***************************");
12+
calciteExtractTest();
13+
14+
log.info("***************************calciteCheckTest***************************");
15+
calciteCheckTest();
16+
17+
log.info("***************************sqlParseExtractTest***************************");
18+
sqlParseExtractTest();
19+
}
20+
21+
private static void calciteExtractTest() throws Exception {
22+
CalciteHelper calciteHelper = CalciteHelper.getInstance();
23+
24+
String sql = "SELECT dwd_ans_rt.name FROM(SELECT distinct dwd_patent_ans_relation_rt.ans_id FROM (SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_cite_relation_rt WHERE dwd_patent_cite_relation_rt.pdoc_id=157513407)T1 INNER JOIN dwd_patent_ans_relation_rt T2 ON T1.t_pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.type = 'current_assignee')T1 INNER JOIN dwd_ans_rt T2 ON T1.ans_id = dwd_ans_rt.ans_id";
25+
calciteHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
26+
27+
sql = "SELECT distinct dwd_ans_rt.name FROM(SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_cite_relation_rt WHERE dwd_patent_cite_relation_rt.pdoc_id=157513407) T1 INNER JOIN dwd_patent_ans_relation_rt T2 ON T1.t_pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.type = 'current_assignee' INNER JOIN dwd_ans_rt T3 ON dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id";
28+
calciteHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
29+
30+
sql = "SELECT max_patents_ancs_id.ancs_id, max_patents_ancs_id.p_docid_num, max_patents_country.country, max_patents_country.county_count, max_patents_country.rank_in_country FROM (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, COUNT(DISTINCT tmp_10w.pdoc_id) AS p_docid_num FROM tmp_10w, dwd_patent_ans_relation_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id and type = 'current_assignee'GROUP BY dwd_patent_ans_relation_rt.ans_id ORDER BY p_docid_num DESC LIMIT 1, 100) max_patents_ancs_id, (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, dwd_patent_publication_rt.country country, count(tmp_10w.pdoc_id) county_count, row_number() over ( PARTITION BY dwd_patent_ans_relation_rt.ans_id ORDER BY count(tmp_10w.pdoc_id) DESC ) rank_in_country FROM tmp_10w, dwd_patent_ans_relation_rt, dwd_patent_publication_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_publication_rt.pdoc_id and type = 'current_assignee' GROUP BY dwd_patent_ans_relation_rt.ans_id, dwd_patent_publication_rt.country) max_patents_country WHERE max_patents_ancs_id.ancs_id = max_patents_country.ancs_id AND max_patents_country.rank_in_country <= 100 ORDER BY max_patents_ancs_id.p_docid_num DESC, max_patents_country.rank_in_country";
31+
calciteHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
32+
33+
sql = "SELECT * FROM (SELECT x.one_layer_name, x.two_layer_name, COUNT(DISTINCT dwd_patent_ans_relation_rt.pdoc_id) AS patent_count FROM (SELECT dwd_patent_ans_relation_rt.ans_id AS one_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS one_layer_name, dwd_patent_ans_relation_rt.ans_id AS two_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS two_layer_name FROM (SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'A'AND dwd_patent_ans_relation_rt.type = 'current_assignee') a, dwd_patent_cite_relation_rt b, dwd_patent_ans_relation_rt c, dwd_patent_cite_relation_rt d, dwd_patent_ans_relation_rt e, (SELECT dwd_patent_cite_relation_rt.pdoc_id, dwd_patent_ans_relation_rt.ans_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.t_pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee') f WHERE a.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id <> 'A' AND dwd_patent_ans_relation_rt.ans_id <> 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee' AND dwd_patent_cite_relation_rt.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = f.pdoc_id) x, dwd_patent_ans_relation_rt y, dwd_ans_rt z WHERE x.two_layer_ans_id = dwd_patent_ans_relation_rt.ans_id AND dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id AND dwd_ans_rt.lang = 'cn' GROUP BY x.two_layer_ans_id, x.two_layer_ans_id) k ORDER BY k.patent_count DESC LIMIT 5";
34+
calciteHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
35+
}
36+
37+
private static void calciteCheckTest() throws Exception {
38+
CalciteHelper calciteHelper = CalciteHelper.getInstance();
39+
40+
String sql = "select * from aa limit 5,20";
41+
log.info("{}", calciteHelper.withLimit(sql));
42+
log.info("{}", calciteHelper.selectAllColumn(sql));
43+
44+
sql = "SELECT distinct dwd_ans_rt.name FROM(SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_cite_relation_rt WHERE dwd_patent_cite_relation_rt.pdoc_id=157513407) T1 INNER JOIN dwd_patent_ans_relation_rt T2 ON T1.t_pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.type = 'current_assignee' INNER JOIN dwd_ans_rt T3 ON dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id";
45+
log.info("{}", calciteHelper.withLimit(sql));
46+
log.info("{}", calciteHelper.selectAllColumn(sql));
47+
48+
sql = "SELECT max_patents_ancs_id.ancs_id, max_patents_ancs_id.p_docid_num, max_patents_country.country, max_patents_country.county_count, max_patents_country.rank_in_country FROM (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, COUNT(DISTINCT tmp_10w.pdoc_id) AS p_docid_num FROM tmp_10w, dwd_patent_ans_relation_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id and type = 'current_assignee'GROUP BY dwd_patent_ans_relation_rt.ans_id ORDER BY p_docid_num DESC LIMIT 1, 100) max_patents_ancs_id, (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, dwd_patent_publication_rt.country country, count(tmp_10w.pdoc_id) county_count, row_number() over ( PARTITION BY dwd_patent_ans_relation_rt.ans_id ORDER BY count(tmp_10w.pdoc_id) DESC ) rank_in_country FROM tmp_10w, dwd_patent_ans_relation_rt, dwd_patent_publication_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_publication_rt.pdoc_id and type = 'current_assignee' GROUP BY dwd_patent_ans_relation_rt.ans_id, dwd_patent_publication_rt.country) max_patents_country WHERE max_patents_ancs_id.ancs_id = max_patents_country.ancs_id AND max_patents_country.rank_in_country <= 100 ORDER BY max_patents_ancs_id.p_docid_num DESC, max_patents_country.rank_in_country";
49+
log.info("{}", calciteHelper.withLimit(sql));
50+
log.info("{}", calciteHelper.selectAllColumn(sql));
51+
52+
sql = "SELECT * FROM (SELECT x.one_layer_name, x.two_layer_name, COUNT(DISTINCT dwd_patent_ans_relation_rt.pdoc_id) AS patent_count FROM (SELECT dwd_patent_ans_relation_rt.ans_id AS one_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS one_layer_name, dwd_patent_ans_relation_rt.ans_id AS two_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS two_layer_name FROM (SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'A'AND dwd_patent_ans_relation_rt.type = 'current_assignee') a, dwd_patent_cite_relation_rt b, dwd_patent_ans_relation_rt c, dwd_patent_cite_relation_rt d, dwd_patent_ans_relation_rt e, (SELECT dwd_patent_cite_relation_rt.pdoc_id, dwd_patent_ans_relation_rt.ans_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.t_pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee') f WHERE a.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id <> 'A' AND dwd_patent_ans_relation_rt.ans_id <> 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee' AND dwd_patent_cite_relation_rt.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = f.pdoc_id) x, dwd_patent_ans_relation_rt y, dwd_ans_rt z WHERE x.two_layer_ans_id = dwd_patent_ans_relation_rt.ans_id AND dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id AND dwd_ans_rt.lang = 'cn' GROUP BY x.two_layer_ans_id, x.two_layer_ans_id) k ORDER BY k.patent_count DESC LIMIT 5";
53+
log.info("{}", calciteHelper.withLimit(sql));
54+
log.info("{}", calciteHelper.selectAllColumn(sql));
55+
}
56+
57+
private static void sqlParseExtractTest() throws Exception {
58+
SqlParseHelper sqlParseHelper = SqlParseHelper.getInstance();
59+
60+
String sql = "SELECT dwd_ans_rt.name FROM(SELECT distinct dwd_patent_ans_relation_rt.ans_id FROM (SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_cite_relation_rt WHERE dwd_patent_cite_relation_rt.pdoc_id=157513407)T1 INNER JOIN dwd_patent_ans_relation_rt T2 ON T1.t_pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.type = 'current_assignee')T1 INNER JOIN dwd_ans_rt T2 ON T1.ans_id = dwd_ans_rt.ans_id";
61+
sqlParseHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
62+
63+
sql = "SELECT distinct dwd_ans_rt.name FROM(SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_cite_relation_rt WHERE dwd_patent_cite_relation_rt.pdoc_id=157513407) T1 INNER JOIN dwd_patent_ans_relation_rt T2 ON T1.t_pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.type = 'current_assignee' INNER JOIN dwd_ans_rt T3 ON dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id";
64+
sqlParseHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
65+
66+
sql = "SELECT max_patents_ancs_id.ancs_id, max_patents_ancs_id.p_docid_num, max_patents_country.country, max_patents_country.county_count, max_patents_country.rank_in_country FROM (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, COUNT(DISTINCT tmp_10w.pdoc_id) AS p_docid_num FROM tmp_10w, dwd_patent_ans_relation_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id and type = 'current_assignee'GROUP BY dwd_patent_ans_relation_rt.ans_id ORDER BY p_docid_num DESC LIMIT 1, 100) max_patents_ancs_id, (SELECT dwd_patent_ans_relation_rt.ans_id ancs_id, dwd_patent_publication_rt.country country, count(tmp_10w.pdoc_id) county_count, row_number() over ( PARTITION BY dwd_patent_ans_relation_rt.ans_id ORDER BY count(tmp_10w.pdoc_id) DESC ) rank_in_country FROM tmp_10w, dwd_patent_ans_relation_rt, dwd_patent_publication_rt WHERE tmp_10w.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_publication_rt.pdoc_id and type = 'current_assignee' GROUP BY dwd_patent_ans_relation_rt.ans_id, dwd_patent_publication_rt.country) max_patents_country WHERE max_patents_ancs_id.ancs_id = max_patents_country.ancs_id AND max_patents_country.rank_in_country <= 100 ORDER BY max_patents_ancs_id.p_docid_num DESC, max_patents_country.rank_in_country";
67+
sqlParseHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
68+
69+
sql = "SELECT * FROM (SELECT x.one_layer_name, x.two_layer_name, COUNT(DISTINCT dwd_patent_ans_relation_rt.pdoc_id) AS patent_count FROM (SELECT dwd_patent_ans_relation_rt.ans_id AS one_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS one_layer_name, dwd_patent_ans_relation_rt.ans_id AS two_layer_ans_id, dwd_patent_ans_relation_rt.`name` AS two_layer_name FROM (SELECT dwd_patent_cite_relation_rt.t_pdoc_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'A'AND dwd_patent_ans_relation_rt.type = 'current_assignee') a, dwd_patent_cite_relation_rt b, dwd_patent_ans_relation_rt c, dwd_patent_cite_relation_rt d, dwd_patent_ans_relation_rt e, (SELECT dwd_patent_cite_relation_rt.pdoc_id, dwd_patent_ans_relation_rt.ans_id FROM dwd_patent_ans_relation_rt t1, dwd_patent_cite_relation_rt t2 WHERE dwd_patent_ans_relation_rt.pdoc_id = dwd_patent_cite_relation_rt.t_pdoc_id AND dwd_patent_ans_relation_rt.ans_id = 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee') f WHERE a.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_ans_relation_rt.ans_id <> 'A' AND dwd_patent_ans_relation_rt.ans_id <> 'G' AND dwd_patent_ans_relation_rt.type = 'current_assignee' AND dwd_patent_cite_relation_rt.t_pdoc_id = dwd_patent_cite_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = dwd_patent_ans_relation_rt.pdoc_id AND dwd_patent_cite_relation_rt.pdoc_id = f.pdoc_id) x, dwd_patent_ans_relation_rt y, dwd_ans_rt z WHERE x.two_layer_ans_id = dwd_patent_ans_relation_rt.ans_id AND dwd_patent_ans_relation_rt.ans_id = dwd_ans_rt.ans_id AND dwd_ans_rt.lang = 'cn' GROUP BY x.two_layer_ans_id, x.two_layer_ans_id) k ORDER BY k.patent_count DESC LIMIT 5";
70+
sqlParseHelper.extractSqlInfo(sql, SqlInfo.builder().sql(sql).needExtractFields(true).needExtractTables(true).build());
71+
}
72+
73+
}

0 commit comments

Comments
 (0)