[
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 (natural boolean, joinType enum, conditionType enum)
* SqlWindow (isRows boolean, allowPartial boolean)
* SqlExplain (detailLevel enum, depth enum, format enum)
* SqlWithItem (recursive boolean)
* SqlBasicCall (functionQuantifier enum)
* SqlMatchRecognize(strictStart boolean, strictEnd boolean, rowsPerMatch enum,
interval SqlIntervalLiteral)
* IgniteSqlKill*
* IgniteSqlCreateUser (pwd string)
* IgniteSqlAlterUser (pwd string)
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.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
> 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 (natural boolean, joinType enum, conditionType enum)
> * SqlWindow (isRows boolean, allowPartial boolean)
> * SqlExplain (detailLevel enum, depth enum, format enum)
> * SqlWithItem (recursive boolean)
> * SqlBasicCall (functionQuantifier enum)
> * SqlMatchRecognize(strictStart boolean, strictEnd boolean, rowsPerMatch
> enum, interval SqlIntervalLiteral)
> * IgniteSqlKill*
> * IgniteSqlCreateUser (pwd string)
> * IgniteSqlAlterUser (pwd string)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)