byzer-lang icon indicating copy to clipboard operation
byzer-lang copied to clipboard

run command 执行show tables语句报错

Open MichelZhan opened this issue 3 years ago • 1 comments

执行以下语句,提交任务skipAuth默认为false,报错

 connect jdbc where
 url="jdbc:mysql://127.0.0.1:3306/db"
 and driver="com.mysql.jdbc.Driver"
 and user="root"
 and password="root"
 as db_1;
run command as JDBC.`db_1._` where
`driver-statement-query`="show tables"
and sqlMode="query"
as db1_show_tables;

堆栈信息:

21/07/29 12:42:01  INFO impl: Completed 200 in 542ms 	POST /run/script



java.lang.ClassCastException: com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement cannot be cast to com.alibaba.druid.sql.ast.statement.SQLSelectStatement
	at tech.mlsql.sql.MLSQLSQLParser$.extractTableWithColumns(MLSQLSQLParser.scala:21)
	at streaming.dsl.mmlib.algs.SQLJDBC$$anonfun$auth$4.apply(SQLJDBC.scala:160)
	at streaming.dsl.mmlib.algs.SQLJDBC$$anonfun$auth$4.apply(SQLJDBC.scala:154)
	at scala.Option.map(Option.scala:146)
	at streaming.dsl.mmlib.algs.SQLJDBC.auth(SQLJDBC.scala:154)
	at tech.mlsql.dsl.adaptor.TrainAdaptor.parse(TrainAdaptor.scala:101)
	at streaming.dsl.ScriptSQLExecListener.execute$1(ScriptSQLExec.scala:368)
	at streaming.dsl.ScriptSQLExecListener.exitSql(ScriptSQLExec.scala:407)
	at streaming.dsl.parser.DSLSQLParser$SqlContext.exitRule(DSLSQLParser.java:296)
	at org.antlr.v4.runtime.tree.ParseTreeWalker.exitRule(ParseTreeWalker.java:47)
	at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:30)
	at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
	at streaming.dsl.ScriptSQLExec$._parse(ScriptSQLExec.scala:159)
	at streaming.dsl.ScriptSQLExec$.parse(ScriptSQLExec.scala:146)
	at streaming.rest.RestController$$anonfun$query$1$1.apply$mcV$sp(RestController.scala:132)
	at tech.mlsql.job.JobManager$.run(JobManager.scala:74)
	at tech.mlsql.job.JobManager$$anon$2.run(JobManager.scala:91)
	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)

MichelZhan avatar Jul 29 '21 06:07 MichelZhan

sqlMode只支持"query"和 "ddl" ,这意味着这个模块面只能执行select 以及ddl 语句。 show tables 是不支持的。

allwefantasy avatar Aug 05 '21 03:08 allwefantasy