|
| 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