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/12 14:43:38 UTC

[flink] 04/04: [hotfix][table-planner] Move all casting rules to casting package and make them package-private

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 da24fbf23c244771084bf0a31cdbb9749d72e80a
Author: slinkydeveloper <fr...@gmail.com>
AuthorDate: Fri Nov 12 10:38:32 2021 +0100

    [hotfix][table-planner] Move all casting rules to casting package and make them package-private
    
    Signed-off-by: slinkydeveloper <fr...@gmail.com>
---
 .../casting/{rules => }/AbstractCastRule.java       |  9 ++-------
 .../AbstractCharacterFamilyTargetRule.java          |  8 ++------
 .../{rules => }/AbstractCodeGeneratorCastRule.java  | 10 ++--------
 .../AbstractExpressionCodeGeneratorCastRule.java    | 14 ++++----------
 .../AbstractNullAwareCodeGeneratorCastRule.java     |  9 ++-------
 .../casting/{rules => }/ArrayToArrayCastRule.java   | 19 ++++++-------------
 .../casting/{rules => }/ArrayToStringCastRule.java  | 21 +++++++--------------
 .../casting/{rules => }/BinaryToStringCastRule.java | 14 +++++---------
 .../{rules => }/BooleanToStringCastRule.java        | 14 +++++---------
 .../planner/functions/casting/CastRuleProvider.java | 17 -----------------
 .../casting/{rules => }/CastRuleUtils.java          |  4 +---
 .../CodeGeneratedExpressionCastExecutor.java        |  2 +-
 .../casting/{rules => }/DateToStringCastRule.java   | 12 ++++--------
 .../{rules => }/DecimalToDecimalCastRule.java       | 12 ++++--------
 .../DecimalToNumericPrimitiveCastRule.java          | 14 +++++---------
 .../casting/{rules => }/IdentityCastRule.java       | 12 +++---------
 .../{rules => }/IntervalToStringCastRule.java       | 12 ++++--------
 .../casting/{rules => }/MapToStringCastRule.java    | 20 +++++++-------------
 .../{rules => }/NumericPrimitiveCastRule.java       | 11 +++--------
 .../NumericPrimitiveToDecimalCastRule.java          | 14 +++++---------
 .../{rules => }/NumericToStringCastRule.java        | 14 +++++---------
 .../casting/{rules => }/RawToStringCastRule.java    | 14 +++++---------
 .../casting/{rules => }/RowToStringCastRule.java    | 20 +++++++-------------
 .../casting/{rules => }/TimeToStringCastRule.java   | 10 +++-------
 .../{rules => }/TimestampToStringCastRule.java      | 14 +++++---------
 .../planner/codegen/calls/ScalarOperatorGens.scala  | 15 ++++-----------
 26 files changed, 101 insertions(+), 234 deletions(-)

diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCastRule.java
similarity index 76%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCastRule.java
index b4eeffc..c193139 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCastRule.java
@@ -16,15 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
-
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRule;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
+package org.apache.flink.table.planner.functions.casting;
 
 /** Base class for all cast rules. */
-@Internal
-public abstract class AbstractCastRule<IN, OUT> implements CastRule<IN, OUT> {
+abstract class AbstractCastRule<IN, OUT> implements CastRule<IN, OUT> {
 
     private final CastRulePredicate predicate;
 
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCharacterFamilyTargetRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCharacterFamilyTargetRule.java
similarity index 86%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCharacterFamilyTargetRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCharacterFamilyTargetRule.java
index 0309566..8c6ac85 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCharacterFamilyTargetRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCharacterFamilyTargetRule.java
@@ -16,12 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.StringData;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 
@@ -31,8 +28,7 @@ import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.BINARY
  * Base class for cast rules converting to {@link LogicalTypeFamily#CHARACTER_STRING} with code
  * generation.
  */
-@Internal
-public abstract class AbstractCharacterFamilyTargetRule<IN>
+abstract class AbstractCharacterFamilyTargetRule<IN>
         extends AbstractExpressionCodeGeneratorCastRule<IN, StringData> {
 
     protected AbstractCharacterFamilyTargetRule(CastRulePredicate predicate) {
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCodeGeneratorCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCodeGeneratorCastRule.java
similarity index 94%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCodeGeneratorCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCodeGeneratorCastRule.java
index eb7dd9d..f9d300d 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractCodeGeneratorCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractCodeGeneratorCastRule.java
@@ -16,17 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.api.common.typeutils.TypeSerializer;
 import org.apache.flink.table.api.TableException;
 import org.apache.flink.table.data.utils.CastExecutor;
 import org.apache.flink.table.planner.codegen.CodeGenUtils;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRule;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.runtime.generated.CompileUtils;
 import org.apache.flink.table.runtime.typeutils.InternalSerializers;
 import org.apache.flink.table.types.logical.LogicalType;
@@ -51,8 +46,7 @@ import static org.apache.flink.table.planner.codegen.CodeGenUtils.className;
  * AbstractNullAwareCodeGeneratorCastRule}, which provides nullability checks, or from {@link
  * AbstractExpressionCodeGeneratorCastRule} to generate simple expression casts.
  */
-@Internal
-public abstract class AbstractCodeGeneratorCastRule<IN, OUT> extends AbstractCastRule<IN, OUT>
+abstract class AbstractCodeGeneratorCastRule<IN, OUT> extends AbstractCastRule<IN, OUT>
         implements CodeGeneratorCastRule<IN, OUT> {
 
     protected AbstractCodeGeneratorCastRule(CastRulePredicate predicate) {
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractExpressionCodeGeneratorCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractExpressionCodeGeneratorCastRule.java
similarity index 88%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractExpressionCodeGeneratorCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractExpressionCodeGeneratorCastRule.java
index eaf5fc4..0b14ddc 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractExpressionCodeGeneratorCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractExpressionCodeGeneratorCastRule.java
@@ -16,22 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.utils.CastExecutor;
-import org.apache.flink.table.planner.functions.casting.CastRule;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
-import org.apache.flink.table.planner.functions.casting.ExpressionCodeGeneratorCastRule;
 import org.apache.flink.table.runtime.generated.CompileUtils;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.utils.LogicalTypeUtils;
 
 import java.util.Collections;
 
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.box;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.unbox;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.box;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.unbox;
 
 /**
  * Base class for cast rules that supports code generation, requiring only an expression to perform
@@ -40,8 +35,7 @@ import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUti
  *
  * <p>NOTE: the {@code inputTerm} is always either a primitive or a non-null object.
  */
-@Internal
-public abstract class AbstractExpressionCodeGeneratorCastRule<IN, OUT>
+abstract class AbstractExpressionCodeGeneratorCastRule<IN, OUT>
         extends AbstractNullAwareCodeGeneratorCastRule<IN, OUT>
         implements ExpressionCodeGeneratorCastRule<IN, OUT> {
 
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractNullAwareCodeGeneratorCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractNullAwareCodeGeneratorCastRule.java
similarity index 90%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractNullAwareCodeGeneratorCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractNullAwareCodeGeneratorCastRule.java
index 9826286..1d3c36e 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/AbstractNullAwareCodeGeneratorCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/AbstractNullAwareCodeGeneratorCastRule.java
@@ -16,12 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.isPrimitiveNullable;
@@ -32,8 +28,7 @@ import static org.apache.flink.table.planner.codegen.CodeGenUtils.primitiveTypeT
  * Base class for cast rules supporting code generation. This class inherits from {@link
  * AbstractCodeGeneratorCastRule} and takes care of nullability checks.
  */
-@Internal
-public abstract class AbstractNullAwareCodeGeneratorCastRule<IN, OUT>
+abstract class AbstractNullAwareCodeGeneratorCastRule<IN, OUT>
         extends AbstractCodeGeneratorCastRule<IN, OUT> {
 
     protected AbstractNullAwareCodeGeneratorCastRule(CastRulePredicate predicate) {
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToArrayCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java
similarity index 86%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToArrayCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java
index 66c14a6..1a9bf7e 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToArrayCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java
@@ -16,15 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.ArrayData;
 import org.apache.flink.table.data.GenericArrayData;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CastRuleProvider;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.ArrayType;
 import org.apache.flink.table.types.logical.DistinctType;
 import org.apache.flink.table.types.logical.LogicalType;
@@ -32,16 +27,14 @@ import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.newName;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.rowFieldReadAccess;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.constructorCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.methodCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.newArray;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.newArray;
 
 /** {@link LogicalTypeRoot#ARRAY} to {@link LogicalTypeRoot#ARRAY} cast rule. */
-@Internal
-public class ArrayToArrayCastRule
-        extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, ArrayData> {
+class ArrayToArrayCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, ArrayData> {
 
-    public static final ArrayToArrayCastRule INSTANCE = new ArrayToArrayCastRule();
+    static final ArrayToArrayCastRule INSTANCE = new ArrayToArrayCastRule();
 
     private ArrayToArrayCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java
similarity index 89%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java
index d655e92..e470739 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/ArrayToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java
@@ -16,14 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.ArrayData;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CastRuleProvider;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.ArrayType;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
@@ -33,17 +28,15 @@ import static org.apache.flink.table.planner.codegen.CodeGenUtils.className;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.newName;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.rowFieldReadAccess;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.BINARY_STRING_DATA_FROM_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.NULL_STR_LITERAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.constructorCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.methodCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.strLiteral;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.NULL_STR_LITERAL;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.strLiteral;
 
 /** {@link LogicalTypeRoot#ARRAY} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class ArrayToStringCastRule
-        extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
+class ArrayToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
 
-    public static final ArrayToStringCastRule INSTANCE = new ArrayToStringCastRule();
+    static final ArrayToStringCastRule INSTANCE = new ArrayToStringCastRule();
 
     private ArrayToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BinaryToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BinaryToStringCastRule.java
similarity index 72%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BinaryToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BinaryToStringCastRule.java
index 4ed913c..fd95948 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BinaryToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BinaryToStringCastRule.java
@@ -16,26 +16,22 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 
 import java.nio.charset.StandardCharsets;
 
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.accessStaticField;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.constructorCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.accessStaticField;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall;
 
 /**
  * {@link LogicalTypeFamily#BINARY_STRING} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule.
  */
-@Internal
-public class BinaryToStringCastRule extends AbstractCharacterFamilyTargetRule<byte[]> {
+class BinaryToStringCastRule extends AbstractCharacterFamilyTargetRule<byte[]> {
 
-    public static final BinaryToStringCastRule INSTANCE = new BinaryToStringCastRule();
+    static final BinaryToStringCastRule INSTANCE = new BinaryToStringCastRule();
 
     private BinaryToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BooleanToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BooleanToStringCastRule.java
similarity index 71%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BooleanToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BooleanToStringCastRule.java
index 30deb1a..ae95571 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/BooleanToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/BooleanToStringCastRule.java
@@ -16,23 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.EMPTY_STR_LITERAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.stringConcat;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.EMPTY_STR_LITERAL;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.stringConcat;
 
 /** {@link LogicalTypeRoot#BOOLEAN} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class BooleanToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
+class BooleanToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
 
-    public static final BooleanToStringCastRule INSTANCE = new BooleanToStringCastRule();
+    static final BooleanToStringCastRule INSTANCE = new BooleanToStringCastRule();
 
     private BooleanToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleProvider.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleProvider.java
index a926630..aae34c2 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleProvider.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleProvider.java
@@ -20,23 +20,6 @@ package org.apache.flink.table.planner.functions.casting;
 
 import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.utils.CastExecutor;
-import org.apache.flink.table.planner.functions.casting.rules.ArrayToArrayCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.ArrayToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.BinaryToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.BooleanToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.DateToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.DecimalToDecimalCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.DecimalToNumericPrimitiveCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.IdentityCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.IntervalToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.MapToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.NumericPrimitiveCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.NumericPrimitiveToDecimalCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.NumericToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.RawToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.RowToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.TimeToStringCastRule;
-import org.apache.flink.table.planner.functions.casting.rules.TimestampToStringCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CastRuleUtils.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
similarity index 97%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CastRuleUtils.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
index 437884f..5daa3d9 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CastRuleUtils.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CastRuleUtils.java
@@ -16,11 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
 import org.apache.flink.table.planner.codegen.CodeGenUtils;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRule;
 import org.apache.flink.table.types.logical.DistinctType;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.utils.EncodingUtils;
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CodeGeneratedExpressionCastExecutor.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CodeGeneratedExpressionCastExecutor.java
similarity index 96%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CodeGeneratedExpressionCastExecutor.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CodeGeneratedExpressionCastExecutor.java
index ad394e0..c94db8d 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/CodeGeneratedExpressionCastExecutor.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CodeGeneratedExpressionCastExecutor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
 import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.api.TableException;
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DateToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DateToStringCastRule.java
similarity index 76%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DateToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DateToStringCastRule.java
index 31c07c5..d4ab3b8 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DateToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DateToStringCastRule.java
@@ -16,23 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.UNIX_DATE_TO_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /** {@link LogicalTypeRoot#DATE} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class DateToStringCastRule extends AbstractCharacterFamilyTargetRule<Long> {
+class DateToStringCastRule extends AbstractCharacterFamilyTargetRule<Long> {
 
-    public static final DateToStringCastRule INSTANCE = new DateToStringCastRule();
+    static final DateToStringCastRule INSTANCE = new DateToStringCastRule();
 
     private DateToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToDecimalCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToDecimalCastRule.java
similarity index 80%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToDecimalCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToDecimalCastRule.java
index 11700fd..23c4c42 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToDecimalCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToDecimalCastRule.java
@@ -16,25 +16,21 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.DecimalData;
 import org.apache.flink.table.planner.codegen.calls.BuiltInMethods;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.DecimalType;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /** {@link LogicalTypeRoot#DECIMAL} to {@link LogicalTypeRoot#DECIMAL} cast rule. */
-@Internal
-public class DecimalToDecimalCastRule
+class DecimalToDecimalCastRule
         extends AbstractExpressionCodeGeneratorCastRule<DecimalData, DecimalData> {
 
-    public static final DecimalToDecimalCastRule INSTANCE = new DecimalToDecimalCastRule();
+    static final DecimalToDecimalCastRule INSTANCE = new DecimalToDecimalCastRule();
 
     private DecimalToDecimalCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToNumericPrimitiveCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToNumericPrimitiveCastRule.java
similarity index 80%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToNumericPrimitiveCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToNumericPrimitiveCastRule.java
index c9f4927..e1d1344 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/DecimalToNumericPrimitiveCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/DecimalToNumericPrimitiveCastRule.java
@@ -16,12 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.DecimalData;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -30,18 +27,17 @@ import java.lang.reflect.Method;
 
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.DECIMAL_TO_DOUBLE;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.DECIMAL_TO_INTEGRAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.castToPrimitive;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.castToPrimitive;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /**
  * {@link LogicalTypeRoot#DECIMAL} to {@link LogicalTypeFamily#INTEGER_NUMERIC} and {@link
  * LogicalTypeFamily#APPROXIMATE_NUMERIC} cast rule.
  */
-@Internal
-public class DecimalToNumericPrimitiveCastRule
+class DecimalToNumericPrimitiveCastRule
         extends AbstractExpressionCodeGeneratorCastRule<DecimalData, Number> {
 
-    public static final DecimalToNumericPrimitiveCastRule INSTANCE =
+    static final DecimalToNumericPrimitiveCastRule INSTANCE =
             new DecimalToNumericPrimitiveCastRule();
 
     private DecimalToNumericPrimitiveCastRule() {
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IdentityCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IdentityCastRule.java
similarity index 84%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IdentityCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IdentityCastRule.java
index f769a71..f2eb001 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IdentityCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IdentityCastRule.java
@@ -16,13 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
-import org.apache.flink.table.planner.functions.casting.ExpressionCodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -32,11 +27,10 @@ import org.apache.flink.table.types.logical.utils.LogicalTypeCasts;
  * Identity cast rule. For more details on when the rule is applied, check {@link
  * #isIdentityCast(LogicalType, LogicalType)}
  */
-@Internal
-public class IdentityCastRule extends AbstractCodeGeneratorCastRule<Object, Object>
+class IdentityCastRule extends AbstractCodeGeneratorCastRule<Object, Object>
         implements ExpressionCodeGeneratorCastRule<Object, Object> {
 
-    public static final IdentityCastRule INSTANCE = new IdentityCastRule();
+    static final IdentityCastRule INSTANCE = new IdentityCastRule();
 
     private IdentityCastRule() {
         super(CastRulePredicate.builder().predicate(IdentityCastRule::isIdentityCast).build());
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IntervalToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IntervalToStringCastRule.java
similarity index 79%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IntervalToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IntervalToStringCastRule.java
index 6e20732..8773a93 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/IntervalToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/IntervalToStringCastRule.java
@@ -16,11 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -29,13 +26,12 @@ import java.lang.reflect.Method;
 
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.INTERVAL_DAY_TIME_TO_STRING;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.INTERVAL_YEAR_MONTH_TO_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /** {@link LogicalTypeFamily#INTERVAL} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class IntervalToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
+class IntervalToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
 
-    public static final IntervalToStringCastRule INSTANCE = new IntervalToStringCastRule();
+    static final IntervalToStringCastRule INSTANCE = new IntervalToStringCastRule();
 
     private IntervalToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/MapToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToStringCastRule.java
similarity index 92%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/MapToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToStringCastRule.java
index 7578a40..90925dc 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/MapToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToStringCastRule.java
@@ -16,14 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.ArrayData;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CastRuleProvider;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -33,16 +28,15 @@ import static org.apache.flink.table.planner.codegen.CodeGenUtils.className;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.newName;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.rowFieldReadAccess;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.BINARY_STRING_DATA_FROM_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.NULL_STR_LITERAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.constructorCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.methodCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.strLiteral;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.NULL_STR_LITERAL;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.strLiteral;
 
 /** {@link LogicalTypeRoot#MAP} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class MapToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
+class MapToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
 
-    public static final MapToStringCastRule INSTANCE = new MapToStringCastRule();
+    static final MapToStringCastRule INSTANCE = new MapToStringCastRule();
 
     private MapToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveCastRule.java
similarity index 86%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveCastRule.java
index 6e20861..ed3fb34 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveCastRule.java
@@ -16,11 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 
@@ -35,11 +32,9 @@ import static org.apache.flink.table.types.logical.LogicalTypeRoot.INTERVAL_YEAR
  * Cast rule for {@link LogicalTypeFamily#INTEGER_NUMERIC} and {@link
  * LogicalTypeFamily#APPROXIMATE_NUMERIC} and {@link LogicalTypeFamily#INTERVAL} conversions.
  */
-@Internal
-public class NumericPrimitiveCastRule
-        extends AbstractExpressionCodeGeneratorCastRule<Number, Number> {
+class NumericPrimitiveCastRule extends AbstractExpressionCodeGeneratorCastRule<Number, Number> {
 
-    public static final NumericPrimitiveCastRule INSTANCE = new NumericPrimitiveCastRule();
+    static final NumericPrimitiveCastRule INSTANCE = new NumericPrimitiveCastRule();
 
     private NumericPrimitiveCastRule() {
         super(CastRulePredicate.builder().predicate(NumericPrimitiveCastRule::matches).build());
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveToDecimalCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveToDecimalCastRule.java
similarity index 82%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveToDecimalCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveToDecimalCastRule.java
index df62905..17ff3ee 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericPrimitiveToDecimalCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericPrimitiveToDecimalCastRule.java
@@ -16,12 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.DecimalData;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.DecimalType;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
@@ -29,18 +26,17 @@ import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.DOUBLE_TO_DECIMAL;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.INTEGRAL_TO_DECIMAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.cast;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.cast;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /**
  * {@link LogicalTypeFamily#INTEGER_NUMERIC} and {@link LogicalTypeFamily#APPROXIMATE_NUMERIC} to
  * {@link LogicalTypeRoot#DECIMAL} cast rule.
  */
-@Internal
-public class NumericPrimitiveToDecimalCastRule
+class NumericPrimitiveToDecimalCastRule
         extends AbstractExpressionCodeGeneratorCastRule<Number, DecimalData> {
 
-    public static final NumericPrimitiveToDecimalCastRule INSTANCE =
+    static final NumericPrimitiveToDecimalCastRule INSTANCE =
             new NumericPrimitiveToDecimalCastRule();
 
     private NumericPrimitiveToDecimalCastRule() {
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericToStringCastRule.java
similarity index 70%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericToStringCastRule.java
index 3220e0c..d83741e 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/NumericToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/NumericToStringCastRule.java
@@ -16,22 +16,18 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.EMPTY_STR_LITERAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.stringConcat;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.EMPTY_STR_LITERAL;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.stringConcat;
 
 /** {@link LogicalTypeFamily#NUMERIC} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class NumericToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
+class NumericToStringCastRule extends AbstractCharacterFamilyTargetRule<Object> {
 
-    public static final NumericToStringCastRule INSTANCE = new NumericToStringCastRule();
+    static final NumericToStringCastRule INSTANCE = new NumericToStringCastRule();
 
     private NumericToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RawToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java
similarity index 82%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RawToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java
index 51fdde3..3301f5f 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RawToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java
@@ -16,26 +16,22 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
 import static org.apache.flink.table.codesplit.CodeSplitUtil.newName;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.BINARY_STRING_DATA_FROM_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.methodCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall;
 
 /** {@link LogicalTypeRoot#RAW} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class RawToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<Object, String> {
+class RawToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<Object, String> {
 
-    public static final RawToStringCastRule INSTANCE = new RawToStringCastRule();
+    static final RawToStringCastRule INSTANCE = new RawToStringCastRule();
 
-    protected RawToStringCastRule() {
+    private RawToStringCastRule() {
         super(
                 CastRulePredicate.builder()
                         .input(LogicalTypeRoot.RAW)
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RowToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java
similarity index 87%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RowToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java
index 9e3f5b0..1264e9d 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/RowToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java
@@ -16,14 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.ArrayData;
-import org.apache.flink.table.planner.functions.casting.CastCodeBlock;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CastRuleProvider;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -36,16 +31,15 @@ import static org.apache.flink.table.planner.codegen.CodeGenUtils.className;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.newName;
 import static org.apache.flink.table.planner.codegen.CodeGenUtils.rowFieldReadAccess;
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.BINARY_STRING_DATA_FROM_STRING;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.NULL_STR_LITERAL;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.constructorCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.methodCall;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.strLiteral;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.NULL_STR_LITERAL;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.strLiteral;
 
 /** {@link LogicalTypeRoot#ROW} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class RowToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
+class RowToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<ArrayData, String> {
 
-    public static final RowToStringCastRule INSTANCE = new RowToStringCastRule();
+    static final RowToStringCastRule INSTANCE = new RowToStringCastRule();
 
     private RowToStringCastRule() {
         super(CastRulePredicate.builder().predicate(RowToStringCastRule::matches).build());
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimeToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimeToStringCastRule.java
similarity index 81%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimeToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimeToStringCastRule.java
index 81008de..cc07a79 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimeToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimeToStringCastRule.java
@@ -16,11 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -32,10 +29,9 @@ import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.UNIX_T
  * {@link LogicalTypeRoot#TIME_WITHOUT_TIME_ZONE} to {@link LogicalTypeFamily#CHARACTER_STRING} cast
  * rule.
  */
-@Internal
-public class TimeToStringCastRule extends AbstractCharacterFamilyTargetRule<Long> {
+class TimeToStringCastRule extends AbstractCharacterFamilyTargetRule<Long> {
 
-    public static final TimeToStringCastRule INSTANCE = new TimeToStringCastRule();
+    static final TimeToStringCastRule INSTANCE = new TimeToStringCastRule();
 
     private TimeToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimestampToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimestampToStringCastRule.java
similarity index 77%
rename from flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimestampToStringCastRule.java
rename to flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimestampToStringCastRule.java
index d2aef08..965b378 100644
--- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/rules/TimestampToStringCastRule.java
+++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/TimestampToStringCastRule.java
@@ -16,12 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.flink.table.planner.functions.casting.rules;
+package org.apache.flink.table.planner.functions.casting;
 
-import org.apache.flink.annotation.Internal;
 import org.apache.flink.table.data.TimestampData;
-import org.apache.flink.table.planner.functions.casting.CastRulePredicate;
-import org.apache.flink.table.planner.functions.casting.CodeGeneratorCastRule;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
@@ -30,14 +27,13 @@ import org.apache.flink.table.types.logical.utils.LogicalTypeChecks;
 import org.apache.calcite.avatica.util.DateTimeUtils;
 
 import static org.apache.flink.table.planner.codegen.calls.BuiltInMethods.TIMESTAMP_TO_STRING_TIME_ZONE;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.accessStaticField;
-import static org.apache.flink.table.planner.functions.casting.rules.CastRuleUtils.staticCall;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.accessStaticField;
+import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall;
 
 /** {@link LogicalTypeFamily#TIMESTAMP} to {@link LogicalTypeFamily#CHARACTER_STRING} cast rule. */
-@Internal
-public class TimestampToStringCastRule extends AbstractCharacterFamilyTargetRule<TimestampData> {
+class TimestampToStringCastRule extends AbstractCharacterFamilyTargetRule<TimestampData> {
 
-    public static final TimestampToStringCastRule INSTANCE = new TimestampToStringCastRule();
+    static final TimestampToStringCastRule INSTANCE = new TimestampToStringCastRule();
 
     private TimestampToStringCastRule() {
         super(
diff --git a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/calls/ScalarOperatorGens.scala b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/calls/ScalarOperatorGens.scala
index 3021776..6a7fbb2 100644
--- a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/calls/ScalarOperatorGens.scala
+++ b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/calls/ScalarOperatorGens.scala
@@ -18,25 +18,20 @@
 
 package org.apache.flink.table.planner.codegen.calls
 
-import org.apache.flink.table.api.{DataTypes, ValidationException}
-import org.apache.flink.table.connector.sink.DynamicTableSink.DataStructureConverter
+import org.apache.flink.table.api.ValidationException
 import org.apache.flink.table.data.binary.BinaryArrayData
-import org.apache.flink.table.data.conversion.DataStructureConverters
-import org.apache.flink.table.planner.functions.casting.{CastRule, CastRuleProvider, CodeGeneratorCastRule, ExpressionCodeGeneratorCastRule}
-import org.apache.flink.table.data.util.{DataFormatConverters, MapDataUtil}
+import org.apache.flink.table.planner.functions.casting.{CastRuleProvider, CodeGeneratorCastRule, ExpressionCodeGeneratorCastRule}
+import org.apache.flink.table.data.util.MapDataUtil
 import org.apache.flink.table.data.writer.{BinaryArrayWriter, BinaryRowWriter}
 import org.apache.flink.table.planner.codegen.CodeGenUtils.{binaryRowFieldSetAccess, binaryRowSetNull, binaryWriterWriteField, binaryWriterWriteNull, _}
 import org.apache.flink.table.planner.codegen.GenerateUtils._
 import org.apache.flink.table.planner.codegen.GeneratedExpression.{ALWAYS_NULL, NEVER_NULL, NO_CODE}
-import org.apache.flink.table.planner.codegen.{CodeGenException, CodeGenUtils, CodeGeneratorContext, GenerateUtils, GeneratedExpression}
-import org.apache.flink.table.planner.functions.casting.rules.{AbstractExpressionCodeGeneratorCastRule, IdentityCastRule}
+import org.apache.flink.table.planner.codegen.{CodeGenException, CodeGenUtils, CodeGeneratorContext, GeneratedExpression}
 import org.apache.flink.table.planner.utils.JavaScalaConversionUtil.toScala
 import org.apache.flink.table.runtime.functions.SqlFunctionUtils
-import org.apache.flink.table.runtime.types.LogicalTypeDataTypeConverter.fromLogicalTypeToDataType
 import org.apache.flink.table.runtime.types.PlannerTypeUtils
 import org.apache.flink.table.runtime.types.PlannerTypeUtils.{isInteroperable, isPrimitive}
 import org.apache.flink.table.runtime.typeutils.TypeCheckUtils._
-import org.apache.flink.table.types.DataType
 import org.apache.flink.table.types.logical.LogicalTypeFamily.DATETIME
 import org.apache.flink.table.types.logical.LogicalTypeRoot._
 import org.apache.flink.table.types.logical._
@@ -47,8 +42,6 @@ import org.apache.flink.table.utils.DateTimeUtils
 import org.apache.flink.util.Preconditions.checkArgument
 import org.apache.flink.table.utils.DateTimeUtils.MILLIS_PER_DAY
 
-import java.lang.{StringBuilder => JStringBuilder}
-import java.nio.charset.StandardCharsets
 import java.util.Arrays.asList
 import scala.collection.JavaConversions._