Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

oracle 中JSON相关操作 JSON_PATH 包含$ druid不能解析$ #5812

Open
jikangzy opened this issue Mar 28, 2024 · 1 comment
Open

oracle 中JSON相关操作 JSON_PATH 包含$ druid不能解析$ #5812

jikangzy opened this issue Mar 28, 2024 · 1 comment

Comments

@jikangzy
Copy link

**dbtype: oracle
**dbversion: 19C
druid verion:
**error sql: SELECT JT.,JD. FROM JSON_TEST,
JSON_TABLE (JSON_DATA, '$' COLUMNS (

						 ruleId VARCHAR(20) PATH '$.ruleId'
           )) JT ,
						   JSON_TABLE (JSON_DATA, '$.constraints[*]' COLUMNS (
           classProperty VARCHAR(20) PATH '$.classProperty',
           val VARCHAR(20) PATH '$.val'
           )) Jd

;

**testcase code:

CREATE TABLE "JSON_TEST" (
"JSON_DATA" VARCHAR2(2048 BYTE) VISIBLE
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS 2147483645
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;


-- Records of JSON_TEST


INSERT INTO "JSON_TEST" VALUES ('{"constraints": [{"classProperty": "channelCode","oper": "IN","val": "0"},{"classProperty": "couponCode","oper": "EQUAL","val": "C202401088587401537024"}],"results": [{"classProperty": "ruleId","val": "446878587402846976"}],"ruleId": "446878587402846976","ruleType": "1","rulename": ""}');

stacktrace info:
**error info:
uncategorized SQLException; SQL state [null]; error code [0]; sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER p

@jikangzy
Copy link
Author

Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, expect RPAREN, actual IDENTIFIER pos 1504, line 42, column 51, token IDENTIFIER COLUMNS
at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:2860) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:1288) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.methodRest(OracleExprParser.java:554) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLExprParser.primaryRest(SQLExprParser.java:1049) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primaryRest(OracleExprParser.java:722) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:885) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primary(OracleExprParser.java:516) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:157) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceQueryTableExpr(OracleSelectParser.java:686) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourcePrimary(OracleSelectParser.java:678) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceRest(OracleSelectParser.java:910) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSource(OracleSelectParser.java:627) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLSelectParser.parseFrom(SQLSelectParser.java:957) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:321) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.select(OracleSelectParser.java:92) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourcePrimary(OracleSelectParser.java:639) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceRest(OracleSelectParser.java:910) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceRest(OracleSelectParser.java:935) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceRest(OracleSelectParser.java:935) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSource(OracleSelectParser.java:627) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLSelectParser.parseFrom(SQLSelectParser.java:957) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:321) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.select(OracleSelectParser.java:92) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourcePrimary(OracleSelectParser.java:639) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSource(OracleSelectParser.java:624) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLSelectParser.parseFrom(SQLSelectParser.java:957) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:321) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.select(OracleSelectParser.java:92) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser.parseStatementList(OracleStatementParser.java:200) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:182) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.wall.WallProvider.checkInternal(WallProvider.java:624) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.wall.WallProvider.check(WallProvider.java:578) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.wall.WallFilter.checkInternal(WallFilter.java:793) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:259) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:568) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:930) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:122) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:568) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:341) ~[druid-1.1.21.jar:1.1.21]
at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:350) ~[druid-1.1.21.jar:1.1.21]
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:86) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.5.6.jar:3.5.6]
at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:111) ~[pagehelper-5.0.0.jar:?]
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.6.jar:3.5.6]
at com.sun.proxy.$Proxy284.query(Unknown Source) ~[?:?]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.6.jar:3.5.6]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.6.jar:3.5.6]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_241]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_241]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) ~[mybatis-spring-2.0.6.jar:2.0.6]
... 69 more

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant