This is an automated email from the ASF dual-hosted git repository.

impactcn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 69a950120b [feature] clickhouse support ttl (#5032)
69a950120b is described below

commit 69a950120b2e3e17ddc6101b010bfb87592a83d8
Author: Misaya295 <[email protected]>
AuthorDate: Thu Aug 17 18:08:35 2023 +0800

    [feature] clickhouse support ttl (#5032)
    
    * clickhouse support ttl
    
    * clickhouse support ttl
    
    * fix ci
---
 db/init/mysql/schema.sql                               |  3 +++
 db/init/og/create-table.sql                            |  3 +++
 db/init/oracle/schema.sql                              |  7 +++++++
 db/init/pg/create-table.sql                            |  3 +++
 db/upgrade/2.6.0-upgrade-2.6.1-mysql.sql               |  7 ++++++-
 db/upgrade/2.6.0-upgrade-2.6.1-og.sql                  |  6 ++++++
 db/upgrade/2.6.0-upgrade-2.6.1-oracle.sql              | 13 +++++++++++++
 db/upgrade/2.6.0-upgrade-2.6.1-pg.sql                  |  5 +++++
 .../clickhouse/client/ClickHouseLogCollectClient.java  |  8 +++++++-
 .../clickhouse/config/ClickHouseLogCollectConfig.java  | 18 ++++++++++++++++++
 .../clickhouse/constant/ClickHouseLoggingConstant.java |  1 +
 .../clickhouse/LoggingClickHousePluginTest.java        |  3 +++
 .../client/ClickHouseLogCollectClientTest.java         |  2 +-
 .../config/ClickHouseLogCollectConfigTest.java         | 12 ++++++++++++
 .../LoggingClickHousePluginDataHandlerTest.java        |  2 +-
 15 files changed, 89 insertions(+), 4 deletions(-)

diff --git a/db/init/mysql/schema.sql b/db/init/mysql/schema.sql
index f743f8ef5b..f0f2db8b9e 100644
--- a/db/init/mysql/schema.sql
+++ b/db/init/mysql/schema.sql
@@ -1112,6 +1112,7 @@ INSERT INTO `plugin_handle` VALUES 
('1529402613204172773', '38', 'username', 'us
 INSERT INTO `plugin_handle` VALUES ('1529402613204172774', '38', 'password', 
'password', 2, 3, 7, 
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2022-12-30 
00:17:21.150', '2022-12-30 00:17:21.150');
 INSERT INTO `plugin_handle` VALUES ('1529402613204172775', '38', 'engine', 
'engine', 3, 3, 8, 
'{\"required\":\"0\",\"defaultValue\":\"MergeTree\",\"rule\":\"\"}', 
'2022-12-30 00:17:21.150', '2022-12-30 00:17:21.150');
 INSERT INTO `plugin_handle` VALUES ('1529402613204172776', '38', 
'clusterName', 'clusterName', 3, 3, 9, 
'{\"required\":\"1\",\"defaultValue\":\"cluster\",\"rule\":\"\"}', '2022-12-30 
00:17:21.150', '2022-12-30 00:17:21.150');
+INSERT INTO `plugin_handle` VALUES ('1529402613204172777', '38', 'ttl', 'ttl', 
3, 3, 10,  '{\"required\":\"0\",\"defaultValue\":\"30\"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
 
 
 INSERT INTO `plugin_handle` VALUES ('1570590990341775360', '39', 'endpoint', 
'casdoor endpoint', 2, 3, 0, '{\"required\":\"1\",\"rule\":\"\"}', '2022-09-27 
12:00:00', '2022-09-27 12:00:00');
@@ -1842,6 +1843,8 @@ INSERT INTO `shenyu_dict` VALUES ('1572621912915369984', 
'maskStatus', 'MASK_STA
 INSERT INTO `shenyu_dict` VALUES ('1572621976689762304', 'maskStatus', 
'MASK_STATUS_TRUE', 'mask', 'true', '', 0, 1, '2022-09-22 00:21:11.924', 
'2022-09-22 00:21:11.924');
 INSERT INTO `shenyu_dict` VALUES ('1572621976689762305', 'engine', 'engine', 
'ReplacingMergeTree', 'ReplacingMergeTree', '', 0, 1, '2022-09-22 
00:21:11.924', '2022-09-22 00:21:11.924');
 INSERT INTO `shenyu_dict` VALUES ('1572621976689762306', 'engine', 'engine', 
'MergeTree', 'MergeTree', '', 1, 1, '2022-09-22 00:21:11.924', '2022-09-22 
00:21:11.924');
+INSERT INTO `shenyu_dict` VALUES ('1572621976689762310', 'engine', 'engine', 
'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 2, 1, 
'2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO `shenyu_dict` VALUES ('1572621976689762311', 'engine', 'engine', 
'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 11:14:15', 
'2023-08-16 11:15:14');
 INSERT INTO `shenyu_dict` VALUES ('1630761573833920512', 'mapType', 'mapType', 
'all', 'all', '', 1, 1, '2023-03-01 10:47:11', '2023-03-01 10:47:11');
 INSERT INTO `shenyu_dict` VALUES ('1630761984393367552', 'mapType', 'mapType', 
'field', 'field', '', 1, 1, '2023-03-01 10:48:49', '2023-03-01 10:48:49');
 INSERT INTO `shenyu_dict` VALUES ('1679002911061737472', 'discoveryMode', 
'DISCOVERY_MODE', 'zookeeper', 
'{"baseSleepTimeMilliseconds":"1000","maxRetries":"3","maxSleepTimeMilliseconds":"1000","connectionTimeoutMilliseconds":"1000","sessionTimeoutMilliseconds":"1000","namespace":"","digest":null}',
 'discoery mode to link zookeeper', 0, 1,'2023-03-01 10:48:49', '2023-03-01 
10:48:49');
diff --git a/db/init/og/create-table.sql b/db/init/og/create-table.sql
index fea2d79ad8..b0b198478f 100644
--- a/db/init/og/create-table.sql
+++ b/db/init/og/create-table.sql
@@ -1231,6 +1231,7 @@ INSERT INTO "public"."plugin_handle" VALUES 
('1529403902783524998', '38', 'port'
 INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524999', '38', 
'database', 'database', 2, 2, 0, 
'{"required":"0","defaultValue":"shenyu-gateway","placeholder":"database"}', 
'2022-06-30 21:00:00', '2022-06-30 21:00:00');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172800', '38', 
'username', 'username', 2, 2, 0, 
'{"required":"0","defaultValue":"foo","placeholder":"username"}', '2022-06-30 
21:00:00', '2022-06-30 21:00:00');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172801', '38', 
'password', 'password', 2, 2, 0, 
'{"required":"0","defaultValue":"bar","placeholder":"password"}', '2022-06-30 
21:00:00', '2022-06-30 21:00:00');
+INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172777', '38', 
'ttl', 'ttl', 3, 3, 10, '{"required":"0","defaultValue":"30"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172802', '8', 
'loadBalance', 'loadStrategy', 3, 2, 3, 
'{"defaultValue":"roundRobin","rule":""}', '2022-06-30 21:00:00', '2022-06-30 
21:00:00');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172803', '10', 
'flowRuleMaxQueueingTimeMs', 'flowRuleMaxQueueingTimeMs', 1, 2, 6, 
'{"required":"0","defaultValue":"500"}', '2022-06-30 21:00:00', '2022-06-30 
21:00:00');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172804', '10', 
'flowRuleWarmUpPeriodSec', 'flowRuleWarmUpPeriodSec', 1, 2, 6, 
'{"required":"0","defaultValue":"10"}', '2022-06-30 21:00:00', '2022-06-30 
21:00:00');
@@ -2061,6 +2062,8 @@ INSERT INTO "public"."shenyu_dict" VALUES 
('1572621912915369984', 'maskStatus',
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762304', 
'maskStatus', 'MASK_STATUS_TRUE', 'mask', 'true', '', 0, 1, '2022-09-22 
00:21:11.924', '2022-09-22 00:21:11.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762305', 'engine', 
'engine', 'ReplacingMergeTree', 'ReplacingMergeTree', '', 0, 1, '2022-09-22 
00:21:11.924', '2022-09-22 00:21:11.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762306', 'engine', 
'engine', 'MergeTree', 'MergeTree', '', 1, 1, '2022-09-22 00:21:11.924', 
'2022-09-22 00:21:11.924');
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762310', 'engine', 
'engine', 'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 
2, 1, '2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762311', 'engine', 
'engine', 'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762307', 
'loadBalance', 'LOAD_BALANCE', 'leastActive', 'leastActive', 'leastActive', 3, 
1, '2023-01-17 18:02:52.924', '2023-01-17 18:02:52.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1630761573833920512', 'mapType', 
'mapType', 'all', 'all', '', 1, 1, '2023-03-01 10:47:11', '2023-03-01 
10:47:11');
 INSERT INTO "public"."shenyu_dict" VALUES ('1630761984393367552', 'mapType', 
'mapType', 'field', 'field', '', 1, 1, '2023-03-01 10:48:49', '2023-03-01 
10:48:49');
diff --git a/db/init/oracle/schema.sql b/db/init/oracle/schema.sql
index d071f998a4..81a7751493 100644
--- a/db/init/oracle/schema.sql
+++ b/db/init/oracle/schema.sql
@@ -1092,6 +1092,11 @@ VALUES ('1545812228228259841', 'engine', 'engine', 
'ReplacingMergeTree', 'Replac
 insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
 VALUES ('1545812228228259842', 'engine', 'engine', 'MergeTree', 'MergeTree', 
'', 1, 1);
 
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
+values ('1572621976689762310', 'engine', 'engine', 
'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 2, 1);
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
+VALUES ('1572621976689762311', 'engine', 'engine', 'ReplicatedMergeTree', 
'ReplicatedMergeTree', '', 3, 1);
 
 INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ INTO SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
 VALUES ('1545812228228259843', 'loadBalance', 'LOAD_BALANCE', 'leastActive', 
'leastActive', 'leastActive', 3, 1);
@@ -1972,6 +1977,8 @@ values ('1518229897214468261', '38', 'engine', 'engine', 
3, 3, 8, '{"required":"
 insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type)) 
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT, 
EXT_OBJ)
 VALUES ('1529402613204172862', '38', 'clusterName', 'clusterName', 3, 3, 9, 
'{"required":"1","defaultValue":"cluster"}');
 
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type)) 
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT, 
EXT_OBJ)
+values ('1529402613204172777', '38', 'ttl', 'ttl', 3, 3, 10,  
'{\"required\":\"0\",\"defaultValue\":\"30\"}');
 
 insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type)) 
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT, 
EXT_OBJ)
 VALUES ('1529402613204172863', '43', 'projectId', 'projectId', 2, 3, 0, 
'{"required":"1","rule":""}');
diff --git a/db/init/pg/create-table.sql b/db/init/pg/create-table.sql
index 7a60b18e49..3472e3a5e5 100644
--- a/db/init/pg/create-table.sql
+++ b/db/init/pg/create-table.sql
@@ -1264,6 +1264,7 @@ INSERT INTO "public"."plugin_handle" VALUES 
('1529402613204172833', '38', 'usern
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172834', '38', 
'password', 'password', 2, 3, 7, '{"required":"1","defaultValue":""}', 
'2023-01-02 00:17:21.150', '2023-01-02 00:17:21.150');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172835', '38', 
'engine', 'engine', 3, 3, 8, '{"required":"0","defaultValue":"MergeTree"}', 
'2023-01-02 00:17:21.150', '2023-01-02 00:17:21.150');
 INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172836', '38', 
'clusterName', 'clusterName', 3, 3, 9, 
'{"required":"1","defaultValue":"cluster"}', '2023-01-02 00:17:21.150', 
'2023-01-02 00:17:21.150');
+INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172737', '38', 
'ttl', 'ttl', 3, 3, 10,  '{"required":"0","defaultValue":"30"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
 
 
 INSERT INTO "public"."plugin_handle" VALUES ('1570590990341775360', '39', 
'endpoint', 'casdoor endpoint', 2, 3, 0, '{"required":"1","rule":""}', 
'2022-09-16 09:50:46', '2022-09-16 09:50:46');
@@ -2060,6 +2061,8 @@ INSERT INTO "public"."shenyu_dict" VALUES 
('1572621912915369984', 'maskStatus',
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762304', 
'maskStatus', 'MASK_STATUS_TRUE', 'mask', 'true', '', 0, 1, '2022-09-22 
00:21:11.924', '2022-09-22 00:21:11.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762305', 'engine', 
'engine', 'ReplacingMergeTree', 'ReplacingMergeTree', '', 0, 1, '2022-09-22 
00:21:11.924', '2022-09-22 00:21:11.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762306', 'engine', 
'engine', 'MergeTree', 'MergeTree', '', 1, 1, '2022-09-22 00:21:11.924', 
'2022-09-22 00:21:11.924');
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762310', 'engine', 
'engine', 'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 
2, 1, '2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762311', 'engine', 
'engine', 'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
 INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762307', 
'loadBalance', 'LOAD_BALANCE', 'leastActive', 'leastActive', 'leastActive', 3, 
1, '2023-01-17 18:02:52.924', '2023-01-17 18:02:52.924');
 INSERT INTO "public"."shenyu_dict" VALUES ('1630761573833920512', 'mapType', 
'mapType', 'all', 'all', '', 1, 1, '2023-03-01 10:47:11', '2023-03-01 
10:47:11');
 INSERT INTO "public"."shenyu_dict" VALUES ('1630761984393367552', 'mapType', 
'mapType', 'field', 'field', '', 1, 1, '2023-03-01 10:48:49', '2023-03-01 
10:48:49');
diff --git a/db/upgrade/2.6.0-upgrade-2.6.1-mysql.sql 
b/db/upgrade/2.6.0-upgrade-2.6.1-mysql.sql
index 19c0446058..fd724059e3 100755
--- a/db/upgrade/2.6.0-upgrade-2.6.1-mysql.sql
+++ b/db/upgrade/2.6.0-upgrade-2.6.1-mysql.sql
@@ -15,5 +15,10 @@
 -- limitations under the License.
 
 -- this file works for MySQL.
-
 INSERT INTO `shenyu_dict` VALUES ('1629402613195884213', 'operator', 
'OPERATOR', 'isBlank', 'isBlank', 'isBlank', 10, 1, '2023-08-10 11:11:18', 
'2023-08-10 11:11:18');
+
+--- clickhouse plugin
+INSERT INTO `plugin_handle` VALUES ('1529402613204172777', '38', 'ttl', 'ttl', 
3, 3, 10,  '{\"required\":\"0\",\"defaultValue\":\"30\"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
+INSERT INTO `shenyu_dict` VALUES ('1572621976689762310', 'engine', 'engine', 
'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 2, 1, 
'2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO `shenyu_dict` VALUES ('1572621976689762311', 'engine', 'engine', 
'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 11:14:15', 
'2023-08-16 11:15:14');
+---- clickhouse plugin end
diff --git a/db/upgrade/2.6.0-upgrade-2.6.1-og.sql 
b/db/upgrade/2.6.0-upgrade-2.6.1-og.sql
index 4f6a0e2685..dcedc40847 100644
--- a/db/upgrade/2.6.0-upgrade-2.6.1-og.sql
+++ b/db/upgrade/2.6.0-upgrade-2.6.1-og.sql
@@ -17,3 +17,9 @@
 -- this file works for og.
 
 INSERT INTO "public"."shenyu_dict" VALUES ('1629403902796107811', 'operator', 
'OPERATOR', 'isBlank', 'isBlank', 'isBlank', 10, 1, '2023-08-10 11:11:18', 
'2023-08-10 11:11:18');
+
+--- clickhouse plugin
+INSERT INTO  "public"."plugin_handle" VALUES ('1529402613204172777', '38', 
'ttl', 'ttl', 3, 3, 10, '{"required":"0","defaultValue":"30"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
+INSERT INTO  "public"."shenyu_dict" VALUES ('1572621976689762310', 'engine', 
'engine', 'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 
2, 1, '2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO  "public"."shenyu_dict" VALUES ('1572621976689762311', 'engine', 
'engine', 'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
+--- clickhouse plugin end
\ No newline at end of file
diff --git a/db/upgrade/2.6.0-upgrade-2.6.1-oracle.sql 
b/db/upgrade/2.6.0-upgrade-2.6.1-oracle.sql
index 1c96892b4f..f6d1bc3dd5 100755
--- a/db/upgrade/2.6.0-upgrade-2.6.1-oracle.sql
+++ b/db/upgrade/2.6.0-upgrade-2.6.1-oracle.sql
@@ -18,3 +18,16 @@
 
 insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
 values ('1618229897206079499', 'operator', 'OPERATOR', 'isBlank', 'isBlank', 
'isBlank', 8, 1);
+
+--- clickhouse plugin
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type)) 
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT, 
EXT_OBJ)
+values ('1529402613204172777', '38', 'ttl', 'ttl', 3, 3, 10,  
'{\"required\":\"0\",\"defaultValue\":\"30\"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
+values ('1572621976689762310', 'engine', 'engine', 
'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 2, 1);
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(shenyu_dict(type, dict_code, dict_name)) 
*/ into SHENYU_DICT (ID, TYPE, DICT_CODE, DICT_NAME, DICT_VALUE, "desc", SORT, 
ENABLED)
+VALUES ('1572621976689762311', 'engine', 'engine', 'ReplicatedMergeTree', 
'ReplicatedMergeTree', '', 3, 1);
+---- clickhouse plugin end
+
+
diff --git a/db/upgrade/2.6.0-upgrade-2.6.1-pg.sql 
b/db/upgrade/2.6.0-upgrade-2.6.1-pg.sql
index ceb0afe48e..f8a33b745b 100755
--- a/db/upgrade/2.6.0-upgrade-2.6.1-pg.sql
+++ b/db/upgrade/2.6.0-upgrade-2.6.1-pg.sql
@@ -18,3 +18,8 @@
 
 INSERT INTO "public"."shenyu_dict" VALUES ('1629403902796107811', 'operator', 
'OPERATOR', 'isBlank', 'isBlank', 'isBlank', 10, 1, '2023-08-10 11:11:18', 
'2023-08-10 11:11:18');
 
+--- clickhouse plugin
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762310', 'engine', 
'engine', 'ReplicatedReplicatedMergeTree', 'ReplicatedReplicatedMergeTree', '', 
2, 1, '2023-03-01 11:14:15', '2023-08-16 11:15:14');
+INSERT INTO "public"."shenyu_dict" VALUES ('1572621976689762311', 'engine', 
'engine', 'ReplicatedMergeTree', 'ReplicatedMergeTree', '', 3, 1, '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
+INSERT INTO "public"."plugin_handle" VALUES ('1529402613204172737', '38', 
'ttl', 'ttl', 3, 3, 10,  '{"required":"0","defaultValue":"30"}', '2023-03-01 
11:14:15', '2023-08-16 11:15:14');
+---- clickhouse plugin end
\ No newline at end of file
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClient.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClient.java
index bc1ccdf2bd..cb6e3538db 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClient.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClient.java
@@ -51,6 +51,11 @@ public class ClickHouseLogCollectClient extends 
AbstractLogConsumeClient<ClickHo
 
     private String database;
 
+    /**
+     * consume logs.
+     * @param logs logs
+     * @throws Exception exception
+     */
     @Override
     public void consume0(@NonNull final List<ShenyuRequestLog> logs) throws 
Exception {
         if (CollectionUtils.isNotEmpty(logs)) {
@@ -120,6 +125,7 @@ public class ClickHouseLogCollectClient extends 
AbstractLogConsumeClient<ClickHo
     public void initClient0(@NonNull final 
ClickHouseLogCollectConfig.ClickHouseLogConfig config) {
         final String username = config.getUsername();
         final String password = config.getPassword();
+        final String ttl = config.getTtl().isEmpty() ? "30" : config.getTtl();
         database = config.getDatabase();
         endpoint = ClickHouseNode.builder()
             .host(config.getHost())
@@ -130,7 +136,7 @@ public class ClickHouseLogCollectClient extends 
AbstractLogConsumeClient<ClickHo
             client = ClickHouseClient.builder().build();
             ClickHouseRequest<?> request = 
client.connect(endpoint).format(ClickHouseFormat.TabSeparatedWithNamesAndTypes);
             
request.query(String.format(ClickHouseLoggingConstant.CREATE_DATABASE_SQL, 
database)).executeAndWait();
-            
request.query(String.format(ClickHouseLoggingConstant.CREATE_TABLE_SQL, 
database, config.getEngine())).executeAndWait();
+            
request.query(String.format(ClickHouseLoggingConstant.CREATE_TABLE_SQL, 
database, config.getEngine(), ttl)).executeAndWait();
             
request.query(String.format(ClickHouseLoggingConstant.CREATE_DISTRIBUTED_TABLE_SQL,
 database, database, config.getClusterName(), database)).executeAndWait();
         } catch (Exception e) {
             LOG.error("inti ClickHouseLogClient error", e);
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
index 38c4c71ba6..e66336ed53 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfig.java
@@ -66,6 +66,24 @@ public class ClickHouseLogCollectConfig {
 
         private String engine;
 
+        private String ttl;
+
+        /**
+         * get ttl.
+         * @return ttl
+         */
+        public String getTtl() {
+            return ttl;
+        }
+
+        /**
+         * set ttl.
+         * @param ttl ttl
+         */
+        public void setTtl(final String ttl) {
+            this.ttl = ttl;
+        }
+
         /**
          * get clusterName.
          * @return clusterName
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/constant/ClickHouseLoggingConstant.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/constant/ClickHouseLoggingConstant.java
index a25fdc3ce1..1a570d7ae5 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/constant/ClickHouseLoggingConstant.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/main/java/org/apache/shenyu/plugin/logging/clickhouse/constant/ClickHouseLoggingConstant.java
@@ -52,6 +52,7 @@ public class ClickHouseLoggingConstant {
             + "    path    String\n"
             + ") ENGINE = %s()\n"
             + "ORDER BY 
(timeLocal,clientIp,method,rpcType,upstreamIp,upstreamResponseTime)\n"
+            + " TTL toDateTime(timeLocal) + INTERVAL %s DAY \n"
             + ";";
 
 
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/LoggingClickHousePluginTest.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/LoggingClickHousePluginTest.java
index 849346b660..8fecd86751 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/LoggingClickHousePluginTest.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/LoggingClickHousePluginTest.java
@@ -87,6 +87,9 @@ public class LoggingClickHousePluginTest {
         exchange.getAttributes().put(Constants.CONTEXT, shenyuContext);
     }
 
+    /**
+     * test doExecute.
+     */
     @Test
     public void testDoExecute() {
         
Mockito.when(chain.execute(ArgumentMatchers.any())).thenReturn(Mono.empty());
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClientTest.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClientTest.java
index f307e4ff90..ba2a013e57 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClientTest.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/client/ClickHouseLogCollectClientTest.java
@@ -48,7 +48,7 @@ public class ClickHouseLogCollectClientTest {
     public void setUp() {
         clickHouseLogCollectClient = new ClickHouseLogCollectClient();
         pluginData.setEnabled(true);
-        
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\"}");
+        
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\",
 \"ttl\":\"30\"}");
         clickHouseLogConfig = 
GsonUtils.getInstance().fromJson(pluginData.getConfig(), 
ClickHouseLogCollectConfig.ClickHouseLogConfig.class);
         shenyuRequestLog.setClientIp("127.0.0.1");
         shenyuRequestLog.setTimeLocal("2022-08-10 16:21:05.508");
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfigTest.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfigTest.java
index a292a350c5..66abadac34 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfigTest.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/config/ClickHouseLogCollectConfigTest.java
@@ -37,6 +37,7 @@ public class ClickHouseLogCollectConfigTest {
         clickHouseLogConfig.setPort("8123");
         clickHouseLogConfig.setUsername("foo");
         clickHouseLogConfig.setPassword("bar");
+        clickHouseLogConfig.setTtl("30");
         clickHouseLogConfig.setDatabase(GenericLoggingConstant.DEFAULT_SOURCE);
     }
 
@@ -112,4 +113,15 @@ public class ClickHouseLogCollectConfigTest {
         Assertions.assertEquals(GenericLoggingConstant.DEFAULT_SOURCE, 
database);
     }
 
+    @Test
+    public void testSetTTL() {
+        clickHouseLogConfig.setTtl("30");
+        Assertions.assertNull(null);
+    }
+
+    @Test
+    public void testGetTTL() {
+        final String ttl = clickHouseLogConfig.getTtl();
+        Assertions.assertEquals("30", ttl);
+    }
 }
diff --git 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
index 97e73dab80..c94e34896b 100644
--- 
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
+++ 
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-clickhouse/src/test/java/org/apache/shenyu/plugin/logging/clickhouse/handler/LoggingClickHousePluginDataHandlerTest.java
@@ -37,7 +37,7 @@ public final class LoggingClickHousePluginDataHandlerTest {
     @Test
     public void testHandlerPlugin() {
         PluginData pluginData = new PluginData();
-        
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\"}");
+        
pluginData.setConfig("{\"host\":\"127.0.0.1\",\"port\":\"8123\",\"database\":\"shenyu-gateway\",\"username\":\"foo\",\"password\":\"bar\",
 \"ttl\":\"30\"}");
         pluginData.setEnabled(true);
         pluginData.setId("37");
         pluginData.setName("loggingClickHouse");

Reply via email to