From 3305ef0ce9ea833daf69123f45efa01edfa1ad81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=B6=E5=8F=B6=E8=9B=8B?= <843571091@qq.com> Date: Fri, 6 Dec 2024 11:20:03 +0000 Subject: [PATCH] =?UTF-8?q?!224=20=E4=BF=AE=E5=A4=8Dstarrocks=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=88=A4=E6=96=AD?= =?UTF-8?q?&&=E5=A1=AB=E5=85=85=E5=88=97remark=E6=97=B6=E6=8F=90=E5=89=8D?= =?UTF-8?q?=E8=B7=B3=E5=87=BA=E5=BE=AA=E7=8E=AF=20*=20=E5=A1=AB=E5=85=85?= =?UTF-8?q?=E5=88=97remark=E6=97=B6=E6=8F=90=E5=89=8D=E8=B7=B3=E5=87=BA?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=20*=20=E4=BF=AE=E5=A4=8Dsr=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meta/AbstractMetadataProvider.java | 2 ++ .../sr/StarrocksMetadataQueryProvider.java | 35 ++++++------------- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/dbswitch-core/src/main/java/org/dromara/dbswitch/core/provider/meta/AbstractMetadataProvider.java b/dbswitch-core/src/main/java/org/dromara/dbswitch/core/provider/meta/AbstractMetadataProvider.java index b7cb197f..22352f8c 100644 --- a/dbswitch-core/src/main/java/org/dromara/dbswitch/core/provider/meta/AbstractMetadataProvider.java +++ b/dbswitch-core/src/main/java/org/dromara/dbswitch/core/provider/meta/AbstractMetadataProvider.java @@ -157,6 +157,8 @@ public abstract class AbstractMetadataProvider for (ColumnDescription cd : ret) { if (columnName.equals(cd.getFieldName())) { cd.setRemarks(remarks); + //break out of the loop early + break; } } } diff --git a/dbswitch-product/dbswitch-product-starrocks/src/main/java/org/dromara/dbswitch/product/sr/StarrocksMetadataQueryProvider.java b/dbswitch-product/dbswitch-product-starrocks/src/main/java/org/dromara/dbswitch/product/sr/StarrocksMetadataQueryProvider.java index 13ef3fac..450eeed8 100644 --- a/dbswitch-product/dbswitch-product-starrocks/src/main/java/org/dromara/dbswitch/product/sr/StarrocksMetadataQueryProvider.java +++ b/dbswitch-product/dbswitch-product-starrocks/src/main/java/org/dromara/dbswitch/product/sr/StarrocksMetadataQueryProvider.java @@ -274,7 +274,9 @@ public class StarrocksMetadataQueryProvider extends AbstractMetadataProvider { case ColumnMetaData.TYPE_BIGNUMBER: if (null != pks && !pks.isEmpty() && pks.contains(fieldname)) { if (useAutoInc) { - retval += "BIGINT AUTO_INCREMENT NOT NULL"; + //see: https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/table_bucket_part_index/CREATE_TABLE/#column_definition + //fix: AUTO_INCREMENT should be after not null + retval += "BIGINT NOT NULL AUTO_INCREMENT"; } else { retval += "BIGINT NOT NULL"; } @@ -310,30 +312,15 @@ public class StarrocksMetadataQueryProvider extends AbstractMetadataProvider { } break; case ColumnMetaData.TYPE_STRING: - if (length > 0) { - if (length == 1) { - retval += "CHAR(1)"; - } else if (length < 256) { - retval += "VARCHAR(" + length * 2 + ")"; - } else if (null != pks && !pks.isEmpty() && pks.contains(fieldname)) { - /* - * MySQL5.6中varchar字段为主键时最大长度为254,例如如下的建表语句在MySQL5.7下能通过,但在MySQL5.6下无法通过: - * create table `t_test`( - * `key` varchar(1024) binary, - * `val` varchar(1024) binary, - * primary key(`key`) - * ); - */ - retval += "VARCHAR(254) BINARY"; - } else if (length < 65536) { - retval += "TEXT"; - } else if (length < 16777216) { - retval += "MEDIUMTEXT"; - } else { - retval += "LONGTEXT"; - } + //see: https://docs.starrocks.io/zh/docs/category/string/ + if (length <= 255) { + retval += "CHAR(" + length + ")"; + } else if (length <= 65533) { + retval += "STRING"; + } else if (length <= 1048576){ + retval += "VARCHAR(" + length + ")"; } else { - retval += "TINYTEXT"; + retval += "VARBINARY"; } break; case ColumnMetaData.TYPE_BINARY: