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 84b151bfc33c7055a5e4812cf542837b4294bc84..3d9e1c9b3ef38123968bfb71a13ed6324ff9adb5 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 @@ -150,9 +150,6 @@ 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)) { @@ -587,6 +584,13 @@ 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; + } if (dataPrecision != null) { if (dataScale != null && dataScale < 0){ sb.append("(").append(dataPrecision - dataScale); diff --git a/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java b/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java index 0601b1077c529c9f8d44e9fc1fa856c39dc453ad..09272a86ceb588d1806716f0753a8224e48484b4 100644 --- a/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java +++ b/dmt/src/main/java/com/gbase8c/dmt/db/oracle/TableObjectImpl.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; public class TableObjectImpl extends MetaImpl implements TableObject { protected IndexObject indexObject; + private static Integer defaultPrecision = 38; public TableObjectImpl(DataSourceDto dataSourceDto) { super(dataSourceDto); @@ -130,6 +131,12 @@ public class TableObjectImpl extends MetaImpl implements TableObject { // for (TableDto.ColumnDto columnDto : columnDtos) { columnDto.setSqlType(toSqlType(columnDto.getDataType())); + if (Objects.equals(columnDto.getSqlType(),Types.NUMERIC) + && !(Objects.isNull(columnDto.getDataScale())) + && (Objects.isNull(columnDto.getDataPrecision())) + && columnDto.getDataScale() == 0){ + columnDto.setDataPrecision(defaultPrecision); + } if (Objects.equals(columnDto.getSqlType(),Types.NUMERIC) && !(Objects.isNull(columnDto.getDataScale())) && !(Objects.isNull(columnDto.getDataPrecision())) diff --git a/quickstart/workdir.zip b/quickstart/workdir.zip index 75ae1c58e49515a2549dcd04a52ff8ad941c2674..5103b75a644dfb3ac04bd6efa6d1e0a50cbf415d 100644 Binary files a/quickstart/workdir.zip and b/quickstart/workdir.zip differ