zihaoAK47 commented on code in PR #30670:
URL: https://github.com/apache/shardingsphere/pull/30670#discussion_r1542251723
##########
kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/projection/impl/DataTypeConverter.java:
##########
@@ -45,7 +45,12 @@ public static Optional<SqlNode> convert(final
DataTypeSegment segment) {
if (null == segment) {
return Optional.empty();
}
- return Optional.of(new SqlDataTypeSpec(new
SqlBasicTypeNameSpec(Objects.requireNonNull(SqlTypeName.get(segment.getDataTypeName())),
segment.getDataLength().getPrecision(), SqlParserPos.ZERO),
- SqlParserPos.ZERO));
+ return Optional.of(new
SqlDataTypeSpec(getSqlBasicTypeNameSpec(segment), SqlParserPos.ZERO));
+ }
+
+ private static SqlBasicTypeNameSpec getSqlBasicTypeNameSpec(final
DataTypeSegment segment) {
Review Comment:
Hi mentor, the issue arises from executing the cast function in a federated
query scenario. I tried to add the following statement to the e2e process:
"select cast(1 as char)"
This SQL statement will result in incorrect column types error in the JDBC
scenario, causing the e2e process to fail.
I tried the following other SQL statements, but the result obtained from
executing e2e is different from the function executed on MySQL:
select cast("2024-03-28" as date)
Expected :2024-03-28
Actual :19810
##########
parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/DataTypeLengthSegment.java:
##########
@@ -36,8 +36,9 @@ public final class DataTypeLengthSegment implements
SQLSegment {
private int scale;
/**
- * get secondNumber.
- * @return Optional.
+ * Get second number.
Review Comment:
Format method comments :smile:
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]