[ 
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(p) to be an alias for VARCHAR(p) 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(x) to be an alias for VARCHAR(x) 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(p) to be an alias for VARCHAR(p) 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)

Reply via email to