override def execute()

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")
    }
  }