sandynz commented on issue #5386:
URL: https://github.com/apache/shardingsphere/issues/5386#issuecomment-770380466
I tested it on ShardingSphere-Proxy 5.0.0-RC1-SNAPSHOT(commit:
2770484c6a0a13d8401eb309d0dac38c373a4c30), proxy side has SQL parsing exception:
```
line 1:370 no viable alternative at input
'SELECTtmp.TABLE_CAT,tmp.TABLE_SCHEM,tmp.TABLE_NAME,tmp.NON_UNIQUE,tmp.INDEX_QUALIFIER,tmp.INDEX_NAME,tmp.TYPE,tmp.ORDINAL_POSITION,trim(both'"'frompg_catalog.pg_get_indexdef(tmp.CI_OID,tmp.ORDINAL_POSITION,false))ASCOLUMN_NAME,CASEtmp.AM_NAMEWHEN'btree'THENCASEtmp.I_INDOPTION[tmp.ORDINAL_POSITION-1]&1'
line 1:370 no viable alternative at input
'SELECTtmp.TABLE_CAT,tmp.TABLE_SCHEM,tmp.TABLE_NAME,tmp.NON_UNIQUE,tmp.INDEX_QUALIFIER,tmp.INDEX_NAME,tmp.TYPE,tmp.ORDINAL_POSITION,trim(both'"'frompg_catalog.pg_get_indexdef(tmp.CI_OID,tmp.ORDINAL_POSITION,false))ASCOLUMN_NAME,CASEtmp.AM_NAMEWHEN'btree'THENCASEtmp.I_INDOPTION[tmp.ORDINAL_POSITION-1]&1'
[ERROR] 2021-01-31 21:02:58.689 [pool-10-thread-1]
o.a.s.p.f.c.CommandExecutorTask - Exception occur:
com.google.common.util.concurrent.UncheckedExecutionException:
org.antlr.v4.runtime.misc.ParseCancellationException
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
at
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
at
com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
at
org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine.parse(SQLStatementParserEngine.java:48)
at
org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse0(ShardingSphereSQLParserEngine.java:67)
at
org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse(ShardingSphereSQLParserEngine.java:56)
at
org.apache.shardingsphere.proxy.frontend.postgresql.command.query.binary.parse.PostgreSQLComParseExecutor.execute(PostgreSQLComParseExecutor.java:57)
at
org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask.executeCommand(CommandExecutorTask.java:93)
at
org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask.run(CommandExecutorTask.java:71)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.antlr.v4.runtime.misc.ParseCancellationException: null
at
org.antlr.v4.runtime.BailErrorStrategy.recover(BailErrorStrategy.java:51)
at
org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.selectNoParens(PostgreSQLStatementParser.java:2925)
at
org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.select(PostgreSQLStatementParser.java:2644)
at
org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.execute(PostgreSQLStatementParser.java:836)
at
org.apache.shardingsphere.sql.parser.postgresql.parser.PostgreSQLParser.parse(PostgreSQLParser.java:37)
at
org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor.twoPhaseParse(SQLParserExecutor.java:60)
at
org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor.parse(SQLParserExecutor.java:45)
at
org.apache.shardingsphere.sql.parser.api.SQLParserEngine.parse(SQLParserEngine.java:51)
at
org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor.parse(SQLStatementParserExecutor.java:47)
at
org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:40)
at
org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:29)
at
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
at
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
at
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
... 13 common frames omitted
Caused by: org.antlr.v4.runtime.NoViableAltException: null
at
org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2026)
at
org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:467)
at
org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393)
at
org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.selectNoParens(PostgreSQLStatementParser.java:2763)
... 26 common frames omitted
```
The executed SQL was intercepted on client:
```
SELECT tmp.TABLE_CAT, tmp.TABLE_SCHEM, tmp.TABLE_NAME,
tmp.NON_UNIQUE, tmp.INDEX_QUALIFIER, tmp.INDEX_NAME, tmp.TYPE,
tmp.ORDINAL_POSITION, trim(both '"' from
pg_catalog.pg_get_indexdef(tmp.CI_OID, tmp.ORDINAL_POSITION, false)) AS
COLUMN_NAME, CASE tmp.AM_NAME WHEN 'btree' THEN CASE
tmp.I_INDOPTION[tmp.ORDINAL_POSITION - 1] & 1 WHEN 1 THEN 'D' ELSE
'A' END ELSE NULL END AS ASC_OR_DESC, tmp.CARDINALITY,
tmp.PAGES, tmp.FILTER_CONDITION FROM (SELECT NULL AS TABLE_CAT, n.nspname
AS TABLE_SCHEM, ct.relname AS TABLE_NAME, NOT i.indisunique AS NON_UNIQUE,
NULL AS INDEX_QUALIFIER, ci.relname AS INDEX_NAME, CASE i.indisclustered
WHEN true THEN 1 ELSE CASE am.amname WHEN 'hash' THEN 2 ELSE 3
END END AS TYPE, (information_schema._pg_expandarray(i.indkey)).n AS
ORDINAL_POSITION, ci.reltuples AS CARDINALITY, ci.relpages AS PAGES,
pg_catalog.pg_get_expr(i.indpred, i.indrelid) AS FILT
ER_CONDITION, ci.oid AS CI_OID, i.indoption AS I_INDOPTION, am.amname AS
AM_NAME FROM pg_catalog.pg_class ct JOIN pg_catalog.pg_namespace n ON
(ct.relnamespace = n.oid) JOIN pg_catalog.pg_index i ON (ct.oid = i.indrelid)
JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) JOIN
pg_catalog.pg_am am ON (ci.relam = am.oid) WHERE true AND ct.relname =
E'numeric_tc') AS tmp ORDER BY NON_UNIQUE, TYPE, INDEX_NAME, ORDINAL_POSITION
```
The client exception:
```
2021-01-31 21:00:58 [INFO] [main] [c.z.h.HikariDataSource][82] HikariPool-1
- Start completed.
dataSource=HikariDataSource (HikariPool-1)
Exception in thread "main" org.postgresql.util.PSQLException:
org.antlr.v4.runtime.misc.ParseCancellationException
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2532)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2267)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:312)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369)
at
org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:310)
at
org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:296)
at
org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:273)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:226)
at
org.postgresql.jdbc.PgDatabaseMetaData.getIndexInfo(PgDatabaseMetaData.java:2514)
at
com.zaxxer.hikari.pool.ProxyDatabaseMetaData.getIndexInfo(ProxyDatabaseMetaData.java:209)
at
com.zaxxer.hikari.pool.HikariProxyDatabaseMetaData.getIndexInfo(HikariProxyDatabaseMetaData.java)
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]