[ 
https://issues.apache.org/jira/browse/IGNITE-23676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Plekhanov updated IGNITE-23676:
---------------------------------------
    Description: 
SqlJoin AST node stores some internal fields as literals (joinType, 
conditionType, natural). These fields are converted to dynamic parameters 
during sensitive information removal and can't be constructed to SqlJoin again. 

{noformat}
Unable to remove sensitive information from SQL node of class: 
org.apache.calcite.sql.SqlSelect
 java.lang.ClassCastException: class org.apache.calcite.sql.SqlDynamicParam 
cannot be cast to class org.apache.calcite.sql.SqlLiteral 
(org.apache.calcite.sql.SqlDynamicParam and org.apache.calcite.sql.SqlLiteral 
are in unnamed module of loader 'app')
        at 
org.apache.calcite.sql.SqlJoin$SqlJoinOperator.createCall(SqlJoin.java:203) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.result(SqlShuttle.java:117)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at org.apache.calcite.sql.util.SqlShuttle.visit(SqlShuttle.java:69) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:574)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:551)
 ~[classes/:?]
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:166) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:134)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:101)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at org.apache.calcite.sql.SqlOperator.acceptCall(SqlOperator.java:962) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql.SqlSelectOperator.acceptCall(SqlSelectOperator.java:129) 
~[calcite-core-1.37.0.jar:1.37.0]
        at org.apache.calcite.sql.util.SqlShuttle.visit(SqlShuttle.java:68) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:574)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:551)
 ~[classes/:?]
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:166) 
~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.removeSensitive(CalciteQueryProcessor.java:550)
 [classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.parseAndProcessQuery(CalciteQueryProcessor.java:536)
 [classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:396)
 [classes/:?]
{noformat}
 
The full set of nodes, which currently have SqlLiteral as a field:
SqlJoin, SqlWindow, SqlExplain, SqlWithItem, SqlBasicCall, SqlMatchRecognize, 
IgniteSqlKill*, IgniteSqlCreateUser, IgniteSqlAlterUser

  was:
SqlJoin AST node stores some internal fields as literals (joinType, 
conditionType, natural). These fields are converted to dynamic parameters 
during sensitive information removal and can't be constructed to SqlJoin again. 

{noformat}
Unable to remove sensitive information from SQL node of class: 
org.apache.calcite.sql.SqlSelect
java.lang.ClassCastException: class org.apache.calcite.sql.SqlDynamicParam 
cannot be cast to class org.apache.calcite.sql.SqlLiteral 
(org.apache.calcite.sql.SqlDynamicParam and org.apache.calcite.sql.SqlLiteral 
are in unnamed module of loader 'app')
        at 
org.apache.calcite.sql.SqlJoin$SqlJoinOperator.createCall(SqlJoin.java:203) 
~[calcite-core-1.34.0.jar:1.34.0]
        at 
org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.result(SqlShuttle.java:117)
 ~[calcite-core-1.34.0.jar:1.34.0]
        at org.apache.calcite.sql.util.SqlShuttle.visit(SqlShuttle.java:69) 
~[calcite-core-1.34.0.jar:1.34.0]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:568)
 ~[ignite-calcite-2.16.0.jar:2.16.0]
        at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:545)
 ~[ignite-calcite-2.16.0.jar:2.16.0]
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161) 
~[calcite-core-1.34.0.jar:1.34.0]
{noformat}
 
The full set of nodes, which currently have SqlLiteral as a field:
SqlJoin, SqlWindow, SqlExplain, SqlWithItem, SqlBasicCall, SqlMatchRecognize, 
IgniteSqlKill*, IgniteSqlCreateUser, IgniteSqlAlterUser


> Calcite engine. Failed to remove sensitive information from JOINs
> -----------------------------------------------------------------
>
>                 Key: IGNITE-23676
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23676
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Aleksey Plekhanov
>            Priority: Major
>              Labels: calcite, ise
>
> SqlJoin AST node stores some internal fields as literals (joinType, 
> conditionType, natural). These fields are converted to dynamic parameters 
> during sensitive information removal and can't be constructed to SqlJoin 
> again. 
> {noformat}
> Unable to remove sensitive information from SQL node of class: 
> org.apache.calcite.sql.SqlSelect
>  java.lang.ClassCastException: class org.apache.calcite.sql.SqlDynamicParam 
> cannot be cast to class org.apache.calcite.sql.SqlLiteral 
> (org.apache.calcite.sql.SqlDynamicParam and org.apache.calcite.sql.SqlLiteral 
> are in unnamed module of loader 'app')
>       at 
> org.apache.calcite.sql.SqlJoin$SqlJoinOperator.createCall(SqlJoin.java:203) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.result(SqlShuttle.java:117)
>  ~[calcite-core-1.37.0.jar:1.37.0]
>       at org.apache.calcite.sql.util.SqlShuttle.visit(SqlShuttle.java:69) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:574)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:551)
>  ~[classes/:?]
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:166) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:134)
>  ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:101)
>  ~[calcite-core-1.37.0.jar:1.37.0]
>       at org.apache.calcite.sql.SqlOperator.acceptCall(SqlOperator.java:962) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.calcite.sql.SqlSelectOperator.acceptCall(SqlSelectOperator.java:129)
>  ~[calcite-core-1.37.0.jar:1.37.0]
>       at org.apache.calcite.sql.util.SqlShuttle.visit(SqlShuttle.java:68) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:574)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor$2.visit(CalciteQueryProcessor.java:551)
>  ~[classes/:?]
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:166) 
> ~[calcite-core-1.37.0.jar:1.37.0]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.removeSensitive(CalciteQueryProcessor.java:550)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.parseAndProcessQuery(CalciteQueryProcessor.java:536)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:396)
>  [classes/:?]
> {noformat}
>  
> The full set of nodes, which currently have SqlLiteral as a field:
> SqlJoin, SqlWindow, SqlExplain, SqlWithItem, SqlBasicCall, SqlMatchRecognize, 
> IgniteSqlKill*, IgniteSqlCreateUser, IgniteSqlAlterUser



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

Reply via email to