From e99889cdb39af72839518823848b74df52f4d571 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:21:11 +0800 Subject: [PATCH 01/40] =?UTF-8?q?*=20=E6=94=AF=E6=8C=81=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=9A=84=20derby,=20mysql=20=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jn/nacos/plugin/datasource/mapper/BaseMapper.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 2d8645b..cee7f44 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -71,10 +71,16 @@ public abstract class BaseMapper extends AbstractMapper { } } - // 因为 mysql 不支持 在子查询中 的limit,所以 不使用自定义的SQL,而使用官方的插件 - if(Strings.isBlank(databaseName) || Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ + if(Strings.isBlank(databaseName)){ databaseName = DatabaseNames.UNDEFINED; } + + if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ + boolean builtinDatasourcePluginEnabled = Boolean.parseBoolean(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true")); + if(builtinDatasourcePluginEnabled) { + databaseName = DatabaseNames.UNDEFINED; + } + } return databaseName; } -- Gitee From be32daa2cad96d7069c9d3209bb680baab8e5c35 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:23:35 +0800 Subject: [PATCH 02/40] =?UTF-8?q?*=20=E6=94=AF=E6=8C=81=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=9A=84=20derby,=20mysql=20=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index cee7f44..6ff75c6 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -77,6 +77,8 @@ public abstract class BaseMapper extends AbstractMapper { if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ boolean builtinDatasourcePluginEnabled = Boolean.parseBoolean(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true")); + // 自定义的插件会优先于 内置的 derby, mysql 插件 + // 放到 MapperRegistry 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby if(builtinDatasourcePluginEnabled) { databaseName = DatabaseNames.UNDEFINED; } -- Gitee From 43ddaeae7e3d7bad7a40e117b7a3fe5200a53038 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:31:07 +0800 Subject: [PATCH 03/40] =?UTF-8?q?*=20=E5=87=86=E5=A4=872.0.7=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-all/pom.xml | 2 +- nacosplugin-datasource-sqlscript/pom.xml | 2 +- nacosplugin-datasource/pom.xml | 2 +- pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nacosplugin-all/pom.xml b/nacosplugin-all/pom.xml index 596699c..0f0be16 100644 --- a/nacosplugin-all/pom.xml +++ b/nacosplugin-all/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.6 + 2.0.7 nacosplugin-all diff --git a/nacosplugin-datasource-sqlscript/pom.xml b/nacosplugin-datasource-sqlscript/pom.xml index cce5a82..be1ab95 100644 --- a/nacosplugin-datasource-sqlscript/pom.xml +++ b/nacosplugin-datasource-sqlscript/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.6 + 2.0.7 nacosplugin-datasource-sqlscript diff --git a/nacosplugin-datasource/pom.xml b/nacosplugin-datasource/pom.xml index f6f4a92..bfc3558 100644 --- a/nacosplugin-datasource/pom.xml +++ b/nacosplugin-datasource/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.6 + 2.0.7 nacosplugin-datasource diff --git a/pom.xml b/pom.xml index 6a9f01c..232956a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.6 + 2.0.7 pom ${project.groupId}:${project.artifactId}:${project.version} -- Gitee From 24d2a17dbf09f37a44426407cd1baa33f86f1630 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:31:41 +0800 Subject: [PATCH 04/40] =?UTF-8?q?*=20=E6=94=AF=E6=8C=81=E7=A6=81=E7=94=A8?= =?UTF-8?q?=20=E5=86=85=E7=BD=AE=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 6ff75c6..9f6e8d1 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -76,7 +76,8 @@ public abstract class BaseMapper extends AbstractMapper { } if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ - boolean builtinDatasourcePluginEnabled = Boolean.parseBoolean(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true")); + // 只要不是false|False 等,就是禁用,默认值为 true + boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true"),"false"); // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperRegistry 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby if(builtinDatasourcePluginEnabled) { -- Gitee From 5fe31a64d22e7e099be6f43ffc2e6ebbcdef67ff Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:38:50 +0800 Subject: [PATCH 05/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 9f6e8d1..e804a42 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -79,7 +79,7 @@ public abstract class BaseMapper extends AbstractMapper { // 只要不是false|False 等,就是禁用,默认值为 true boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true"),"false"); // 自定义的插件会优先于 内置的 derby, mysql 插件 - // 放到 MapperRegistry 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby + // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby if(builtinDatasourcePluginEnabled) { databaseName = DatabaseNames.UNDEFINED; } -- Gitee From d746f025faa2a0762129ce07f9a4bbf6bb2d3ac2 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:45:58 +0800 Subject: [PATCH 06/40] =?UTF-8?q?*=20=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index e804a42..50d751b 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -11,12 +11,15 @@ import com.jn.langx.util.Preconditions; import com.jn.langx.util.Strings; import com.jn.langx.util.collection.Pipeline; import com.jn.langx.util.enums.Enums; +import com.jn.langx.util.logging.Loggers; +import com.jn.langx.util.reflect.Reflects; import com.jn.nacos.plugin.datasource.DatabaseNames; import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; import com.jn.nacos.plugin.datasource.NacosDatabaseDialectManager; import com.jn.sqlhelper.dialect.Dialect; import com.jn.sqlhelper.dialect.DialectRegistry; +import org.slf4j.Logger; import java.util.List; @@ -80,8 +83,11 @@ public abstract class BaseMapper extends AbstractMapper { boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true"),"false"); // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby + Logger logger = Loggers.getLogger(getClass()); + logger.info("nacos builtin datasource plugin is {}", builtinDatasourcePluginEnabled?"enabled":"disabled"); if(builtinDatasourcePluginEnabled) { databaseName = DatabaseNames.UNDEFINED; + logger.info("rename the customized mapper {} to {}", Reflects.getFQNClassName(getClass()), databaseName); } } return databaseName; -- Gitee From 7b036980af33393d94e3ff8facec77247be6ff95 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 17:52:47 +0800 Subject: [PATCH 07/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0mysql=20jdbc-url?= =?UTF-8?q?=EF=BC=8C=E9=80=82=E9=85=8D=E6=9B=B4=E9=AB=98=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=9A=84mysql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index 2a963d3..ed1c5c8 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -134,7 +134,7 @@ mysql --password=root_password --host=localhost --port=3306 --user root < create # MySQL spring.sql.init.platform=mysql db.num=1 -db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useServerPrepStmts=true +db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useServerPrepStmts=true&allowPublicKeyRetrieval=true db.user.0=root db.password.0=root_password db.pool.config.driverClassName=com.mysql.cj.jdbc.Driver -- Gitee From 7972b4a53ce0f7eeb9571eff6c23bb4f21582aa0 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Sat, 14 Sep 2024 18:39:26 +0800 Subject: [PATCH 08/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0mysql=20jdbc-url?= =?UTF-8?q?=EF=BC=8C=E9=80=82=E9=85=8D=E6=9B=B4=E9=AB=98=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=9A=84mysql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index ed1c5c8..8ab7328 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -138,6 +138,7 @@ db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout db.user.0=root db.password.0=root_password db.pool.config.driverClassName=com.mysql.cj.jdbc.Driver +# 要禁用 ``` -- Gitee From 08d7712305c518a1138e4494b0de4b8a400d49d6 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 19:54:57 +0800 Subject: [PATCH 09/40] =?UTF-8?q?+=20=E5=8A=A0=E5=85=A5derby=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/sql/derby/derby-schema.sql | 227 ++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql diff --git a/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql b/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql new file mode 100644 index 0000000..f4e93a3 --- /dev/null +++ b/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql @@ -0,0 +1,227 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +CREATE SCHEMA nacos AUTHORIZATION nacos; + +CREATE TABLE config_info ( + id bigint NOT NULL generated by default as identity, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) default '', + app_name varchar(128), + content CLOB, + md5 varchar(32) DEFAULT NULL, + gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + src_user varchar(128) DEFAULT NULL, + src_ip varchar(50) DEFAULT NULL, + c_desc varchar(256) DEFAULT NULL, + c_use varchar(64) DEFAULT NULL, + effect varchar(64) DEFAULT NULL, + type varchar(64) DEFAULT NULL, + c_schema LONG VARCHAR DEFAULT NULL, + encrypted_data_key LONG VARCHAR DEFAULT NULL, + constraint configinfo_id_key PRIMARY KEY (id), + constraint uk_configinfo_datagrouptenant UNIQUE (data_id,group_id,tenant_id)); + +CREATE INDEX configinfo_dataid_key_idx ON config_info(data_id); +CREATE INDEX configinfo_groupid_key_idx ON config_info(group_id); +CREATE INDEX configinfo_dataid_group_key_idx ON config_info(data_id, group_id); + +CREATE TABLE his_config_info ( + id bigint NOT NULL, + nid bigint NOT NULL generated by default as identity, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) default '', + app_name varchar(128), + content CLOB, + md5 varchar(32) DEFAULT NULL, + gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000', + gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000', + src_user varchar(128), + src_ip varchar(50) DEFAULT NULL, + op_type char(10) DEFAULT NULL, + encrypted_data_key LONG VARCHAR DEFAULT NULL, + constraint hisconfiginfo_nid_key PRIMARY KEY (nid)); + +CREATE INDEX hisconfiginfo_dataid_key_idx ON his_config_info(data_id); +CREATE INDEX hisconfiginfo_gmt_create_idx ON his_config_info(gmt_create); +CREATE INDEX hisconfiginfo_gmt_modified_idx ON his_config_info(gmt_modified); + + +CREATE TABLE config_info_beta ( + id bigint NOT NULL generated by default as identity, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) default '', + app_name varchar(128), + content CLOB, + beta_ips varchar(1024), + md5 varchar(32) DEFAULT NULL, + gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + src_user varchar(128), + src_ip varchar(50) DEFAULT NULL, + encrypted_data_key LONG VARCHAR DEFAULT NULL, + constraint configinfobeta_id_key PRIMARY KEY (id), + constraint uk_configinfobeta_datagrouptenant UNIQUE (data_id,group_id,tenant_id)); + +CREATE TABLE config_info_tag ( + id bigint NOT NULL generated by default as identity, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) default '', + tag_id varchar(128) NOT NULL, + app_name varchar(128), + content CLOB, + md5 varchar(32) DEFAULT NULL, + gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + src_user varchar(128), + src_ip varchar(50) DEFAULT NULL, + constraint configinfotag_id_key PRIMARY KEY (id), + constraint uk_configinfotag_datagrouptenanttag UNIQUE (data_id,group_id,tenant_id,tag_id)); + +CREATE TABLE config_info_aggr ( + id bigint NOT NULL generated by default as identity, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) default '', + datum_id varchar(255) NOT NULL, + app_name varchar(128), + content CLOB, + gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00', + constraint configinfoaggr_id_key PRIMARY KEY (id), + constraint uk_configinfoaggr_datagrouptenantdatum UNIQUE (data_id,group_id,tenant_id,datum_id)); + +CREATE TABLE app_list ( + id bigint NOT NULL generated by default as identity, + app_name varchar(128) NOT NULL, + is_dynamic_collect_disabled smallint DEFAULT 0, + last_sub_info_collected_time timestamp DEFAULT '1970-01-01 08:00:00.0', + sub_info_lock_owner varchar(128), + sub_info_lock_time timestamp DEFAULT '1970-01-01 08:00:00.0', + constraint applist_id_key PRIMARY KEY (id), + constraint uk_appname UNIQUE (app_name)); + +CREATE TABLE app_configdata_relation_subs ( + id bigint NOT NULL generated by default as identity, + app_name varchar(128) NOT NULL, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + gmt_modified timestamp DEFAULT '2010-05-05 00:00:00', + constraint configdatarelationsubs_id_key PRIMARY KEY (id), + constraint uk_app_sub_config_datagroup UNIQUE (app_name, data_id, group_id)); + + +CREATE TABLE app_configdata_relation_pubs ( + id bigint NOT NULL generated by default as identity, + app_name varchar(128) NOT NULL, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + gmt_modified timestamp DEFAULT '2010-05-05 00:00:00', + constraint configdatarelationpubs_id_key PRIMARY KEY (id), + constraint uk_app_pub_config_datagroup UNIQUE (app_name, data_id, group_id)); + +CREATE TABLE config_tags_relation ( + id bigint NOT NULL, + tag_name varchar(128) NOT NULL, + tag_type varchar(64) DEFAULT NULL, + data_id varchar(255) NOT NULL, + group_id varchar(128) NOT NULL, + tenant_id varchar(128) DEFAULT '', + nid bigint NOT NULL generated by default as identity, + constraint config_tags_id_key PRIMARY KEY (nid), + constraint uk_configtagrelation_configidtag UNIQUE (id, tag_name, tag_type)); + +CREATE INDEX config_tags_tenant_id_idx ON config_tags_relation(tenant_id); + +CREATE TABLE group_capacity ( + id bigint NOT NULL generated by default as identity, + group_id varchar(128) DEFAULT '', + quota int DEFAULT 0, + usage int DEFAULT 0, + max_size int DEFAULT 0, + max_aggr_count int DEFAULT 0, + max_aggr_size int DEFAULT 0, + max_history_count int DEFAULT 0, + gmt_create timestamp DEFAULT '2010-05-05 00:00:00', + gmt_modified timestamp DEFAULT '2010-05-05 00:00:00', + constraint group_capacity_id_key PRIMARY KEY (id), + constraint uk_group_id UNIQUE (group_id)); + +CREATE TABLE tenant_capacity ( + id bigint NOT NULL generated by default as identity, + tenant_id varchar(128) DEFAULT '', + quota int DEFAULT 0, + usage int DEFAULT 0, + max_size int DEFAULT 0, + max_aggr_count int DEFAULT 0, + max_aggr_size int DEFAULT 0, + max_history_count int DEFAULT 0, + gmt_create timestamp DEFAULT '2010-05-05 00:00:00', + gmt_modified timestamp DEFAULT '2010-05-05 00:00:00', + constraint tenant_capacity_id_key PRIMARY KEY (id), + constraint uk_tenant_id UNIQUE (tenant_id)); + +CREATE TABLE tenant_info ( + id bigint NOT NULL generated by default as identity, + kp varchar(128) NOT NULL, + tenant_id varchar(128) DEFAULT '', + tenant_name varchar(128) DEFAULT '', + tenant_desc varchar(256) DEFAULT NULL, + create_source varchar(32) DEFAULT NULL, + gmt_create bigint NOT NULL, + gmt_modified bigint NOT NULL, + constraint tenant_info_id_key PRIMARY KEY (id), + constraint uk_tenant_info_kptenantid UNIQUE (kp,tenant_id)); +CREATE INDEX tenant_info_tenant_id_idx ON tenant_info(tenant_id); + +CREATE TABLE users ( + username varchar(50) NOT NULL PRIMARY KEY, + password varchar(500) NOT NULL, + enabled boolean NOT NULL DEFAULT true +); + +CREATE TABLE roles ( + username varchar(50) NOT NULL, + role varchar(50) NOT NULL, + constraint uk_username_role UNIQUE (username,role) +); + +CREATE TABLE permissions ( + role varchar(50) NOT NULL, + resource varchar(512) NOT NULL, + action varchar(8) NOT NULL, + constraint uk_role_permission UNIQUE (role,resource,action) +); + + +/******************************************/ +/* ipv6 support */ +/******************************************/ +ALTER TABLE `config_info_tag` +MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; + +ALTER TABLE `his_config_info` +MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL AFTER `src_user`; + +ALTER TABLE `config_info` +MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; + +ALTER TABLE `config_info_beta` +MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; \ No newline at end of file -- Gitee From 6ada310723d17e75cbd50cf5284abe749cb57025 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 19:56:29 +0800 Subject: [PATCH 10/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=20derby=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/sql/derby/derby-schema.sql | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql b/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql index f4e93a3..3d955fc 100644 --- a/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql +++ b/nacosplugin-datasource-sqlscript/resources/sql/derby/derby-schema.sql @@ -214,14 +214,14 @@ CREATE TABLE permissions ( /******************************************/ /* ipv6 support */ /******************************************/ -ALTER TABLE `config_info_tag` -MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; +ALTER TABLE config_info_tag +MODIFY COLUMN src_ip varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER src_user; -ALTER TABLE `his_config_info` -MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL AFTER `src_user`; +ALTER TABLE his_config_info +MODIFY COLUMN src_ip varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL AFTER src_user; -ALTER TABLE `config_info` -MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; +ALTER TABLE config_info +MODIFY COLUMN src_ip varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER src_user; -ALTER TABLE `config_info_beta` -MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`; \ No newline at end of file +ALTER TABLE config_info_beta +MODIFY COLUMN src_ip varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER src_user; \ No newline at end of file -- Gitee From c588a12ee924cc68c2abc5581ad6f069a9595312 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 20:00:08 +0800 Subject: [PATCH 11/40] =?UTF-8?q?*=20=E6=94=AF=E6=8C=81derby?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java | 2 ++ .../java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java index 3e519ee..ea7588b 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java @@ -2,11 +2,13 @@ package com.jn.nacos.plugin.datasource.db.derby; import com.alibaba.nacos.plugin.datasource.enums.derby.TrustedDerbylFunctionEnum; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class DerbyDatabaseDialect extends NacosDatabaseDialect { public DerbyDatabaseDialect() { super(DatabaseNames.DERBY); + this.identifierQuotedMode = IdentifierQuotedMode.UNQUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 50d751b..8e57410 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -80,7 +80,7 @@ public abstract class BaseMapper extends AbstractMapper { if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.datasource.plugin.builtin.enabled","true"),"false"); + boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false"); // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby Logger logger = Loggers.getLogger(getClass()); -- Gitee From 1d2425b088c8f513405537dac4c3fb673329bb36 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 20:28:28 +0800 Subject: [PATCH 12/40] =?UTF-8?q?*=20=E4=BF=AE=E6=94=B9=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + nacosplugin-datasource/installation.MD | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 506d0dc..15f5764 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ + OpenGauss (高斯) + Oracle(8, 9, 10, 11, 12 ... ) + PostgreSQL + + Derby #### 软件架构 作为nacos的插件使用 diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index 8ab7328..54d6268 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -138,7 +138,8 @@ db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout db.user.0=root db.password.0=root_password db.pool.config.driverClassName=com.mysql.cj.jdbc.Driver -# 要禁用 +# mysql默认使用nacos 内置的mysql插件,如果要禁用内置mysql插件,可以添加下面的配置 +spring.sql.plugin.builtin.enabled=false ``` @@ -169,4 +170,17 @@ db.pool.config.driverClassName=oracle.jdbc.OracleDriver + 问题原因:是 nacos 启动是会判定 config_info_tag, config_info_beta表是否存在。 这个方法是直接定死的使用了limit 1,没有通过插件的方式。 + 问题归属:这个属于 nacos 的Bug,已在 [github 上提交了相关问题](https://github.com/alibaba/nacos/issues/12569)。 + 问题版本:<=2.4.1 - + 影响范围:只会影响到dump接口,功能不受影响 \ No newline at end of file + + 影响范围:只会影响到dump接口,功能不受影响 + +## 支持Derby + +1. 配置 +```properties +# derby 默认使用 nacos 内置的 derby 插件,如果要禁用内置 derby 插件,可以添加下面的配置 +spring.sql.plugin.builtin.enabled=false +``` +2. 启动 +```shell +# 必须以 standalone 模式启动时,且不配置为其它数据库的情况下,才会启用 derby数据库 +/bin/startup.sh -m standalone +``` \ No newline at end of file -- Gitee From ccddd00c712339370cd5415df0b61dbb5c40dbd1 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 20:35:33 +0800 Subject: [PATCH 13/40] =?UTF-8?q?*=20=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=20sqlhelper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 232956a..21d9b52 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 1.17.0 2.4.1 5.3.34 - 5.0.5 + 5.0.6 https://gitee.com/coderjn/nacos-plugins -- Gitee From a281eb72348ef4a3c8d4f540252f92d2e3138187 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sat, 14 Sep 2024 20:39:24 +0800 Subject: [PATCH 14/40] =?UTF-8?q?*=20=E8=A1=A5=E5=85=85=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASE-LOG.MD | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELEASE-LOG.MD b/RELEASE-LOG.MD index 16f098a..e71a305 100644 --- a/RELEASE-LOG.MD +++ b/RELEASE-LOG.MD @@ -1,3 +1,7 @@ +## 2.0.7 +1. 支持禁用nacos默认插件derby, mysql +2. 提供derby 的sql schema +3. 支持derby数据库 ## 2.0.6 1. 解决OpenGauss中将`''`处理成NULL的情况 ## 2.0.5 -- Gitee From 6b95215e09af7d8a33214cb42598ab89e7adf263 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 07:50:31 +0800 Subject: [PATCH 15/40] =?UTF-8?q?*=20=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 15f5764..7b1e6fb 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,10 @@ #### 版本映射 -| 插件版本 | 构建时使用的nacos版本 | 支持的Nacos版本 | 测试过的nacos版本 | -| ------------- | :-------------------: | :-------------: | ----------------- | -| 1.0.x | 2.4.1 | 理论上是 all | 2.3.2、2.4.1 | -| 2.0.0 - 2.0.5 | 2.4.1 | 理论上是 all | 2.3.2、2.4.1 | -| | | | | +| 插件版本 | 构建时使用的nacos版本 | 支持的Nacos版本 | 测试过的nacos版本 | +|:-------------:|:------------------:| :-------------: |-------------------------------------------------| +| `1.0.x` | `2.4.1` | 理论上是 all | `2.3.2`
`2.4.1` | +| `2.0.0` ~ `2.0.7` | `2.4.1` | 理论上是 all | `2.3.2`
`2.4.1` | -- Gitee From 74fe2177e18ca6e03333ee10ece7ec11b54ca841 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 08:02:20 +0800 Subject: [PATCH 16/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7b1e6fb..5bc1a74 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ #### 版本映射 | 插件版本 | 构建时使用的nacos版本 | 支持的Nacos版本 | 测试过的nacos版本 | -|:-------------:|:------------------:| :-------------: |-------------------------------------------------| -| `1.0.x` | `2.4.1` | 理论上是 all | `2.3.2`
`2.4.1` | -| `2.0.0` ~ `2.0.7` | `2.4.1` | 理论上是 all | `2.3.2`
`2.4.1` | - +|:-------------:|:------------------:|:----------:|-------------------------------------------------| +| `1.0.x` | `2.4.1` | `>=2.2.0` | `2.3.2`
`2.4.1` | +| `2.0.0` ~ `2.0.7` | `2.4.1` | `>=2.2.0` | `2.3.2`
`2.4.1` | +支持的nacos 版本,从2.2.0开始原因:nacos 2.2.0才支持这一套插件系统,在此之前需要直接修改nacos的源码。 #### 安装教程 -- Gitee From ff43c728c73ed90657cdf936338d34782740bdbe Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 08:17:15 +0800 Subject: [PATCH 17/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index 54d6268..0578048 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -1,12 +1,12 @@ ## datasource 插件安装 -1. 将插件、数据库驱动 放到 `nacos/plugins` 目录 +1. 将插件、数据库驱动 放到 `/plugins` 目录 ```text io.github.bes2008.solution.nacosplugins:nacosplugin-all:jar:VERSION ``` 2. 在application.properties中配置数据库 -以postgresql 数据库为例,修改 `nacos/conf/application.properties` : +以postgresql 数据库为例,修改 `/conf/application.properties` : ```properties # PostgreSQL spring.sql.init.platform=postgresql @@ -19,9 +19,9 @@ db.pool.config.driverClassName=org.postgresql.Driver 3. 初始数据库schema -使用DBeaver 等工具,连接到数据库,执行相关schema初始化。脚本位置: +使用DBeaver、 数据库 CLI 等工具,连接到数据库,执行相关schema初始化。脚本位置: ```text -nacosplugin-datasource-sqlscripts/resources/sql/ 目录下 +代码仓库的nacosplugin-datasource-sqlscripts/resources/sql/ 目录下 ``` 4. 启动nacos访问 @@ -147,9 +147,9 @@ spring.sql.plugin.builtin.enabled=false ## 支持Oracle 1. 脚本执行 ```shell -# 先用 system 创建 C##NACOS用户 +# 先用 system 创建 "C##NACOS" 用户 sqlplus system/Oracle123_Pswd@localhost:1521/FREE @./create-schema.sql -# 再用 C##NACOS用户创建表 +# 再用 "C##NACOS" 用户创建表 sqlplus C##NACOS/NACOS_PASSWORD@localhost:1521/FREE @./create-tables.sql ``` 2. jdbc配置 -- Gitee From 97ac72c55c1414c441af5e1752fa9cdf1164e61c Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 08:18:38 +0800 Subject: [PATCH 18/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index 0578048..e4c6988 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -166,7 +166,7 @@ db.pool.config.driverClassName=oracle.jdbc.OracleDriver ``` 3. 目前使用Oracle的问题 - + 目前nacos 适配Oracle已完毕,但在启动过程中,nacos.log中会有报错。 + + 目前nacos 适配Oracle已完毕,但在启动过程中,nacos.log中会有报错,这个错误并不影响 oracle 数据库上使用。 + 问题原因:是 nacos 启动是会判定 config_info_tag, config_info_beta表是否存在。 这个方法是直接定死的使用了limit 1,没有通过插件的方式。 + 问题归属:这个属于 nacos 的Bug,已在 [github 上提交了相关问题](https://github.com/alibaba/nacos/issues/12569)。 + 问题版本:<=2.4.1 -- Gitee From b66e8758ae9cfecb4409d237b6cef6fc526e82e6 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 08:19:10 +0800 Subject: [PATCH 19/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index e4c6988..0aabbbf 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -169,7 +169,7 @@ db.pool.config.driverClassName=oracle.jdbc.OracleDriver + 目前nacos 适配Oracle已完毕,但在启动过程中,nacos.log中会有报错,这个错误并不影响 oracle 数据库上使用。 + 问题原因:是 nacos 启动是会判定 config_info_tag, config_info_beta表是否存在。 这个方法是直接定死的使用了limit 1,没有通过插件的方式。 + 问题归属:这个属于 nacos 的Bug,已在 [github 上提交了相关问题](https://github.com/alibaba/nacos/issues/12569)。 - + 问题版本:<=2.4.1 + + 问题版本:<=2.4.1,已于 nacos 2.4.2 版本修复 + 影响范围:只会影响到dump接口,功能不受影响 ## 支持Derby -- Gitee From 4795862ef81d415ac552526d054467b218b270a0 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 08:20:49 +0800 Subject: [PATCH 20/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5bc1a74..23c5dde 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,10 @@ #### 版本映射 -| 插件版本 | 构建时使用的nacos版本 | 支持的Nacos版本 | 测试过的nacos版本 | -|:-------------:|:------------------:|:----------:|-------------------------------------------------| -| `1.0.x` | `2.4.1` | `>=2.2.0` | `2.3.2`
`2.4.1` | -| `2.0.0` ~ `2.0.7` | `2.4.1` | `>=2.2.0` | `2.3.2`
`2.4.1` | +| 插件版本 | 构建时使用的nacos版本 | 支持的Nacos版本 | 测试过的nacos版本 | +|:-------------:|:------------------:|:------------:|-------------------------------------------------| +| `1.0.x` | `2.4.1` | 理论上`>=2.2.0` | `2.3.2`
`2.4.1` | +| `2.0.0` ~ `2.0.7` | `2.4.1` | 理论上`>=2.2.0` | `2.3.2`
`2.4.1` | 支持的nacos 版本,从2.2.0开始原因:nacos 2.2.0才支持这一套插件系统,在此之前需要直接修改nacos的源码。 -- Gitee From a67d5678cd8d4a0ef8f24c3a01d5fe860a3ce5bc Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 09:47:31 +0800 Subject: [PATCH 21/40] =?UTF-8?q?*=20=E5=AF=B9=E6=9B=BF=E6=8D=A2=20mysql,?= =?UTF-8?q?=20derby=20=E6=8F=92=E4=BB=B6=E7=9A=84=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=9F=BA=E4=BA=8Enacos=E7=9A=84=E7=89=88=E6=9C=AC=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E9=99=90=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jn/nacos/plugin/datasource/Utils.java | 17 ++++++++++++++ .../plugin/datasource/mapper/BaseMapper.java | 22 +++++++++++-------- 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java new file mode 100644 index 0000000..b931f94 --- /dev/null +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java @@ -0,0 +1,17 @@ +package com.jn.nacos.plugin.datasource; + +import com.alibaba.nacos.common.utils.VersionUtils; +import com.jn.langx.util.Strings; + +public class Utils { + public static int versionCompare(String comparedVersion){ + String currentVersion = toNacosStandardVersion(VersionUtils.version); + String version2 = toNacosStandardVersion(comparedVersion); + return VersionUtils.compareVersion(currentVersion, version2); + } + private static String toNacosStandardVersion(String version){ + String[] segments = Strings.split(version, "."); + String nacosVersion = Strings.join(".", segments, 0, 3); + return nacosVersion; + } +} diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 8e57410..d84694e 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -13,10 +13,7 @@ import com.jn.langx.util.collection.Pipeline; import com.jn.langx.util.enums.Enums; import com.jn.langx.util.logging.Loggers; import com.jn.langx.util.reflect.Reflects; -import com.jn.nacos.plugin.datasource.DatabaseNames; -import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; -import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; -import com.jn.nacos.plugin.datasource.NacosDatabaseDialectManager; +import com.jn.nacos.plugin.datasource.*; import com.jn.sqlhelper.dialect.Dialect; import com.jn.sqlhelper.dialect.DialectRegistry; import org.slf4j.Logger; @@ -80,7 +77,8 @@ public abstract class BaseMapper extends AbstractMapper { if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = !Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false"); + boolean builtinDatasourcePluginEnabled = supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; + // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby Logger logger = Loggers.getLogger(getClass()); @@ -292,11 +290,17 @@ public abstract class BaseMapper extends AbstractMapper { } protected boolean hasEncryptedDataKeyColumn(){ - String currentVersion = VersionUtils.version; - String[] segments = Strings.split(currentVersion, "."); - String nacosVersion = Strings.join(".", segments, 0, 3); - return VersionUtils.compareVersion(nacosVersion, "2.1.0")>=0; + return Utils.versionCompare("2.1.0")>=0; + } + + /** + * 内置 数据库插件 (derby, mysql) 是否可以被替换 + * @return 是否可替换 + */ + protected boolean supportsBuiltinDatabasePluginReplaced(){ + return Utils.versionCompare("2.3.0")>=0; } + private static final String NAMESPACE_PUBLIC_KEY = "public"; protected final String getDefaultTenantId(){ if(getDialect().isAutoCastEmptyStringToNull()){ -- Gitee From 48247495611d2da41f58c47200ada2b7423df2bb Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 09:50:22 +0800 Subject: [PATCH 22/40] =?UTF-8?q?*=20=E5=AF=B9=E7=89=88=E6=9C=AC=E9=99=90?= =?UTF-8?q?=E5=88=B6=E5=81=9A=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/installation.MD | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nacosplugin-datasource/installation.MD b/nacosplugin-datasource/installation.MD index 0aabbbf..0fa4ba3 100644 --- a/nacosplugin-datasource/installation.MD +++ b/nacosplugin-datasource/installation.MD @@ -141,8 +141,10 @@ db.pool.config.driverClassName=com.mysql.cj.jdbc.Driver # mysql默认使用nacos 内置的mysql插件,如果要禁用内置mysql插件,可以添加下面的配置 spring.sql.plugin.builtin.enabled=false ``` - - +3. 版本限制 +```text +nacos_version >= 2.3.0 时,支持将mysql替换为本插件。 +``` ## 支持Oracle 1. 脚本执行 @@ -183,4 +185,8 @@ spring.sql.plugin.builtin.enabled=false ```shell # 必须以 standalone 模式启动时,且不配置为其它数据库的情况下,才会启用 derby数据库 /bin/startup.sh -m standalone +``` +3. 版本限制 +```text +nacos_version >= 2.3.0 时,支持将 derby 替换为本插件。 ``` \ No newline at end of file -- Gitee From 2ff0378a171dae3cc09d9523b81a20e8386e4dc6 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 14:28:57 +0800 Subject: [PATCH 23/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/jn/nacos/plugin/datasource/Utils.java | 9 +++++++++ .../jn/nacos/plugin/datasource/mapper/BaseMapper.java | 9 +-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java index b931f94..dfe2622 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java @@ -14,4 +14,13 @@ public class Utils { String nacosVersion = Strings.join(".", segments, 0, 3); return nacosVersion; } + + /** + * 内置 数据库插件 (derby, mysql) 是否可以被替换 + * @return 是否可替换 + */ + public static boolean supportsBuiltinDatabasePluginReplaced(){ + return Utils.versionCompare("2.3.0")>=0; + } + } diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index d84694e..501f562 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -77,7 +77,7 @@ public abstract class BaseMapper extends AbstractMapper { if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; + boolean builtinDatasourcePluginEnabled = Utils.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby @@ -293,13 +293,6 @@ public abstract class BaseMapper extends AbstractMapper { return Utils.versionCompare("2.1.0")>=0; } - /** - * 内置 数据库插件 (derby, mysql) 是否可以被替换 - * @return 是否可替换 - */ - protected boolean supportsBuiltinDatabasePluginReplaced(){ - return Utils.versionCompare("2.3.0")>=0; - } private static final String NAMESPACE_PUBLIC_KEY = "public"; protected final String getDefaultTenantId(){ -- Gitee From b582163384585159e6070da2d1a5ff9a9376390e Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 14:32:31 +0800 Subject: [PATCH 24/40] =?UTF-8?q?*=20=E6=95=B4=E7=90=86=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nacos/plugin/datasource/{Utils.java => NacosEnvs.java} | 7 +++++-- .../com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 7 +------ .../datasource/mapper/CommonConfigInfoBetaMapper.java | 3 ++- .../plugin/datasource/mapper/CommonConfigInfoMapper.java | 3 ++- 4 files changed, 10 insertions(+), 10 deletions(-) rename nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/{Utils.java => NacosEnvs.java} (82%) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java similarity index 82% rename from nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java rename to nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index dfe2622..8f011bb 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/Utils.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -3,7 +3,7 @@ package com.jn.nacos.plugin.datasource; import com.alibaba.nacos.common.utils.VersionUtils; import com.jn.langx.util.Strings; -public class Utils { +public class NacosEnvs { public static int versionCompare(String comparedVersion){ String currentVersion = toNacosStandardVersion(VersionUtils.version); String version2 = toNacosStandardVersion(comparedVersion); @@ -20,7 +20,10 @@ public class Utils { * @return 是否可替换 */ public static boolean supportsBuiltinDatabasePluginReplaced(){ - return Utils.versionCompare("2.3.0")>=0; + return versionCompare("2.3.0")>=0; } + public static boolean hasEncryptedDataKeyColumn(){ + return versionCompare("2.1.0")>=0; + } } diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 501f562..ab677a0 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -77,7 +77,7 @@ public abstract class BaseMapper extends AbstractMapper { if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = Utils.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; + boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby @@ -289,11 +289,6 @@ public abstract class BaseMapper extends AbstractMapper { return sql.toString(); } - protected boolean hasEncryptedDataKeyColumn(){ - return Utils.versionCompare("2.1.0")>=0; - } - - private static final String NAMESPACE_PUBLIC_KEY = "public"; protected final String getDefaultTenantId(){ if(getDialect().isAutoCastEmptyStringToNull()){ diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoBetaMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoBetaMapper.java index 3140d54..d35adce 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoBetaMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoBetaMapper.java @@ -4,6 +4,7 @@ import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.jn.langx.util.collection.Lists; +import com.jn.nacos.plugin.datasource.NacosEnvs; import com.jn.sqlhelper.dialect.pagination.RowSelection; import java.util.List; @@ -21,7 +22,7 @@ public class CommonConfigInfoBetaMapper extends BaseMapper implements ConfigInfo RowSelection rowSelection = new RowSelection(startRow, pageSize); String subquery = "SELECT id FROM config_info_beta ORDER BY id "; subquery = getDialect().getLimitSql(subquery, true, false, rowSelection); - String sql = "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips " + (hasEncryptedDataKeyColumn() ? ", encrypted_data_key ":"") + String sql = "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips " + (NacosEnvs.hasEncryptedDataKeyColumn() ? ", encrypted_data_key ":"") + " FROM ( " + subquery + " )" + " g, config_info_beta t WHERE g.id = t.id"; List paramList = Lists.newArrayList(); diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoMapper.java index 9f7cd07..e867feb 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/CommonConfigInfoMapper.java @@ -8,6 +8,7 @@ import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.jn.langx.util.Strings; import com.jn.langx.util.collection.Collects; import com.jn.langx.util.collection.Lists; +import com.jn.nacos.plugin.datasource.NacosEnvs; import com.jn.sqlhelper.dialect.pagination.RowSelection; import java.sql.Timestamp; @@ -166,7 +167,7 @@ public class CommonConfigInfoMapper extends BaseMapper implements ConfigInfoMapp RowSelection rowSelection = new RowSelection(context.getStartRow(), context.getPageSize()); String sql = "SELECT id,data_id,group_id,tenant_id,app_name," + (needContent ? "content," : "") - + "md5,gmt_modified,type "+ (hasEncryptedDataKeyColumn()? ",encrypted_data_key":"") + + "md5,gmt_modified,type "+ (NacosEnvs.hasEncryptedDataKeyColumn()? ",encrypted_data_key":"") +" FROM config_info WHERE id > ? " + "ORDER BY id ASC "; sql = getDialect().getLimitSql(sql, rowSelection); List queryParams = Lists.newArrayList(context.getWhereParameter(FieldConstant.ID)); -- Gitee From 98bedec30938f4ce3e598d76192aaaf2b1dcea07 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 14:42:47 +0800 Subject: [PATCH 25/40] =?UTF-8?q?*=20=E6=95=B4=E7=90=86=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jn/nacos/plugin/datasource/NacosEnvs.java | 68 ++++++++++++++ .../plugin/datasource/PluginContext.java | 30 ++++++ .../plugin/datasource/mapper/BaseMapper.java | 91 ++----------------- 3 files changed, 105 insertions(+), 84 deletions(-) create mode 100644 nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index 8f011bb..bbaff8d 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -1,7 +1,15 @@ package com.jn.nacos.plugin.datasource; import com.alibaba.nacos.common.utils.VersionUtils; +import com.alibaba.nacos.sys.env.EnvUtil; +import com.jn.langx.util.Objs; import com.jn.langx.util.Strings; +import com.jn.langx.util.enums.Enums; +import com.jn.langx.util.logging.Loggers; +import com.jn.langx.util.reflect.Reflects; +import com.jn.sqlhelper.dialect.Dialect; +import com.jn.sqlhelper.dialect.DialectRegistry; +import org.slf4j.Logger; public class NacosEnvs { public static int versionCompare(String comparedVersion){ @@ -26,4 +34,64 @@ public class NacosEnvs { public static boolean hasEncryptedDataKeyColumn(){ return versionCompare("2.1.0")>=0; } + + /** + * 当使用的 create-schema.sql, create-tables.sql 不是插件提供的,需要指定该配置。 + */ + public static IdentifierQuotedMode getConfiguredIdentifierQuotedMode(NacosDatabaseDialect dialect){ + String modeString = EnvUtil.getProperty("db.sql.identifier.quoted.mode"); + IdentifierQuotedMode mode = null; + if(Strings.isNotBlank(modeString)){ + mode = Enums.ofName(IdentifierQuotedMode.class, modeString); + } + if(mode==null){ + mode = dialect.getPluginProvidedDDLIdentifierQuotedMode(); + } + if(mode==null){ + mode = IdentifierQuotedMode.QUOTED; + } + return mode; + } + + public static String getConfiguredDatabaseName(){ + String databaseName = EnvUtil.getProperty("spring.sql.init.platform"); + if(Strings.isBlank(databaseName)){ + // 这个是 nacos 中更早的配置 datasource 类型的方式 + databaseName = EnvUtil.getProperty("spring.datasource.platform"); + } + if(Strings.isBlank(databaseName)){ + // 内嵌数据库 derby + if (EnvUtil.getStandaloneMode()){ + databaseName = DatabaseNames.DERBY; + } + else{ // 默认数据库 MySQL + databaseName = DatabaseNames.MSSQL; + } + }else{ + Dialect dialect = DialectRegistry.getInstance().gaussDialect(databaseName); + if(dialect==null){ + databaseName = DatabaseNames.UNSUPPORTED; + } + } + + if(Strings.isBlank(databaseName)){ + databaseName = DatabaseNames.UNDEFINED; + } + + if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ + // 只要不是false|False 等,就是禁用,默认值为 true + boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; + + // 自定义的插件会优先于 内置的 derby, mysql 插件 + // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby + Logger logger = Loggers.getLogger(NacosEnvs.class); + logger.info("nacos builtin datasource plugin is {}", builtinDatasourcePluginEnabled?"enabled":"disabled"); + if(builtinDatasourcePluginEnabled) { + databaseName = DatabaseNames.UNDEFINED; + logger.info("rename the customized mapper {} to {}", Reflects.getFQNClassName(NacosEnvs.class), databaseName); + } + } + return databaseName; + } + } diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java new file mode 100644 index 0000000..d0a52f4 --- /dev/null +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java @@ -0,0 +1,30 @@ +package com.jn.nacos.plugin.datasource; + +import com.jn.langx.util.Objs; +import com.jn.langx.util.Preconditions; + +public class PluginContext { + private String databaseName; + protected NacosDatabaseDialect dialect; + private IdentifierQuotedMode identifierQuotedModeInDDL; + private PluginContext(){ + this.databaseName = NacosEnvs.getConfiguredDatabaseName(); + Preconditions.checkTrue(!Objs.equals(DatabaseNames.UNSUPPORTED, this.databaseName), "database {} is unsupported", this.databaseName); + this.dialect = NacosDatabaseDialectManager.getInstance().getDialect(this.databaseName); + this.identifierQuotedModeInDDL = NacosEnvs.getConfiguredIdentifierQuotedMode(this.dialect); + } + public static final PluginContext INSTANCE = new PluginContext(); + + public String getDatabaseName() { + return databaseName; + } + + public IdentifierQuotedMode getIdentifierQuotedModeInDDL() { + return identifierQuotedModeInDDL; + } + + public NacosDatabaseDialect getDialect() { + return dialect; + } +} + diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index ab677a0..4f3a59f 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -1,121 +1,44 @@ package com.jn.nacos.plugin.datasource.mapper; import com.alibaba.nacos.common.utils.NamespaceUtil; -import com.alibaba.nacos.common.utils.VersionUtils; import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; -import com.alibaba.nacos.sys.env.EnvUtil; import com.jn.langx.util.Objs; -import com.jn.langx.util.Preconditions; import com.jn.langx.util.Strings; import com.jn.langx.util.collection.Pipeline; -import com.jn.langx.util.enums.Enums; -import com.jn.langx.util.logging.Loggers; -import com.jn.langx.util.reflect.Reflects; import com.jn.nacos.plugin.datasource.*; import com.jn.sqlhelper.dialect.Dialect; -import com.jn.sqlhelper.dialect.DialectRegistry; -import org.slf4j.Logger; - import java.util.List; public abstract class BaseMapper extends AbstractMapper { - private final String databaseName; - protected NacosDatabaseDialect dialect; - private IdentifierQuotedMode identifierQuotedModeInDDL; - protected BaseMapper() { - this.databaseName = getConfiguredDatabaseName(); - Preconditions.checkTrue(!Objs.equals(DatabaseNames.UNSUPPORTED, this.databaseName), "database {} is unsupported", this.databaseName); - this.dialect = NacosDatabaseDialectManager.getInstance().getDialect(this.databaseName); - this.identifierQuotedModeInDDL = getConfiguredIdentifierQuotedMode(); - } - - /** - * 当使用的 create-schema.sql, create-tables.sql 不是插件提供的,需要指定该配置。 - */ - private IdentifierQuotedMode getConfiguredIdentifierQuotedMode(){ - String modeString = EnvUtil.getProperty("db.sql.identifier.quoted.mode"); - IdentifierQuotedMode mode = null; - if(Strings.isNotBlank(modeString)){ - mode = Enums.ofName(IdentifierQuotedMode.class, modeString); - } - if(mode==null){ - mode = this.dialect.getPluginProvidedDDLIdentifierQuotedMode(); - } - if(mode==null){ - mode = IdentifierQuotedMode.QUOTED; - } - return mode; } - private String getConfiguredDatabaseName(){ - String databaseName = EnvUtil.getProperty("spring.sql.init.platform"); - if(Strings.isBlank(databaseName)){ - // 这个是 nacos 中更早的配置 datasource 类型的方式 - databaseName = EnvUtil.getProperty("spring.datasource.platform"); - } - if(Strings.isBlank(databaseName)){ - // 内嵌数据库 derby - if (EnvUtil.getStandaloneMode()){ - databaseName = DatabaseNames.DERBY; - } - else{ // 默认数据库 MySQL - databaseName = DatabaseNames.MSSQL; - } - }else{ - Dialect dialect = DialectRegistry.getInstance().gaussDialect(databaseName); - if(dialect==null){ - databaseName = DatabaseNames.UNSUPPORTED; - } - } - - if(Strings.isBlank(databaseName)){ - databaseName = DatabaseNames.UNDEFINED; - } - - if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ - // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; - - // 自定义的插件会优先于 内置的 derby, mysql 插件 - // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby - Logger logger = Loggers.getLogger(getClass()); - logger.info("nacos builtin datasource plugin is {}", builtinDatasourcePluginEnabled?"enabled":"disabled"); - if(builtinDatasourcePluginEnabled) { - databaseName = DatabaseNames.UNDEFINED; - logger.info("rename the customized mapper {} to {}", Reflects.getFQNClassName(getClass()), databaseName); - } - } - return databaseName; - } - - @Override public String getDataSource() { - return databaseName; + return PluginContext.INSTANCE.getDatabaseName(); } public NacosDatabaseDialect getDialect() { - return dialect; + return PluginContext.INSTANCE.getDialect(); } public String getIdentifierInDb(String identifier){ String string; - switch (identifierQuotedModeInDDL){ + switch (PluginContext.INSTANCE.getIdentifierQuotedModeInDDL()){ case QUOTED: // 这个要求 DDL文件中,所有的表名、列名使用小写形式 - string = dialect.wrapQuote(identifier, Dialect.IdentifierCase.LOWER_CASE); + string = getDialect().wrapQuote(identifier, Dialect.IdentifierCase.LOWER_CASE); break; case UNQUOTED: // 去掉引号 - string = dialect.unwrapQuote(identifier); + string = getDialect().unwrapQuote(identifier); break; case MIXED: default: // 按照数据库对未加引号的默认行为来处理 - string = dialect.wrapQuote(identifier, null); + string = getDialect().wrapQuote(identifier, null); break; } return string; @@ -123,7 +46,7 @@ public abstract class BaseMapper extends AbstractMapper { @Override public String getFunction(String functionName) { - return this.dialect.getFunction(functionName); + return getDialect().getFunction(functionName); } /*************************************************************************** -- Gitee From 02868c285237217d5995eb1a6595ed0ba2a3309d Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 19:29:29 +0800 Subject: [PATCH 26/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jn/nacos/plugin/datasource/NacosEnvs.java | 47 ++++++++++--------- .../plugin/datasource/PluginContext.java | 16 ++++++- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index bbaff8d..01f311a 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -12,12 +12,13 @@ import com.jn.sqlhelper.dialect.DialectRegistry; import org.slf4j.Logger; public class NacosEnvs { - public static int versionCompare(String comparedVersion){ + public static int versionCompare(String comparedVersion) { String currentVersion = toNacosStandardVersion(VersionUtils.version); String version2 = toNacosStandardVersion(comparedVersion); return VersionUtils.compareVersion(currentVersion, version2); } - private static String toNacosStandardVersion(String version){ + + private static String toNacosStandardVersion(String version) { String[] segments = Strings.split(version, "."); String nacosVersion = Strings.join(".", segments, 0, 3); return nacosVersion; @@ -25,68 +26,68 @@ public class NacosEnvs { /** * 内置 数据库插件 (derby, mysql) 是否可以被替换 + * * @return 是否可替换 */ - public static boolean supportsBuiltinDatabasePluginReplaced(){ - return versionCompare("2.3.0")>=0; + public static boolean supportsBuiltinDatabasePluginReplaced() { + return versionCompare("2.3.0") >= 0; } - public static boolean hasEncryptedDataKeyColumn(){ - return versionCompare("2.1.0")>=0; + public static boolean hasEncryptedDataKeyColumn() { + return versionCompare("2.1.0") >= 0; } /** * 当使用的 create-schema.sql, create-tables.sql 不是插件提供的,需要指定该配置。 */ - public static IdentifierQuotedMode getConfiguredIdentifierQuotedMode(NacosDatabaseDialect dialect){ + public static IdentifierQuotedMode getConfiguredIdentifierQuotedMode(NacosDatabaseDialect dialect) { String modeString = EnvUtil.getProperty("db.sql.identifier.quoted.mode"); IdentifierQuotedMode mode = null; - if(Strings.isNotBlank(modeString)){ + if (Strings.isNotBlank(modeString)) { mode = Enums.ofName(IdentifierQuotedMode.class, modeString); } - if(mode==null){ + if (mode == null) { mode = dialect.getPluginProvidedDDLIdentifierQuotedMode(); } - if(mode==null){ + if (mode == null) { mode = IdentifierQuotedMode.QUOTED; } return mode; } - public static String getConfiguredDatabaseName(){ + public static String getConfiguredDatabaseName() { String databaseName = EnvUtil.getProperty("spring.sql.init.platform"); - if(Strings.isBlank(databaseName)){ + if (Strings.isBlank(databaseName)) { // 这个是 nacos 中更早的配置 datasource 类型的方式 databaseName = EnvUtil.getProperty("spring.datasource.platform"); } - if(Strings.isBlank(databaseName)){ + if (Strings.isBlank(databaseName)) { // 内嵌数据库 derby - if (EnvUtil.getStandaloneMode()){ + if (EnvUtil.getStandaloneMode()) { databaseName = DatabaseNames.DERBY; - } - else{ // 默认数据库 MySQL + } else { // 默认数据库 MySQL databaseName = DatabaseNames.MSSQL; } - }else{ + } else { Dialect dialect = DialectRegistry.getInstance().gaussDialect(databaseName); - if(dialect==null){ + if (dialect == null) { databaseName = DatabaseNames.UNSUPPORTED; } } - if(Strings.isBlank(databaseName)){ + if (Strings.isBlank(databaseName)) { databaseName = DatabaseNames.UNDEFINED; } - if(Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)){ + if (Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)) { // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled","true"),"false")) ; + boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled", "true"), "false")); // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby Logger logger = Loggers.getLogger(NacosEnvs.class); - logger.info("nacos builtin datasource plugin is {}", builtinDatasourcePluginEnabled?"enabled":"disabled"); - if(builtinDatasourcePluginEnabled) { + logger.info("nacos builtin datasource plugin is {}", builtinDatasourcePluginEnabled ? "enabled" : "disabled"); + if (builtinDatasourcePluginEnabled) { databaseName = DatabaseNames.UNDEFINED; logger.info("rename the customized mapper {} to {}", Reflects.getFQNClassName(NacosEnvs.class), databaseName); } diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java index d0a52f4..e3cfed8 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java @@ -1,18 +1,32 @@ package com.jn.nacos.plugin.datasource; +import com.jn.langx.lifecycle.AbstractInitializable; +import com.jn.langx.lifecycle.InitializationException; import com.jn.langx.util.Objs; import com.jn.langx.util.Preconditions; +import com.jn.langx.util.logging.Loggers; +import org.slf4j.Logger; -public class PluginContext { +public class PluginContext extends AbstractInitializable { private String databaseName; protected NacosDatabaseDialect dialect; private IdentifierQuotedMode identifierQuotedModeInDDL; private PluginContext(){ + init(); + } + + @Override + protected void doInit() throws InitializationException { + Logger logger = Loggers.getLogger(PluginContext.class); + logger.info("==================nacos datasource plugin initial=================="); this.databaseName = NacosEnvs.getConfiguredDatabaseName(); Preconditions.checkTrue(!Objs.equals(DatabaseNames.UNSUPPORTED, this.databaseName), "database {} is unsupported", this.databaseName); this.dialect = NacosDatabaseDialectManager.getInstance().getDialect(this.databaseName); this.identifierQuotedModeInDDL = NacosEnvs.getConfiguredIdentifierQuotedMode(this.dialect); + logger.info("dialect: {}, identifierQuotedMode: {}", this.databaseName, this.identifierQuotedModeInDDL); + logger.info("==================nacos datasource plugin initial finished =================="); } + public static final PluginContext INSTANCE = new PluginContext(); public String getDatabaseName() { -- Gitee From e1c7b656d8f1656cd20b4fd01facfb6a7c0bbc17 Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 20:16:35 +0800 Subject: [PATCH 27/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jn/nacos/plugin/datasource/PluginContext.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java index e3cfed8..e57143f 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java @@ -18,13 +18,13 @@ public class PluginContext extends AbstractInitializable { @Override protected void doInit() throws InitializationException { Logger logger = Loggers.getLogger(PluginContext.class); - logger.info("==================nacos datasource plugin initial=================="); + logger.info("==================nacos datasource plugin context initial=================="); this.databaseName = NacosEnvs.getConfiguredDatabaseName(); Preconditions.checkTrue(!Objs.equals(DatabaseNames.UNSUPPORTED, this.databaseName), "database {} is unsupported", this.databaseName); this.dialect = NacosDatabaseDialectManager.getInstance().getDialect(this.databaseName); this.identifierQuotedModeInDDL = NacosEnvs.getConfiguredIdentifierQuotedMode(this.dialect); logger.info("dialect: {}, identifierQuotedMode: {}", this.databaseName, this.identifierQuotedModeInDDL); - logger.info("==================nacos datasource plugin initial finished =================="); + logger.info("==================nacos datasource plugin context initial finished =================="); } public static final PluginContext INSTANCE = new PluginContext(); -- Gitee From 7630e60b319f9eba797083404c865b85c5966a3a Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 20:17:52 +0800 Subject: [PATCH 28/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jn/nacos/plugin/datasource/PluginContext.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java index e57143f..eb25ceb 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/PluginContext.java @@ -18,13 +18,13 @@ public class PluginContext extends AbstractInitializable { @Override protected void doInit() throws InitializationException { Logger logger = Loggers.getLogger(PluginContext.class); - logger.info("==================nacos datasource plugin context initial=================="); + logger.info("================== nacos datasource plugin context initial=================="); this.databaseName = NacosEnvs.getConfiguredDatabaseName(); Preconditions.checkTrue(!Objs.equals(DatabaseNames.UNSUPPORTED, this.databaseName), "database {} is unsupported", this.databaseName); this.dialect = NacosDatabaseDialectManager.getInstance().getDialect(this.databaseName); this.identifierQuotedModeInDDL = NacosEnvs.getConfiguredIdentifierQuotedMode(this.dialect); logger.info("dialect: {}, identifierQuotedMode: {}", this.databaseName, this.identifierQuotedModeInDDL); - logger.info("==================nacos datasource plugin context initial finished =================="); + logger.info("================== nacos datasource plugin context initial finished =================="); } public static final PluginContext INSTANCE = new PluginContext(); -- Gitee From 2f51ded66137f0d85074eacf341a1b386a9b185d Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 20:19:26 +0800 Subject: [PATCH 29/40] =?UTF-8?q?*=20=E5=87=86=E5=A4=872.0.8=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-all/pom.xml | 2 +- nacosplugin-datasource-sqlscript/pom.xml | 2 +- nacosplugin-datasource/pom.xml | 2 +- pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nacosplugin-all/pom.xml b/nacosplugin-all/pom.xml index 0f0be16..47c4439 100644 --- a/nacosplugin-all/pom.xml +++ b/nacosplugin-all/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.7 + 2.0.8 nacosplugin-all diff --git a/nacosplugin-datasource-sqlscript/pom.xml b/nacosplugin-datasource-sqlscript/pom.xml index be1ab95..adbea2d 100644 --- a/nacosplugin-datasource-sqlscript/pom.xml +++ b/nacosplugin-datasource-sqlscript/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.7 + 2.0.8 nacosplugin-datasource-sqlscript diff --git a/nacosplugin-datasource/pom.xml b/nacosplugin-datasource/pom.xml index bfc3558..1b942bc 100644 --- a/nacosplugin-datasource/pom.xml +++ b/nacosplugin-datasource/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.7 + 2.0.8 nacosplugin-datasource diff --git a/pom.xml b/pom.xml index 21d9b52..57e49c7 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.bes2008.solution.nacosplugins nacos-plugins - 2.0.7 + 2.0.8 pom ${project.groupId}:${project.artifactId}:${project.version} -- Gitee From bbe7ff078e9ecd7a2f8952f3bb417772ea8a307c Mon Sep 17 00:00:00 2001 From: coderjn Date: Sun, 15 Sep 2024 20:20:50 +0800 Subject: [PATCH 30/40] =?UTF-8?q?*=20=E5=87=86=E5=A4=872.0.8=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASE-LOG.MD | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RELEASE-LOG.MD b/RELEASE-LOG.MD index e71a305..3c6da64 100644 --- a/RELEASE-LOG.MD +++ b/RELEASE-LOG.MD @@ -1,3 +1,6 @@ +## 2.0.8 +1. 代码整理,简化 *Mapper 类 +2. 避免dialect等重复创建,重复打印日志 ## 2.0.7 1. 支持禁用nacos默认插件derby, mysql 2. 提供derby 的sql schema -- Gitee From 09a39ba5114968076e45a63fc8f2db4f0916712e Mon Sep 17 00:00:00 2001 From: coderjn Date: Mon, 16 Sep 2024 08:58:30 +0800 Subject: [PATCH 31/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0junit=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nacosplugin-datasource/pom.xml b/nacosplugin-datasource/pom.xml index 1b942bc..ac72aa9 100644 --- a/nacosplugin-datasource/pom.xml +++ b/nacosplugin-datasource/pom.xml @@ -45,7 +45,7 @@ junit junit - 4.11 + 4.13.1 test -- Gitee From c3d62af609b23c8a9cc8aafce4956089dd8ba5f3 Mon Sep 17 00:00:00 2001 From: coderjn Date: Mon, 16 Sep 2024 09:04:33 +0800 Subject: [PATCH 32/40] =?UTF-8?q?*=20=E6=B7=BB=E5=8A=A0final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jn/nacos/plugin/datasource/mapper/BaseMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java index 4f3a59f..faae0a4 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/mapper/BaseMapper.java @@ -16,11 +16,11 @@ public abstract class BaseMapper extends AbstractMapper { } @Override - public String getDataSource() { + public final String getDataSource() { return PluginContext.INSTANCE.getDatabaseName(); } - public NacosDatabaseDialect getDialect() { + public final NacosDatabaseDialect getDialect() { return PluginContext.INSTANCE.getDialect(); } -- Gitee From 8eb8555a8d86027e7c9bd2781e53e1c081dfb481 Mon Sep 17 00:00:00 2001 From: coderjn Date: Mon, 16 Sep 2024 09:13:07 +0800 Subject: [PATCH 33/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jn/nacos/plugin/datasource/NacosEnvs.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index 01f311a..99bc8da 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -12,6 +12,23 @@ import com.jn.sqlhelper.dialect.DialectRegistry; import org.slf4j.Logger; public class NacosEnvs { + /** + * 指定要使用什么数据源 + */ + @Deprecated + private static final String CONFIG_KEY_DATASOURCE_PLATFORM_DEPRECATED="spring.datasource.platform"; + private static final String CONFIG_KEY_DATASOURCE_PLATFORM="spring.sql.init.platform"; + + /** + * 是否启用 nacos 默认的 datasource 插件。 + */ + private static final String CONFIG_KEY_DATASOURCE_PLUGIN_BUILTIN_ENABLED="spring.sql.plugin.builtin.enabled"; + + /** + * 创建数据库schema时,使用的DDL语句中,identifier 的引号模式 + */ + private static final String CONFIG_KEY_DB_DDL_IDENTIFIER_QUOTED_MODE="db.sql.identifier.quoted.mode"; + public static int versionCompare(String comparedVersion) { String currentVersion = toNacosStandardVersion(VersionUtils.version); String version2 = toNacosStandardVersion(comparedVersion); @@ -41,7 +58,7 @@ public class NacosEnvs { * 当使用的 create-schema.sql, create-tables.sql 不是插件提供的,需要指定该配置。 */ public static IdentifierQuotedMode getConfiguredIdentifierQuotedMode(NacosDatabaseDialect dialect) { - String modeString = EnvUtil.getProperty("db.sql.identifier.quoted.mode"); + String modeString = EnvUtil.getProperty(CONFIG_KEY_DB_DDL_IDENTIFIER_QUOTED_MODE); IdentifierQuotedMode mode = null; if (Strings.isNotBlank(modeString)) { mode = Enums.ofName(IdentifierQuotedMode.class, modeString); @@ -56,10 +73,10 @@ public class NacosEnvs { } public static String getConfiguredDatabaseName() { - String databaseName = EnvUtil.getProperty("spring.sql.init.platform"); + String databaseName = EnvUtil.getProperty(CONFIG_KEY_DATASOURCE_PLATFORM); if (Strings.isBlank(databaseName)) { // 这个是 nacos 中更早的配置 datasource 类型的方式 - databaseName = EnvUtil.getProperty("spring.datasource.platform"); + databaseName = EnvUtil.getProperty(CONFIG_KEY_DATASOURCE_PLATFORM_DEPRECATED); } if (Strings.isBlank(databaseName)) { // 内嵌数据库 derby @@ -81,7 +98,7 @@ public class NacosEnvs { if (Objs.equals(DatabaseNames.DERBY, databaseName) || Objs.equals(DatabaseNames.MYSQL, databaseName)) { // 只要不是false|False 等,就是禁用,默认值为 true - boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty("spring.sql.plugin.builtin.enabled", "true"), "false")); + boolean builtinDatasourcePluginEnabled = NacosEnvs.supportsBuiltinDatabasePluginReplaced() && (!Strings.equalsIgnoreCase(EnvUtil.getProperty(CONFIG_KEY_DATASOURCE_PLUGIN_BUILTIN_ENABLED, "true"), "false")); // 自定义的插件会优先于 内置的 derby, mysql 插件 // 放到 MapperManager 中使用了 map#putIfAbsent,所以要启用 内置的 derby, mysql,必须保证 自定义的插件名字不能是 mysql,derby -- Gitee From 032a687ca8c175311f1f07d89c4c27f7139c6d2e Mon Sep 17 00:00:00 2001 From: coderjn Date: Mon, 16 Sep 2024 09:13:27 +0800 Subject: [PATCH 34/40] =?UTF-8?q?*=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jn/nacos/plugin/datasource/NacosEnvs.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index 99bc8da..0ab2564 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -41,14 +41,7 @@ public class NacosEnvs { return nacosVersion; } - /** - * 内置 数据库插件 (derby, mysql) 是否可以被替换 - * - * @return 是否可替换 - */ - public static boolean supportsBuiltinDatabasePluginReplaced() { - return versionCompare("2.3.0") >= 0; - } + public static boolean hasEncryptedDataKeyColumn() { return versionCompare("2.1.0") >= 0; @@ -112,4 +105,13 @@ public class NacosEnvs { return databaseName; } + /** + * 内置 数据库插件 (derby, mysql) 是否可以被替换 + * + * @return 是否可替换 + */ + public static boolean supportsBuiltinDatabasePluginReplaced() { + return versionCompare("2.3.0") >= 0; + } + } -- Gitee From 10345daee0340d3c99a59ecf91de26c9950bc785 Mon Sep 17 00:00:00 2001 From: coderjn Date: Tue, 17 Sep 2024 09:20:33 +0800 Subject: [PATCH 35/40] =?UTF-8?q?*=20=E9=BB=98=E8=AE=A4=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E6=9C=AA=E5=8A=A0=E5=BC=95=E5=8F=B7=E6=9D=A5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-datasource-sqlscript/resources/sql/README.MD | 2 +- .../com/jn/nacos/plugin/datasource/NacosDatabaseDialect.java | 2 +- .../src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java | 2 +- .../nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java | 1 - .../plugin/datasource/db/gauss/OpenGaussDatabaseDialect.java | 2 ++ .../plugin/datasource/db/kingbase/KingbaseDatabaseDialect.java | 2 ++ .../plugin/datasource/db/magicdata/MagicDatabaseDialect.java | 2 ++ .../nacos/plugin/datasource/db/mssql/MssqlDatabaseDialect.java | 2 ++ .../nacos/plugin/datasource/db/mysql/MysqlDatabaseDialect.java | 2 ++ .../plugin/datasource/db/oracle/OracleDatabaseDialect.java | 1 - .../datasource/db/postgresql/PostgresDatabaseDialect.java | 2 ++ 11 files changed, 15 insertions(+), 5 deletions(-) diff --git a/nacosplugin-datasource-sqlscript/resources/sql/README.MD b/nacosplugin-datasource-sqlscript/resources/sql/README.MD index 0b2ebf4..baac226 100644 --- a/nacosplugin-datasource-sqlscript/resources/sql/README.MD +++ b/nacosplugin-datasource-sqlscript/resources/sql/README.MD @@ -1,5 +1,5 @@ 在DDL语句中,identifier(表名、列名)的要求: -+ 尽量统一加上引号 ++ 尽量统一不加引号 + 如果不想统一加引号,按如下规则来处理: + 不加引号的identifier,必须使用小写形式 (原因: nacos 中的代码中,将列名、表名都是定死的小写),由数据库内部自行处理。 + 加引号的identifier,按照数据库对不加引号的identifier的处理方式来处理。 diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosDatabaseDialect.java index e1cd3bf..2be15da 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosDatabaseDialect.java @@ -31,7 +31,7 @@ public abstract class NacosDatabaseDialect { String sqlhelperDialect = getCustomizedDialect(this.name); this.delegate = DialectRegistry.getInstance().gaussDialect(sqlhelperDialect); this.functionMap = initFunctionMap(); - this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; + this.identifierQuotedMode = IdentifierQuotedMode.UNQUOTED; } public IdentifierQuotedMode getPluginProvidedDDLIdentifierQuotedMode(){ diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java index 0ab2564..2084b05 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/NacosEnvs.java @@ -60,7 +60,7 @@ public class NacosEnvs { mode = dialect.getPluginProvidedDDLIdentifierQuotedMode(); } if (mode == null) { - mode = IdentifierQuotedMode.QUOTED; + mode = IdentifierQuotedMode.UNQUOTED; } return mode; } diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java index ea7588b..d871130 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/derby/DerbyDatabaseDialect.java @@ -8,7 +8,6 @@ import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class DerbyDatabaseDialect extends NacosDatabaseDialect { public DerbyDatabaseDialect() { super(DatabaseNames.DERBY); - this.identifierQuotedMode = IdentifierQuotedMode.UNQUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/gauss/OpenGaussDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/gauss/OpenGaussDatabaseDialect.java index 23d2363..75db79e 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/gauss/OpenGaussDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/gauss/OpenGaussDatabaseDialect.java @@ -1,11 +1,13 @@ package com.jn.nacos.plugin.datasource.db.gauss; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class OpenGaussDatabaseDialect extends NacosDatabaseDialect { public OpenGaussDatabaseDialect() { super(DatabaseNames.OPENGAUSS); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/kingbase/KingbaseDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/kingbase/KingbaseDatabaseDialect.java index 79fe934..1c010dd 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/kingbase/KingbaseDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/kingbase/KingbaseDatabaseDialect.java @@ -1,11 +1,13 @@ package com.jn.nacos.plugin.datasource.db.kingbase; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class KingbaseDatabaseDialect extends NacosDatabaseDialect { public KingbaseDatabaseDialect() { super(DatabaseNames.KINGBASE); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/magicdata/MagicDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/magicdata/MagicDatabaseDialect.java index 779a914..f2b27cb 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/magicdata/MagicDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/magicdata/MagicDatabaseDialect.java @@ -1,11 +1,13 @@ package com.jn.nacos.plugin.datasource.db.magicdata; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class MagicDatabaseDialect extends NacosDatabaseDialect { public MagicDatabaseDialect() { super(DatabaseNames.MAGICDATA); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mssql/MssqlDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mssql/MssqlDatabaseDialect.java index 84661d0..ef68a5f 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mssql/MssqlDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mssql/MssqlDatabaseDialect.java @@ -2,6 +2,7 @@ package com.jn.nacos.plugin.datasource.db.mssql; import com.jn.langx.util.collection.Maps; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; import java.util.Map; @@ -9,6 +10,7 @@ import java.util.Map; public class MssqlDatabaseDialect extends NacosDatabaseDialect { public MssqlDatabaseDialect() { super(DatabaseNames.MSSQL); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mysql/MysqlDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mysql/MysqlDatabaseDialect.java index 17cd345..97ab62b 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mysql/MysqlDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/mysql/MysqlDatabaseDialect.java @@ -2,12 +2,14 @@ package com.jn.nacos.plugin.datasource.db.mysql; import com.alibaba.nacos.plugin.datasource.enums.mysql.TrustedMysqlFunctionEnum; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class MysqlDatabaseDialect extends NacosDatabaseDialect { public MysqlDatabaseDialect() { super(DatabaseNames.MYSQL); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java index 6221c46..a0306a9 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java @@ -7,7 +7,6 @@ import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class OracleDatabaseDialect extends NacosDatabaseDialect { public OracleDatabaseDialect(){ super(DatabaseNames.ORACLE); - this.identifierQuotedMode = IdentifierQuotedMode.UNQUOTED; } @Override diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/postgresql/PostgresDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/postgresql/PostgresDatabaseDialect.java index 21ae63a..ae51a90 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/postgresql/PostgresDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/postgresql/PostgresDatabaseDialect.java @@ -1,11 +1,13 @@ package com.jn.nacos.plugin.datasource.db.postgresql; import com.jn.nacos.plugin.datasource.DatabaseNames; +import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class PostgresDatabaseDialect extends NacosDatabaseDialect { public PostgresDatabaseDialect() { super(DatabaseNames.POSTGRESQL); + this.identifierQuotedMode = IdentifierQuotedMode.QUOTED; } @Override -- Gitee From 144e0b294d7338079f11fb4895bd3a9d0bce9596 Mon Sep 17 00:00:00 2001 From: coderjn Date: Tue, 17 Sep 2024 10:59:41 +0800 Subject: [PATCH 36/40] =?UTF-8?q?*=20=E5=8C=85=E5=A4=A7=E5=B0=8F=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-all/pom.xml | 9 ++++++++- .../main/java/com/jn/nacos/plugin/JnNacosPlugin.java | 11 ++++++++++- pom.xml | 2 -- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/nacosplugin-all/pom.xml b/nacosplugin-all/pom.xml index 47c4439..cccc083 100644 --- a/nacosplugin-all/pom.xml +++ b/nacosplugin-all/pom.xml @@ -12,7 +12,7 @@ nacosplugin-all ${project.groupId}:${project.artifactId}:${project.version} - 3.4.1 + 3.5.0 @@ -189,6 +189,13 @@ + true + diff --git a/nacosplugin-all/src/main/java/com/jn/nacos/plugin/JnNacosPlugin.java b/nacosplugin-all/src/main/java/com/jn/nacos/plugin/JnNacosPlugin.java index 9785176..76cfb62 100644 --- a/nacosplugin-all/src/main/java/com/jn/nacos/plugin/JnNacosPlugin.java +++ b/nacosplugin-all/src/main/java/com/jn/nacos/plugin/JnNacosPlugin.java @@ -1,5 +1,14 @@ package com.jn.nacos.plugin; -public class JnNacosPlugin { +import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.jn.langx.lifecycle.AbstractInitializable; +import com.jn.langx.lifecycle.InitializationException; + +public class JnNacosPlugin extends AbstractInitializable { private JnNacosPlugin(){} + + @Override + public void init() throws InitializationException { + MapperManager.instance(true).loadInitial(); + } } diff --git a/pom.xml b/pom.xml index 57e49c7..eb2f8b5 100644 --- a/pom.xml +++ b/pom.xml @@ -93,8 +93,6 @@ com.alibaba.nacos nacos-datasource-plugin ${nacos.version} - provided - com.google.guava -- Gitee From 21bbaecfad94f63e7fdcbc3078f85ca819c03042 Mon Sep 17 00:00:00 2001 From: coderjn Date: Tue, 17 Sep 2024 21:23:56 +0800 Subject: [PATCH 37/40] =?UTF-8?q?*=20=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacosplugin-all/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/nacosplugin-all/pom.xml b/nacosplugin-all/pom.xml index cccc083..91739f8 100644 --- a/nacosplugin-all/pom.xml +++ b/nacosplugin-all/pom.xml @@ -190,12 +190,6 @@ true - -- Gitee From 2db99367c4ed27658ed5f71656c26a1b1639c234 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Wed, 18 Sep 2024 16:49:36 +0800 Subject: [PATCH 38/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASE-LOG.MD | 1 + .../plugin/datasource/db/oracle/OracleDatabaseDialect.java | 1 - pom.xml | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASE-LOG.MD b/RELEASE-LOG.MD index 3c6da64..896d1bf 100644 --- a/RELEASE-LOG.MD +++ b/RELEASE-LOG.MD @@ -1,6 +1,7 @@ ## 2.0.8 1. 代码整理,简化 *Mapper 类 2. 避免dialect等重复创建,重复打印日志 +3. 对介质瘦身 ## 2.0.7 1. 支持禁用nacos默认插件derby, mysql 2. 提供derby 的sql schema diff --git a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java index a0306a9..4a517dc 100644 --- a/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java +++ b/nacosplugin-datasource/src/main/java/com/jn/nacos/plugin/datasource/db/oracle/OracleDatabaseDialect.java @@ -1,7 +1,6 @@ package com.jn.nacos.plugin.datasource.db.oracle; import com.jn.nacos.plugin.datasource.DatabaseNames; -import com.jn.nacos.plugin.datasource.IdentifierQuotedMode; import com.jn.nacos.plugin.datasource.NacosDatabaseDialect; public class OracleDatabaseDialect extends NacosDatabaseDialect { diff --git a/pom.xml b/pom.xml index eb2f8b5..a182021 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 1.17.0 2.4.1 5.3.34 - 5.0.6 + 5.0.7 https://gitee.com/coderjn/nacos-plugins -- Gitee From fd1fe7830fe809517c684581e80e3e6a2d61abb0 Mon Sep 17 00:00:00 2001 From: fjn1194361820 Date: Wed, 18 Sep 2024 16:58:49 +0800 Subject: [PATCH 39/40] =?UTF-8?q?*=20=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASE-LOG.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-LOG.MD b/RELEASE-LOG.MD index 896d1bf..20cfbc8 100644 --- a/RELEASE-LOG.MD +++ b/RELEASE-LOG.MD @@ -2,6 +2,7 @@ 1. 代码整理,简化 *Mapper 类 2. 避免dialect等重复创建,重复打印日志 3. 对介质瘦身 +4. 默认的 ddl identifier quote mode 修改为 unquoted ## 2.0.7 1. 支持禁用nacos默认插件derby, mysql 2. 提供derby 的sql schema -- Gitee From 9ae7185d2cc2bfceb50c07b32964300755c1a6c6 Mon Sep 17 00:00:00 2001 From: coderjn Date: Thu, 19 Sep 2024 07:07:50 +0800 Subject: [PATCH 40/40] =?UTF-8?q?*=20=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a182021..26383c7 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,8 @@ 1.23 5.4.4 1.17.0 - 2.4.1 - 5.3.34 + 2.4.2 + 5.3.39 5.0.7 -- Gitee