【详述】问题详细描述
执行 select * from information_schema.views
报错:org.jkiss.dbeaver.model.sql.DBSQLException: SQL 错误 [1064] [42000]: failed to call frontend service, host: unknown
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:513)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:444)
at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:171)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:431)
at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:816)
at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:3440)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:118)
at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:171)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:116)
at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:4718)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLSyntaxErrorException: failed to call frontend service, host: unknown
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:764)
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648)
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:330)
at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.ex
【业务影响】
information_schema.views 整个表不可使用,读写查看等
【StarRocks版本】V2.2.2
【集群规模】3fe 3be混部
【复现方式】 100%复现
方式1:
create view view_test as
select replace(t2.full_name,concat(’\’,CHAR(124),CHAR(35),’\’,CHAR(124)),’》’) as full_region_name from tb01 t2 ;
方式2:create view view_test6 as SELECT ‘’ AS userName FROM dual WHERE 1=2;
一旦创建的语句中存在特殊情况,此特殊情况无法穷尽,导致information_schema.views中不可访问
【痛点】一旦出现上面的报错无法排查,若是不知道是创建的视图中存在特殊情况这个方向,根据fe be日志是无法定位到的,但是就算知道是创建的视图引起的,无法根据views 表中的view_definition字段排查是哪个记录导致的,因为此时views无法查看,而且通过查看已创建的视图的DDL语句也是无法查看的。假设按照二分法的方式方式删除已有的视图来验证views是否可用,1是业务不允许,2是量太大了。
【建议】
1、创建视图时可否校验。
2、就算没校验或者校验没命中,影响范围可否是某个或者某些有问题的视图。一旦整个views不可用,排查错误都无从下手。