From 8543fb1f4969ed510996ec0090f9e81fe55710c6 Mon Sep 17 00:00:00 2001 From: gailibing Date: Mon, 11 Dec 2023 10:41:50 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=AF=B4=E6=98=8E.md=20?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=B4=A2=E5=BC=95=E5=92=8C=E7=BA=A6=E6=9D=9F?= =?UTF-8?q?=E7=9A=84=E8=AF=B4=E6=98=8E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\350\277\201\347\247\273\350\257\264\346\230\216.md" | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git "a/\350\277\201\347\247\273\350\257\264\346\230\216.md" "b/\350\277\201\347\247\273\350\257\264\346\230\216.md" index 6bc278f..d2c9080 100644 --- "a/\350\277\201\347\247\273\350\257\264\346\230\216.md" +++ "b/\350\277\201\347\247\273\350\257\264\346\230\216.md" @@ -81,4 +81,10 @@ TO_TIMESTAMP('2022-01-01 10:30:00', 'YYYY-MM-DD HH24:MI:SS'),'clobinsert', create table test.t_table2(c_long_raw long raw); insert into test.t_table2 values('48656C6C6F20576F726C64'); -``` \ No newline at end of file +``` + +# 支持的索引类型 +当前支持Btree索引,即查询 all_indexes 系统表,index_type 列值为“NORMAL”的索引。 + +# 支持的约束类型 +当前支持 主键约束、唯一约束、外键约束、检查约束。 \ No newline at end of file -- Gitee From 9a3769acd8333ecab83c03cf5ee337c241b07e71 Mon Sep 17 00:00:00 2001 From: gailibing Date: Wed, 27 Dec 2023 17:42:20 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=97=E7=9A=84comment=E6=94=BE=E5=9C=A8?= =?UTF-8?q?=E5=BB=BA=E8=A1=A8=E8=AF=AD=E5=8F=A5=E5=90=8E=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=EF=BC=9B=E5=88=86=E5=8C=BA=E8=A1=A8=E6=9B=B4=E6=96=B0=E5=88=A4?= =?UTF-8?q?=E6=96=AD=EF=BC=9Boracle=20scale=E4=B8=BA=E8=B4=9F=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=B0=86scale=E5=9C=A8=E7=9B=AE=E6=A0=87=E7=AB=AF?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA0=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E8=84=8F=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=9B=A0=E6=AD=A4=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=89=A9=E5=A4=A7=E7=B2=BE=E5=BA=A6=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E6=9D=A5=E9=81=BF=E5=85=8D=E8=84=8F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dmt/db/opengauss/TableObjectImpl.java | 119 ++++-------------- 1 file changed, 24 insertions(+), 95 deletions(-) diff --git a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/TableObjectImpl.java b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/TableObjectImpl.java index 3d9e1c9..fd4dde9 100644 --- a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/TableObjectImpl.java +++ b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/TableObjectImpl.java @@ -102,18 +102,6 @@ public class TableObjectImpl extends MetaImpl implements TableObject { // tableDto.setTarSchema(preserveCase ? tableDto.getSchema() : tableDto.getSchema().toLowerCase()); tableDto.setTarName(tarTableName); - TableTypeConfig.TableTypeMapper tableTypeMapper = tableTypeWrapper.tableTypeMapper(tableDto.getSchema(), tableDto.getName()); - if (ObjectUtils.isNotEmpty(tableTypeMapper)) { - tableDto.getProperties().put("distributeType".toUpperCase(), tableTypeMapper.getTableType().name().toUpperCase()); - tableDto.getProperties().put("distributeBy".toUpperCase(), "HASH"); - - String tarDistributeColumn = keywordsWrapper.getColumnName(tableDto.getSchema(), - tableDto.getName(), - tableTypeMapper.getColumn(), -// tableDto.getProperties().get("distributeColumn".toUpperCase()).toString(), - preserveCase); - tableDto.getProperties().put("distributeColumn".toUpperCase(), tarDistributeColumn); - } if ("YES".equalsIgnoreCase(tableDto.getProperties().getOrDefault("partitioned", "NO").toString())) { String tarPartitionColumn = keywordsWrapper.getColumnName(tableDto.getSchema(), tableDto.getName(), @@ -150,6 +138,9 @@ public class TableObjectImpl extends MetaImpl implements TableObject { columnDto.setTarDataScale(columnDto.getDataScale()); } } + if (columnDto.getTarDataScale() != null && columnDto.getTarDataScale() < 0){ + scaleLessThan0Col.add(columnDto); + } }); if (CollectionUtils.isNotEmpty(scaleLessThan0Col)) { @@ -584,9 +575,6 @@ public class TableObjectImpl extends MetaImpl implements TableObject { if (dataType.equals("numeric")) { Integer dataPrecision = column.getTarDataPrecision(); Integer dataScale = column.getTarDataScale(); - if (!(Objects.isNull(dataScale)) && dataScale < 0){ - dataScale = 0; - } if (!(Objects.isNull(dataScale)) && !(Objects.isNull(dataPrecision)) && dataScale > dataPrecision){ dataScale = dataPrecision; @@ -614,38 +602,7 @@ public class TableObjectImpl extends MetaImpl implements TableObject { sb.append("(").append(column.getTarDataLength()).append(")").append(" "); } } - } - - //需要指定长度的字段 -// if (needSetLengthSet.contains(dataType)) { -// -// //如果说是numeric类型,是这个样子的 "a23" numeric(255,6) -// if (dataType.equals("numeric")) { -// Integer dataPrecision = column.getTarDataPrecision(); -// Integer dataScale = column.getTarDataScale(); -// if (dataPrecision != null) { -// if (dataScale != null && dataScale < 0){ -// sb.append("(").append(dataPrecision - dataScale); -//// if (dataScale != null) { -// sb.append(", ").append(0); -//// } -// sb.append(")"); -// scaleLessThan0Col.add(column); -// } else { -// sb.append("(").append(dataPrecision); -// if (dataScale != null) { -// sb.append(", ").append(dataScale); -// } -// sb.append(")"); -// } -// } -// } else { -// //不是numeric字段的 是这个样子的 "a12" varbit(255) -//// Integer dataLength = column.getDataLength(); -// if (column.getTarDataLength() != null) { -// sb.append("(").append(column.getTarDataLength()).append(")").append(" "); -// } -// } + } } //不为空的字段 @@ -684,13 +641,6 @@ public class TableObjectImpl extends MetaImpl implements TableObject { sb.append(" default ").append(dataDefault); } - //列的注释 - if (!StringUtils.isBlank(column.getColumnComment())) { - String columneComment = column.getColumnComment(); - columneComment = columneComment.replaceAll("\'","\'\'"); - sb.append(" comment ").append("\'").append(columneComment).append("\'"); - } - //句尾逗号 if (i < columnDtos.size() - 1) { sb.append(", \r\n"); @@ -715,48 +665,12 @@ public class TableObjectImpl extends MetaImpl implements TableObject { StringBuilder partitionSql = new StringBuilder(); String dbType = query("select version()", new ScalarHandler()); Map properties = tableDto.getProperties(); - List partitionInfos = tableDto.getPartitionInfos(); - if (dbType.contains("single_node")){ - if (properties != null && !properties.isEmpty()){ - String partitioned = (String) properties.get("PARTITIONED"); - String distributeType = (String) properties.get("DISTRIBUTETYPE"); - if ("YES".equals(partitioned)) { - String partSql = processParted(tableDto); - sb.append(partSql); - } - } - } - if (dbType.contains("multiple_nodes")){ - if (properties != null && !properties.isEmpty()) { - String partitioned = (String) properties.get("PARTITIONED"); - String distributeType = (String) properties.get("DISTRIBUTETYPE"); - - if (!StringUtils.isBlank(distributeType)) { - sb.append("DISTRIBUTE BY "); - if (StringUtils.equals("DISTRIBUTION", distributeType)) { - String distributeBy = (String) properties.get("DISTRIBUTEBY"); - String distributeColumn = (String) properties.get("DISTRIBUTECOLUMN"); - - //如果前端传过来的distributeColumn不在主键列中,选取主键列中的列为distributeColumn,为了最后迁移能成功 -// if (!pkList.contains(distributeColumn) && !pkList.isEmpty()){ -// distributeColumn=pkList.get(0); -// } - - if ("ROUNDROBIN".equals(distributeBy)) { - sb.append(distributeBy); - } else { - sb.append(distributeBy).append("(").append(wrap(distributeColumn, preserveCase)).append(")"); - } - } else { - sb.append(distributeType); - } - sb.append(" "); - } - if ("YES".equals(partitioned)) { - String partSql = processParted(tableDto); - sb.append(partSql); - } + if (properties != null && !properties.isEmpty()) { + String partitioned = (String) properties.get("PARTITIONED"); + if ("YES".equals(partitioned)) { + String partSql = processParted(tableDto); + sb.append(partSql); } } @@ -773,6 +687,21 @@ public class TableObjectImpl extends MetaImpl implements TableObject { sb.append(";\r\n"); } + //列的注释 + if (CollectionUtils.isNotEmpty(columnDtos)) { + for (TableDto.ColumnDto columnDto : columnDtos) { + if (!StringUtils.isBlank(columnDto.getColumnComment())) { + String columnComment = columnDto.getColumnComment(); + columnComment = columnComment.replaceAll("\'","\'\'"); + sb.append("COMMENT ON COLUMN "); + sb.append(wrap(tarSchemaName,true)).append("."); + sb.append(wrap(tarTableName,preserveCase)).append("."); + sb.append(wrap(columnDto.getName(),preserveCase)); + sb.append(" is ").append("\'" + columnComment + "\'").append(";\r\n"); + } + } + } + if (tableDto.getAutoColumn() != null) { TableDto.ColumnDto columnDto = tableDto.getAutoColumn(); String autoIncrement = columnDto.getAutoIncrement(); -- Gitee From 6f56ae85b80a3157f9fe8cc6ceb82091e3f258c7 Mon Sep 17 00:00:00 2001 From: gailibing Date: Wed, 27 Dec 2023 17:43:03 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=90=8C=E4=B9=89=E8=AF=8D=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=89=80=E5=B1=9E=E6=A8=A1=E5=BC=8F=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gbase8c/dmt/db/opengauss/SynonymObjectImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SynonymObjectImpl.java b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SynonymObjectImpl.java index e50a4af..870fc0d 100644 --- a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SynonymObjectImpl.java +++ b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SynonymObjectImpl.java @@ -54,7 +54,7 @@ public class SynonymObjectImpl extends MetaImpl implements SynonymObject { public String sql(SynonymDto synonymDto, Map params) { String synonymName = synonymDto.getName(); String tarSynSchema = synonymDto.getTarSchema(); - String tarTableSchema = synonymDto.getTarSchema(); + String tarTableSchema = synonymDto.getObjectOwner(); // String tarTableSchema = synonymDto.getObjectOwner(); String synObjName = synonymDto.getSynObjName(); boolean preserveCase = synonymDto.getTask().getMigrateConfig().isPreserveCase(); -- Gitee From fa2707cc8211b35fe43d2950de9da9a612b13916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=A98861?= Date: Tue, 2 Jan 2024 08:48:23 +0000 Subject: [PATCH 4/4] =?UTF-8?q?!20=20=E8=BF=81=E7=A7=BB=E8=AF=B4=E6=98=8E.?= =?UTF-8?q?md=20=E5=8A=A0=E5=85=A5=E7=B4=A2=E5=BC=95=E5=92=8C=E7=BA=A6?= =?UTF-8?q?=E6=9D=9F=E7=9A=84=E8=AF=B4=E6=98=8E+=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=8D=95=E3=80=82=20*=20Merge=20remote-track?= =?UTF-8?q?ing=20branch=20'origin/dev'=20into=20dev=20*=20=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E8=AF=B4=E6=98=8E.md=20=E5=8A=A0=E5=85=A5=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E5=92=8C=E7=BA=A6=E6=9D=9F=E7=9A=84=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E3=80=82=E4=BF=AE=E6=94=B9bug=E3=80=82=20*=20Merge=20remote-tr?= =?UTF-8?q?acking=20branch=20'origin/dev'=20into=20dev=20*=20=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E4=BB=A3=E7=A0=81=E5=88=A0=E9=99=A4=EF=BC=9B?= =?UTF-8?q?=E5=8A=A0=E8=8B=B1=E6=96=87=E6=B3=A8=E9=87=8A=20*=20=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E8=AF=B4=E6=98=8E.md=20=E5=8A=A0=E5=85=A5=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E5=92=8C=E7=BA=A6=E6=9D=9F=E7=9A=84=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gbase8c/dmt/db/opengauss/SchemaObjectImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SchemaObjectImpl.java b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SchemaObjectImpl.java index a677921..cca6da5 100644 --- a/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SchemaObjectImpl.java +++ b/dmt/src/main/java/com/gbase8c/dmt/db/opengauss/SchemaObjectImpl.java @@ -51,7 +51,7 @@ public class SchemaObjectImpl extends MetaImpl implements SchemaObject { StringBuilder sb = new StringBuilder(); String tarSchemaName = schemaDto.getTarName(); boolean preserveCase = schemaDto.getTask().getMigrateConfig().isPreserveCase(); - sb.append("CREATE SCHEMA IF NOT EXISTS ").append(wrap(tarSchemaName, true)).append(";").append("\r\n"); + sb.append("CREATE SCHEMA ").append(wrap(tarSchemaName, true)).append(";").append("\r\n"); log.info(String.valueOf(sb)); return sb.toString(); } -- Gitee