[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