You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Spongebob (Jira)" <ji...@apache.org> on 2022/03/30 08:10:00 UTC

[jira] [Created] (FLINK-26925) loss scale in union situation

Spongebob created FLINK-26925:
---------------------------------

             Summary: loss scale in union situation
                 Key: FLINK-26925
                 URL: https://issues.apache.org/jira/browse/FLINK-26925
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / API
            Reporter: Spongebob


when I union two columns that datatypes are decimal(38,4) and decimal(38,2), but got decimal(38,2) in return. This cause the problem that loss scale in result set. I think the final datatype should be decimal(38,4) would be fine.
{code:java}
TableEnvironment tableEnvironment = TableEnvironment.create(EnvironmentSettings.newInstance().inBatchMode().build());

Table t1 = tableEnvironment.sqlQuery("select cast(1.23 as decimal(38,2)) as a");
Table t2 = tableEnvironment.sqlQuery("select cast(4.5678 as decimal(38,4)) as a");

tableEnvironment.createTemporaryView("t1", t1);
tableEnvironment.createTemporaryView("t2", t2);

tableEnvironment.executeSql("select a from t1 union all select a from t2").print();
tableEnvironment.sqlQuery("select a from t1 union all select a from t2").printSchema(); 


// output
+------------------------------------------+
|                                        a |
+------------------------------------------+
|                                     1.23 |
|                                     4.57 |
+------------------------------------------+
2 rows in set
(
  `a` DECIMAL(38, 2) NOT NULL
){code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)