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 a6779219795a04e8b171340e75d8dd8ab27ad054..cca6da53885bfe1745ceb5e41ade4c8b55aa4d1e 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(); } 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 e50a4aff36dec362ebc4784cd19745ba4f328877..870fc0dc3d1dc46a660c8bd054aefd34ab95d06b 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(); 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 3d9e1c9b3ef38123968bfb71a13ed6324ff9adb5..fd4dde91bf4d2b7b377e227f03e82b2427c51562 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(); 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 6bc278f987713fe0270cdd87ac0095bbe6b5506c..d2c908047207c9585862729f19e89b42ef616971 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