Thanks Danny for your update, the FLIP page looks very good now.

Flink already has some implicit casting rules in LogicalTypeCasts[1]. The
biggest difference is that the previous implicit casting is strictly
limited to the safety, "Implicit casts are used for safe type widening and
type generalization (finding a common supertype for a set of types) without
loss of information".

Now in this FLIP, we will bring various castings of char/varchar, which
means that the casting may fail, like '9xsa' / 2 (INT), maybe output a
NULL. Considering that it has been well supported by other popular
databases. I think it is OK.

What do you think? @Timo Walther <twal...@apache.org>

[1]
https://github.com/apache/flink/blob/97bfd049951f8d52a2e0aed14265074c4255ead0/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeCasts.java

Best,
Jingsong

On Thu, Mar 11, 2021 at 3:41 PM Danny Chan <danny0...@apache.org> wrote:

> Thanks for the feedback, Jingsong ~
>
> This design mainly follows the behaviors of PostgreSQL and SQL-SERVER,
> because their rules are more in line with the SQL standard.
>
> I have fixed the WIKI and add more details about the diff in it.
>
> Best,
> Danny Chan
>
> Jingsong Li <jingsongl...@gmail.com> 于2021年3月11日周四 下午1:34写道:
>
> > Thanks Danny for starting this discussion.
> >
> > Big +1 for Implicit Type Coercion, in my opinion, it is very useful for
> > writing SQL conveniently.
> >
> > I think there are two orthogonal things to discuss here:
> > 1.[Matrix] Which types and which types can be implicitly converted.
> > 2.[Strategies] In different cases, the implicit conversion is which type
> > converts to which type.
> >
> > For #1, We may be able to choose a matrix table that allows more
> > conversions.
> >
> > For #2, We need to be careful, we should be closer to standard SQL, which
> > means we should probably be closer to postgreSQL and MS-SQL.
> > About Strategies, what do you think of calcite's behavior now? Similar to
> > MS-SQL?
> > For example, there seems to be 2 style type coercions for binary
> arithmetic
> > with strings:
> > - For MySQL and Oracle style: coerce all the STRING operand to DOUBLE
> type
> > - PostgreSQL and SQL-SERVER style: coerce the STRING operand to the type
> of
> > the other operand(if it is a NUMERIC)
> >
> > I think you can list the core differences between calcite and other
> > databases in terms of the above two aspects, which is not only conducive
> to
> > our discussion, but also conducive to the perception of users in the
> > future.
> >
> > BTW, it seems that the Type Conversion Matrix chapter in the FLIP does
> not
> > list the behavior of calcite, can you finish that?
> >
> > Best,
> > Jingsong
> >
> > On Tue, Mar 9, 2021 at 6:26 PM Danny Chan <danny0...@apache.org> wrote:
> >
> > > Hello, fellows, long time no see ~
> > >
> > > Here i want to fire a discussion about the SQL implicit type coercion,
> a
> > > required feature for SQL production but missed for Flink SQL for a long
> > > time ~
> > >
> > > SQL implicit type coercion is very useful for these cases:
> > >
> > > - the inter-operation within builtin SQL operators, like binary
> > arithmetic
> > > operations (PLUS, MINOUS and so on), binary comparison, IN, CASE WHEN,
> > SET
> > > operator (UNION, INTERSECT ..)
> > > - the built in functions type coercion for input parameters
> > > - the SQL INSERT source that target connector row type when are are row
> > > elements type mismatch
> > > - the compatibility with other popular DB engines, like
> > > MySQL/Hive/PostgreSQL and so on
> > >
> > > And so much voices for a long time from the user mailing list.
> > >
> > > I have created a FLIP WIKI here [1] and wait for your
> > > appreciate suggestions ~
> > >
> > > Thanks again for all you awesome guys and hope that we can have a
> > > conclusion for the type coercion rules (the matrix) for Flink SQL soon.
> > >
> > > [1]
> > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-154%3A+SQL+Implicit+Type+Coercion
> > >
> > > Best,
> > > Danny Chan
> > >
> >
> >
> > --
> > Best, Jingsong Lee
> >
>


-- 
Best, Jingsong Lee

Reply via email to