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