[Tarantool-patches] [PATCH v4 2/3] sql: fix implicit cast from STRING to INTEGER

Nikita Pettik korablev at tarantool.org
Fri Mar 27 19:54:17 MSK 2020


On 27 Mar 14:33, imeevma at tarantool.org wrote:
> Prior to this patch, STRING, which contains the DOUBLE value,
> could be implicitly cast to INTEGER. This was done by converting
> STRING to DOUBLE and then converting this DOUBLE value to INTEGER.
> This may affect the accuracy of CAST(), so it was forbidden.
> 
> Example:
> box.execute("CREATE TABLE t(i INT PRIMARY KEY);")
> 
> Before patch:
> box.execute("INSERT INTO t VALUES ('111.1');")
> box.execute("SELECT * FROM t;")
> Result: 111
> 
> After patch:
> box.execute("INSERT INTO t VALUES ('1.1');")
> Result: 'Type mismatch: can not convert 1.1 to integer'
> 
> box.execute("INSERT INTO t VALUES ('1.0');")
> Result: 'Type mismatch: can not convert 1.0 to integer'
> 
> box.execute("INSERT INTO t VALUES ('1.');")
> Result: 'Type mismatch: can not convert 1. to integer'

Is comparison predicat affected?

> Part of #4766
> 
> @TarantoolBot document
> Title: disallow cast from STRING contais DOUBLE to INTEGER

-> contains
 
> diff --git a/test/sql-tap/gh-4766-wrong-cast-from-blob-to-int.test.lua b/test/sql-tap/gh-4766-wrong-cast-from-blob-to-int.test.lua
> index 0865c4e..559e33d 100755
> --- a/test/sql-tap/gh-4766-wrong-cast-from-blob-to-int.test.lua
> +++ b/test/sql-tap/gh-4766-wrong-cast-from-blob-to-int.test.lua

Same nit concerning test file as in previous patch: personally I'd
not introduce it.



More information about the Tarantool-patches mailing list