in sql-interpreter/src/main/scala/org/apache/toree/magic/builtin/Sql.scala [35:71]
override def execute(code: String): MagicOutput = {
val sparkSql = kernel.interpreter("SQL")
if (sparkSql.isEmpty || sparkSql.get == null)
throw new SqlException("SQL is not available!")
val scala = kernel.interpreter("Scala")
val evaluated = if (scala.nonEmpty && scala.get != null) {
val scalaInterpreter = scala.get.asInstanceOf[ScalaInterpreter]
scalaInterpreter.iMain.interpret("s\"" + code.replace("\n", " ") + "\"") match {
case Results.Success =>
scalaInterpreter.iMain.valueOfTerm(scalaInterpreter.iMain.mostRecentVar).get.asInstanceOf[String]
case _ => code
}
} else {
code
}
sparkSql.get match {
case sqlInterpreter: SqlInterpreter =>
val (_, output) = sqlInterpreter.interpret(evaluated)
output match {
case Left(executeOutput) =>
MagicOutput(executeOutput.toSeq: _*)
case Right(executeFailure) => executeFailure match {
case executeAborted: ExecuteAborted =>
throw new SqlException("SQL code was aborted!")
case executeError: ExecuteError =>
throw new SqlException(executeError.value)
}
}
case otherInterpreter =>
val className = otherInterpreter.getClass.getName
throw new SqlException(s"Invalid SQL interpreter: $className")
}
}