[ 
https://issues.apache.org/jira/browse/FLINK-33171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17772909#comment-17772909
 ] 

Benchao Li commented on FLINK-33171:
------------------------------------

[~qingyue] Yes, CALCITE-5907 is not going to fix this, but will forbid this 
usage, that says, the validator should not allow implicit type coercion unless 
we enable it explicitly after FLIP-154. 

I'm not strongly against fixing it temporarily in Flink, but we'd better not 
guarantee the implicit type coercion for comparisons for users for now. Since 
there will be more corner cases, such as the one mentioned in FLINK-27402.

> Table SQL support Not Equal for TimePoint type and TimeString
> -------------------------------------------------------------
>
>                 Key: FLINK-33171
>                 URL: https://issues.apache.org/jira/browse/FLINK-33171
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>    Affects Versions: 1.18.0, 1.17.1
>            Reporter: Feng Jiajie
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.17.2, 1.18.1
>
>
> When executing the following SQL:
> {code:sql}
> SELECT
>     time1,
>     time1 = '2023-09-30 18:22:42.123' AS eq1,
>     NOT (time1 = '2023-09-30 18:22:42.123') AS notEq1
> FROM table1;
> {code}
> the result is as follows:
> {code:java}
> +----+-------------------------+--------+--------+
> | op |                   time1 |    eq1 | notEq1 |
> +----+-------------------------+--------+--------+
> | +I | 2023-09-30 18:22:42.123 |   TRUE |   TRUE |
> | +I | 2023-09-30 18:22:42.124 |  FALSE |   TRUE |
> +----+-------------------------+--------+--------+
> 2 rows in set
> {code}
> The "notEq1" in the first row should be FALSE.
> Here is the reproducing code:
> {code:java}
> import org.apache.flink.api.common.functions.RichMapFunction;
> import org.apache.flink.api.common.typeinfo.TypeInformation;
> import org.apache.flink.api.common.typeinfo.Types;
> import org.apache.flink.api.java.typeutils.RowTypeInfo;
> import org.apache.flink.configuration.Configuration;
> import org.apache.flink.streaming.api.datastream.DataStreamSource;
> import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
> import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
> import org.apache.flink.table.api.DataTypes;
> import org.apache.flink.table.api.Schema;
> import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
> import org.apache.flink.types.Row;
> public class TimePointNotEqualTest {
>     public static void main(String[] args) throws Exception {
>         StreamExecutionEnvironment env =
>                 StreamExecutionEnvironment.getExecutionEnvironment(new 
> Configuration());
>         env.setParallelism(1);
>         DataStreamSource<Long> longDataStreamSource = env.fromSequence(0, 1);
>         RowTypeInfo rowTypeInfo =
>                 new RowTypeInfo(new TypeInformation[] {Types.LONG}, new 
> String[] {"time1"});
>         SingleOutputStreamOperator<Row> map =
>                 longDataStreamSource.map(new RichMapFunction<Long, Row>() {
>                     @Override
>                     public Row map(Long value) {
>                         Row row = new Row(1);
>                         row.setField(0, 1696069362123L + value);
>                         return row;
>                     }
>                 }, rowTypeInfo);
>         StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
>         Schema schema = Schema.newBuilder()
>                 .column("time1", 
> DataTypes.TIMESTAMP_LTZ(3).bridgedTo(Long.class))
>                 .build();
>         tableEnv.createTemporaryView("table1", map, schema);
>         tableEnv.sqlQuery("SELECT "
>                 + "time1," // 2023-09-30 18:22:42.123
>                 + "time1 = '2023-09-30 18:22:42.123' AS eq1," // expect TRUE
>                 + "NOT (time1 = '2023-09-30 18:22:42.123') AS notEq1 " // 
> expect FALSE but TRUE
>                 + "FROM table1").execute().print();
>     }
> }
> {code}
> I would like to attempt to fix this issue. If possible, please assign the 
> issue to me. Thank you.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to