[
https://issues.apache.org/jira/browse/IGNITE-22472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov updated IGNITE-22472:
--------------------------------------
Description:
Consider the following example (all test cases pass):
{noformat}
query T
SELECT 'a'::char(1) < 'a'::char(2)
----
true
query T
SELECT 'a'::char(1) > 'a'::char(2)
----
false
query T
SELECT 'a'::char(1) = 'a'::char(2)
----
true
{noformat}
A closer look:
{noformat}
query TT
SELECT 'a'::char(1) < 'a'::char(2), 'a'::char(2) > 'a'::char(1)
----
true true
Plan:
Project(EXPR$0=[<(_UTF-8'a', _UTF-8'a ')], EXPR$1=[>(_UTF-8'a ', _UTF-8'a')])
Values(tuples=[[{ 0 }]])
query TT
SELECT 'a'::char(1) = 'a'::char(2), 'a'::char(1) != 'a'::char(2)
----
true false
Plan:
Values(tuples=[[{ true, false }]])
{noformat}
If we consider CHAR (n) to be an alias for VARCHAR (n) then the behaviour
should be the same as
{noformat}
query T
SELECT 'a':: varchar(1) < 'a':: varchar(2)
----
false
query T
SELECT 'a':: varchar(1) > 'a':: varchar(2)
----
false
query T
SELECT 'a'::varchar(1) = 'a':: varchar(2)
----
true
{noformat}
{noformat}
query TT
SELECT 'a'::varchar(1) < 'a'::varchar(2), 'a'::varchar(2) > 'a'::varchar(1)
----
false false
query TT
SELECT 'a'::varchar(1) <= 'a'::varchar(2), 'a'::varchar(2) >= 'a'::varchar(1)
----
true true
{noformat}
was:
Consider the following example (all test cases pass):
{noformat}
query T
SELECT 'a'::char(1) < 'a'::char(2)
----
true
query T
SELECT 'a'::char(1) > 'a'::char(2)
----
false
query T
SELECT 'a'::char(1) = 'a'::char(2)
----
true
{noformat}
A closer look:
{noformat}
query TT
SELECT 'a'::char(1) < 'a'::char(2), 'a'::char(2) > 'a'::char(1)
----
true true
Plan:
Project(EXPR$0=[<(_UTF-8'a', _UTF-8'a ')], EXPR$1=[>(_UTF-8'a ', _UTF-8'a')])
Values(tuples=[[{ 0 }]])
query TT
SELECT 'a'::char(1) = 'a'::char(2), 'a'::char(1) != 'a'::char(2)
----
true false
Plan:
Values(tuples=[[{ true, false }]])
{noformat}
If we consider CHAR(n) to be an alias for VARCHAR(n) then the behaviour should
be the same as
{noformat}
query T
SELECT 'a':: varchar(1) < 'a':: varchar(2)
----
false
query T
SELECT 'a':: varchar(1) > 'a':: varchar(2)
----
false
query T
SELECT 'a'::varchar(1) = 'a':: varchar(2)
----
true
{noformat}
{noformat}
query TT
SELECT 'a'::varchar(1) < 'a'::varchar(2), 'a'::varchar(2) > 'a'::varchar(1)
----
false false
query TT
SELECT 'a'::varchar(1) <= 'a'::varchar(2), 'a'::varchar(2) >= 'a'::varchar(1)
----
true true
{noformat}
> Sql. Char. Inconsistent handling of comparison operation.
> ---------------------------------------------------------
>
> Key: IGNITE-22472
> URL: https://issues.apache.org/jira/browse/IGNITE-22472
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Maksim Zhuravkov
> Priority: Major
> Labels: ignite-3
>
> Consider the following example (all test cases pass):
> {noformat}
> query T
> SELECT 'a'::char(1) < 'a'::char(2)
> ----
> true
> query T
> SELECT 'a'::char(1) > 'a'::char(2)
> ----
> false
> query T
> SELECT 'a'::char(1) = 'a'::char(2)
> ----
> true
> {noformat}
> A closer look:
> {noformat}
> query TT
> SELECT 'a'::char(1) < 'a'::char(2), 'a'::char(2) > 'a'::char(1)
> ----
> true true
> Plan:
> Project(EXPR$0=[<(_UTF-8'a', _UTF-8'a ')], EXPR$1=[>(_UTF-8'a ', _UTF-8'a')])
> Values(tuples=[[{ 0 }]])
> query TT
> SELECT 'a'::char(1) = 'a'::char(2), 'a'::char(1) != 'a'::char(2)
> ----
> true false
> Plan:
> Values(tuples=[[{ true, false }]])
> {noformat}
> If we consider CHAR (n) to be an alias for VARCHAR (n) then the behaviour
> should be the same as
> {noformat}
> query T
> SELECT 'a':: varchar(1) < 'a':: varchar(2)
> ----
> false
> query T
> SELECT 'a':: varchar(1) > 'a':: varchar(2)
> ----
> false
> query T
> SELECT 'a'::varchar(1) = 'a':: varchar(2)
> ----
> true
> {noformat}
> {noformat}
> query TT
> SELECT 'a'::varchar(1) < 'a'::varchar(2), 'a'::varchar(2) > 'a'::varchar(1)
> ----
> false false
> query TT
> SELECT 'a'::varchar(1) <= 'a'::varchar(2), 'a'::varchar(2) >= 'a'::varchar(1)
> ----
> true true
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)