You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tw...@apache.org on 2021/11/02 08:47:18 UTC

[flink] 03/03: [hotfix][table-common] Disable cast from binary to date/time

This is an automated email from the ASF dual-hosted git repository.

twalthr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit ba1d9166f5f704bd47ad6d71e755b0653e8c2a83
Author: Marios Trivyzas <ma...@gmail.com>
AuthorDate: Sun Oct 31 21:07:46 2021 +0100

    [hotfix][table-common] Disable cast from binary to date/time
    
    Don't allow to cast from `BINARY`/`VARBINARY`/`BYTES` to any of
    `DATE`/`TIME`/`TIMESTAMP`/`TIMESTAMP_LTZ` in verification stage.
---
 .../types/logical/utils/LogicalTypeCasts.java      |  8 ++++----
 .../planner/functions/CastFunctionITCase.java      | 24 +++++++++++-----------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeCasts.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeCasts.java
index 36dda77..2bbf255 100644
--- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeCasts.java
+++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeCasts.java
@@ -184,17 +184,17 @@ public final class LogicalTypeCasts {
 
         castTo(DATE)
                 .implicitFrom(DATE, TIMESTAMP_WITHOUT_TIME_ZONE)
-                .explicitFromFamily(TIMESTAMP, CHARACTER_STRING, BINARY_STRING)
+                .explicitFromFamily(TIMESTAMP, CHARACTER_STRING)
                 .build();
 
         castTo(TIME_WITHOUT_TIME_ZONE)
                 .implicitFrom(TIME_WITHOUT_TIME_ZONE, TIMESTAMP_WITHOUT_TIME_ZONE)
-                .explicitFromFamily(TIME, TIMESTAMP, CHARACTER_STRING, BINARY_STRING)
+                .explicitFromFamily(TIME, TIMESTAMP, CHARACTER_STRING)
                 .build();
 
         castTo(TIMESTAMP_WITHOUT_TIME_ZONE)
                 .implicitFrom(TIMESTAMP_WITHOUT_TIME_ZONE, TIMESTAMP_WITH_LOCAL_TIME_ZONE)
-                .explicitFromFamily(DATETIME, CHARACTER_STRING, BINARY_STRING, NUMERIC)
+                .explicitFromFamily(DATETIME, CHARACTER_STRING, NUMERIC)
                 .build();
 
         castTo(TIMESTAMP_WITH_TIME_ZONE)
@@ -204,7 +204,7 @@ public final class LogicalTypeCasts {
 
         castTo(TIMESTAMP_WITH_LOCAL_TIME_ZONE)
                 .implicitFrom(TIMESTAMP_WITH_LOCAL_TIME_ZONE, TIMESTAMP_WITHOUT_TIME_ZONE)
-                .explicitFromFamily(DATETIME, CHARACTER_STRING, BINARY_STRING, NUMERIC)
+                .explicitFromFamily(DATETIME, CHARACTER_STRING, NUMERIC)
                 .build();
 
         castTo(INTERVAL_YEAR_MONTH)
diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
index 723a262..78f6d6c 100644
--- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
+++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java
@@ -789,9 +789,9 @@ public class CastFunctionITCase extends BuiltInFunctionTestBase {
                         .fromCase(STRING(), "2021/09/27", null)
                         // Not supported - no fix
                         .fail(BOOLEAN(), true)
-                        // BINARY
-                        // VARBINARY
-                        // BYTES
+                        .failTableApi(BINARY(2), DEFAULT_BINARY)
+                        .failTableApi(VARBINARY(5), DEFAULT_VARBINARY)
+                        .failTableApi(BYTES(), DEFAULT_BYTES)
                         .fail(DECIMAL(5, 3), 12.345)
                         .fail(TINYINT(), DEFAULT_POSITIVE_TINY_INT)
                         .fail(SMALLINT(), DEFAULT_POSITIVE_SMALL_INT)
@@ -836,9 +836,9 @@ public class CastFunctionITCase extends BuiltInFunctionTestBase {
                         .fromCase(STRING(), "2021-09-27 12:34:56.123456789", null)
                         // Not supported - no fix
                         .fail(BOOLEAN(), true)
-                        // BINARY
-                        // VARBINARY
-                        // BYTES
+                        .failTableApi(BINARY(2), DEFAULT_BINARY)
+                        .failTableApi(VARBINARY(5), DEFAULT_VARBINARY)
+                        .failTableApi(BYTES(), DEFAULT_BYTES)
                         .fail(DECIMAL(5, 3), 12.345)
                         .fail(TINYINT(), DEFAULT_POSITIVE_TINY_INT)
                         .fail(SMALLINT(), DEFAULT_POSITIVE_SMALL_INT)
@@ -881,9 +881,9 @@ public class CastFunctionITCase extends BuiltInFunctionTestBase {
                                 LocalDateTime.of(2021, 9, 27, 12, 34, 56, 123456789))
                         // Not supported - no fix
                         .fail(BOOLEAN(), true)
-                        // BINARY
-                        // VARBINARY
-                        // BYTES
+                        .failTableApi(BINARY(2), DEFAULT_BINARY)
+                        .failTableApi(VARBINARY(5), DEFAULT_VARBINARY)
+                        .failTableApi(BYTES(), DEFAULT_BYTES)
                         .fail(DECIMAL(5, 3), 12.345)
                         .fail(TINYINT(), DEFAULT_POSITIVE_TINY_INT)
                         .fail(SMALLINT(), DEFAULT_POSITIVE_SMALL_INT)
@@ -957,9 +957,9 @@ public class CastFunctionITCase extends BuiltInFunctionTestBase {
 
                         // Not supported - no fix
                         .fail(BOOLEAN(), true)
-                        // BINARY
-                        // VARBINARY
-                        // BYTES
+                        .failTableApi(BINARY(2), DEFAULT_BINARY)
+                        .failTableApi(VARBINARY(5), DEFAULT_VARBINARY)
+                        .failTableApi(BYTES(), DEFAULT_BYTES)
                         .fail(DECIMAL(5, 3), 12.345)
                         .fail(TINYINT(), DEFAULT_POSITIVE_TINY_INT)
                         .fail(SMALLINT(), DEFAULT_POSITIVE_SMALL_INT)