[Tarantool-patches] [PATCH v1 2/2] sql: remove implicit cast in bitwise operations

Nikita Pettik korablev at tarantool.org
Fri Aug 21 12:21:30 MSK 2020


On 21 Aug 11:40, imeevma at tarantool.org wrote:
> This patch removes the implicit conversion from STRING to INTEGER from
> bitwise operations. However, DOUBLE can still be implicitly converted to
> INTEGER.

I see no test involving doubles in bitwise operations. Does it make
any sense at all?
 
> Follow-up #3809
> ---
>  src/box/sql/vdbe.c      | 59 ++++++++++++++++++++++++++++++++---------
>  test/sql/types.result   | 49 ++++++++++++++++++++++++++++++++++
>  test/sql/types.test.lua | 14 ++++++++++
>  3 files changed, 110 insertions(+), 12 deletions(-)
>  
> diff --git a/test/sql/types.result b/test/sql/types.result
> index caedbf409..601e5beca 100644
> --- a/test/sql/types.result
> +++ b/test/sql/types.result
> @@ -2846,3 +2846,52 @@ box.execute([[SELECT 1 - '2';]])
>  - null
>  - 'Type mismatch: can not convert 2 to numeric'
>  ...
> +--
> +-- Make sure there is no implicit string-to-number conversion in bitwise
> +-- operations.
> +--
> +box.execute([[SELECT '1' | 2;]])
> +---
> +- null
> +- 'Type mismatch: can not convert 1 to integer'
> +...
> +box.execute([[SELECT '1' & 2;]])
> +---
> +- null
> +- 'Type mismatch: can not convert 1 to integer'
> +...
> +box.execute([[SELECT '1' << 2;]])
> +---
> +- null
> +- 'Type mismatch: can not convert 1 to integer'
> +...
> +box.execute([[SELECT '1' >> 2;]])
> +---
> +- null
> +- 'Type mismatch: can not convert 1 to integer'
> +...
> +box.execute([[SELECT ~'1';]])
> +---
> +- null
> +- 'Type mismatch: can not convert 1 to integer'
> +...
> +box.execute([[SELECT 1 | '2';]])
> +---
> +- null
> +- 'Type mismatch: can not convert 2 to integer'
> +...
> +box.execute([[SELECT 1 & '2';]])
> +---
> +- null
> +- 'Type mismatch: can not convert 2 to integer'
> +...
> +box.execute([[SELECT 1 << '2';]])
> +---
> +- null
> +- 'Type mismatch: can not convert 2 to integer'
> +...
> +box.execute([[SELECT 1 >> '2';]])
> +---
> +- null
> +- 'Type mismatch: can not convert 2 to integer'
> +...
> diff --git a/test/sql/types.test.lua b/test/sql/types.test.lua
> index 844a6b670..2d2f41da2 100644
> --- a/test/sql/types.test.lua
> +++ b/test/sql/types.test.lua
> @@ -638,3 +638,17 @@ box.execute([[SELECT 1 % '2';]])
>  box.execute([[SELECT 1 * '2';]])
>  box.execute([[SELECT 1 / '2';]])
>  box.execute([[SELECT 1 - '2';]])
> +
> +--
> +-- Make sure there is no implicit string-to-number conversion in bitwise
> +-- operations.
> +--
> +box.execute([[SELECT '1' | 2;]])
> +box.execute([[SELECT '1' & 2;]])
> +box.execute([[SELECT '1' << 2;]])
> +box.execute([[SELECT '1' >> 2;]])
> +box.execute([[SELECT ~'1';]])
> +box.execute([[SELECT 1 | '2';]])
> +box.execute([[SELECT 1 & '2';]])
> +box.execute([[SELECT 1 << '2';]])
> +box.execute([[SELECT 1 >> '2';]])
> -- 
> 2.25.1
> 


More information about the Tarantool-patches mailing list