Skip to content

Commit 93cd0ae

Browse files
authored
CDAP-19389: Show correct SQL Datetime type for source table during Assessment (#218)
1 parent 65e3505 commit 93cd0ae

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

sqlserver-delta-plugins/src/main/java/io/cdap/delta/sqlserver/SqlServerTableAssessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public TableAssessment assess(TableDetail tableDetail) {
5959
static ColumnEvaluation evaluateColumn(ColumnDetail detail) throws IllegalArgumentException {
6060
Schema schema;
6161
int sqlType = detail.getType().getVendorTypeNumber();
62+
String sqlTypeName = detail.getType().getName();
6263
Map<String, String> properties = detail.getProperties();
6364
String upperCaseTypeName = properties.get(TYPE_NAME).toUpperCase();
6465
ColumnSupport support = ColumnSupport.YES;
@@ -118,6 +119,7 @@ static ColumnEvaluation evaluateColumn(ColumnDetail detail) throws IllegalArgume
118119
break;
119120
case Types.TIMESTAMP:
120121
schema = Schema.of(Schema.LogicalType.DATETIME);
122+
sqlTypeName = upperCaseTypeName;
121123
if (DATETIME2.equals(upperCaseTypeName)) {
122124
scale = Integer.parseInt(properties.get(SCALE));
123125
if (scale > MAX_SUPPORTED_SCALE) {
@@ -161,7 +163,7 @@ static ColumnEvaluation evaluateColumn(ColumnDetail detail) throws IllegalArgume
161163

162164
Schema.Field field = schema == null ? null :
163165
Schema.Field.of(detail.getName(), detail.isNullable() ? Schema.nullableOf(schema) : schema);
164-
ColumnAssessment assessment = ColumnAssessment.builder(detail.getName(), detail.getType().getName())
166+
ColumnAssessment assessment = ColumnAssessment.builder(detail.getName(), sqlTypeName)
165167
.setSupport(support)
166168
.setSuggestion(suggestion)
167169
.build();

sqlserver-delta-plugins/src/test/java/io.cdap.delta.sqlserver/SqlServerTableAssessorTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package io.cdap.delta.sqlserver;
1717

1818
import io.cdap.cdap.api.data.schema.Schema;
19+
import io.cdap.delta.api.assessment.ColumnAssessment;
1920
import io.cdap.delta.api.assessment.ColumnDetail;
2021
import io.cdap.delta.api.assessment.ColumnSupport;
2122
import io.cdap.delta.api.assessment.TableAssessment;
@@ -56,10 +57,12 @@ public void testDateTime2WithNanoScaleMapping() {
5657
ColumnEvaluation columnEvaluation = SqlServerTableAssessor.evaluateColumn(columnDetail);
5758
TableAssessment assessment = tableAssessor.assess(tableDetail);
5859

60+
Assert.assertEquals(1, assessment.getColumns().size());
61+
ColumnAssessment columnAssessment = assessment.getColumns().get(0);
62+
Assert.assertEquals(SqlServerTableAssessor.DATETIME2, columnAssessment.getType());
63+
Assert.assertEquals(ColumnSupport.PARTIAL, columnAssessment.getSupport());
5964
Assert.assertEquals(Schema.LogicalType.DATETIME,
6065
columnEvaluation.getField().getSchema().getNonNullable().getLogicalType());
61-
Assert.assertEquals(1, assessment.getColumns().size());
62-
Assert.assertEquals(ColumnSupport.PARTIAL, assessment.getColumns().get(0).getSupport());
6366
}
6467

6568
@Test
@@ -94,7 +97,9 @@ public void testDateTimeMapping() {
9497
Assert.assertEquals(Schema.LogicalType.DATETIME,
9598
columnEvaluation.getField().getSchema().getNonNullable().getLogicalType());
9699
Assert.assertEquals(1, assessment.getColumns().size());
97-
Assert.assertEquals(ColumnSupport.YES, assessment.getColumns().get(0).getSupport());
100+
ColumnAssessment columnAssessment = assessment.getColumns().get(0);
101+
Assert.assertEquals(DATETIME, columnAssessment.getType());
102+
Assert.assertEquals(ColumnSupport.YES, columnAssessment.getSupport());
98103
}
99104

100105
@Test

0 commit comments

Comments
 (0)