From 57815d3ec4f23ae9fb247f8bf4c2e5b9d1913a1e Mon Sep 17 00:00:00 2001 From: pink Date: Tue, 10 Dec 2024 16:51:41 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=B7=BB=E5=8A=A0=E4=BA=86duckdb?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=94=AF=E6=8C=81=20=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E6=98=AF=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B=E5=92=8C?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=96=B9=E8=A8=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mybatisflex/core/dialect/DbType.java | 5 +++++ .../main/java/com/mybatisflex/core/dialect/DbTypeUtil.java | 2 ++ .../java/com/mybatisflex/core/dialect/DialectFactory.java | 2 ++ .../main/java/com/mybatisflex/core/dialect/KeywordWrap.java | 2 +- .../com/mybatisflex/core/dialect/LimitOffsetProcessor.java | 2 +- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java index ee7bfcd7..4b260ee7 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java @@ -234,6 +234,11 @@ public enum DbType { */ TRINO("trino", "trino 数据库"), + /** + * Duckdb + */ + DUCKDB("duckdb", "duckdb 数据库"), + /** * UNKNOWN DB */ diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java index 21659bf8..b5d34585 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java @@ -161,6 +161,8 @@ public class DbTypeUtil { return DbType.LEALONE; } else if (jdbcUrl.contains(":hive2:")) { return DbType.HIVE; + } else if (jdbcUrl.contains(":duckdb:")) { + return DbType.DUCKDB; } else { return DbType.OTHER; } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java index 494ddc59..d639ffb9 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java @@ -152,6 +152,8 @@ public class DialectFactory { return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.SYBASE); case TRINO: return new CommonsDialectImpl(KeywordWrap.NONE, LimitOffsetProcessor.SQLSERVER); + case DUCKDB: + return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.MYSQL); default: return new CommonsDialectImpl(); } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/KeywordWrap.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/KeywordWrap.java index 94dac427..9a85f30c 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/KeywordWrap.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/KeywordWrap.java @@ -54,7 +54,7 @@ public class KeywordWrap { public static final KeywordWrap BACK_QUOTE = new KeywordWrap("`", "`"); /** - * 双引号反义处理, 适用于 postgresql, sqlite, derby, oracle 等 + * 双引号反义处理, 适用于 postgresql, sqlite, derby, oracle, duckdb 等 */ public static final KeywordWrap DOUBLE_QUOTATION = new KeywordWrap("\"", "\""); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java index 2735f7ed..d3835e5d 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java @@ -57,7 +57,7 @@ public interface LimitOffsetProcessor { * Postgresql 的处理器 * 适合 {@link DbType#POSTGRE_SQL,DbType#SQLITE,DbType#H2,DbType#HSQL,DbType#KINGBASE_ES,DbType#PHOENIX} * 适合 {@link DbType#SAP_HANA,DbType#IMPALA,DbType#HIGH_GO,DbType#VERTICA,DbType#REDSHIFT} - * 适合 {@link DbType#OPENGAUSS,DbType#TDENGINE,DbType#UXDB} + * 适合 {@link DbType#OPENGAUSS,DbType#TDENGINE,DbType#UXDB,DbType#DUCKDB} */ LimitOffsetProcessor POSTGRESQL = (dialect, sql, queryWrapper, limitRows, limitOffset) -> { if (limitRows != null && limitOffset != null) {