Maksim Zhuravkov created IGNITE-18677:
-----------------------------------------

             Summary: Sql. Arithmetic operation between numeric type and 
varchar columns and literals
                 Key: IGNITE-18677
                 URL: https://issues.apache.org/jira/browse/IGNITE-18677
             Project: Ignite
          Issue Type: Improvement
          Components: sql
            Reporter: Maksim Zhuravkov
             Fix For: 3.0.0-beta2


Current implementation allows the following queries (1,2,3,4 and 5 fails at 
runtime):
{code:java}
# 1
SELECT 1::TINYINT + 1::VARCHAR
{code}
{code:java}
# 2 
SELECT 1::TINYINT + '1'
{code}
{code:java}
# 3
SELECT c + '1' FROM (VALUES(1, '1')) t(c, d);
{code}
{code:java}
# 4
SELECT c + d FROM (VALUES(1, '1')) t(c, d);
{code}
{code:java}
# 5 - fails at runtime
SELECT 1::TINYINT + 'b'
{code}

{code:java}
Caused by: java.lang.NumberFormatException: For input string: "b"
        at 
java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.base/java.lang.Integer.parseInt(Integer.java:652)
        at java.base/java.lang.Byte.parseByte(Byte.java:152)
        at java.base/java.lang.Byte.parseByte(Byte.java:178)
        at SC.execute(Unknown Source)
        at 
org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl$ProjectImpl.apply(ExpressionFactoryImpl.java:652)
        at 
org.apache.ignite.internal.sql.engine.exec.rel.ProjectNode.push(ProjectNode.java:69)
        at 
org.apache.ignite.internal.sql.engine.exec.rel.ScanNode.push(ScanNode.java:111)
        at 
org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:299)
{code}

PostgreSQL:
Query 1 is rejected because there is no addition operation between tinyint and 
varchar
Query 2 is accepted because the second operand is implicitly converted to 
number since the literal looks like a number
Query 3 is also accepted see (2)
Query 4 is rejected because is no addition operation between tinyint and 
varchar because no implicit casts are added to columns (they have known type)

We should consider whether we would like the same behaviour as PostgreSQL since 
it looks more consistent.





--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to