[Tarantool-discussions] Implicit cast for ASSIGNMENT

Peter Gulutzan pgulutzan at ocelot.ca
Thu Apr 30 17:15:52 MSK 2020


Hi,

On 2020-04-30 8:04 a.m., Konstantin Osipov wrote:
 > * Imeev Mergen <imeevma at tarantool.org> [20/04/30 16:14]:
 >>
 >> On 4/30/20 4:09 PM, Konstantin Osipov wrote:
 >>> * Imeev Mergen <imeevma at tarantool.org> [20/04/30 15:59]:
 >>>>> The only possible exception is conversion of a lossless conversion
 >>>>> of a numeric literal, e.g.:
 >>>>>
 >>>>> float_val = 1.1 -- implicitly convert decimal constant 1.1 to float
 >>>> So, is it fine to implicitly cast 1.0(DOUBLE) to 1(INTEGER)?
 >>> 1.0 is not double, it's DECIMAL.
 >> Ok, then, let's say we executed something like this:
 >>
 >> box.execute('CREATE TABLE t (i INT PRIMARY KEY);')
 >> box.execute('INSERT INTO t VALUES(CAST(1 AS DOUBLE));')
 >>
 >> Should this work of we should receive an error?
 >
 > I think it shouldn't because CAST(1 AS DOUBLE) is an expression,
 > not a constant literal.
 >

I of course think that it should work,
but K. Yukhin decided it should not work.

With regard to the earlier questions

Unfortunately assigning 1.1 to an INTEGER fails.
"Implicit casting among the numeric data types"
is a mandatory feature of standard SQL,
My opinion was that implicit cast should be legal
https://github.com/tarantool/tarantool/issues/4216
However, K. Yukhin closed that issue.

I also believed that typeof(1.0) should be DECIMAL.
https://github.com/tarantool/tarantool/issues/4415
But currently typeof(1.0) is DOUBLE.

Peter Gulutzan



More information about the Tarantool-discussions mailing list