Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/3829#discussion_r136114635 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/TableEnvironment.scala --- @@ -502,26 +513,140 @@ abstract class TableEnvironment(val config: TableConfig) { * tEnv.sql(s"SELECT * FROM $table") * }}} * - * @param query The SQL query to evaluate. + * @param sql The SQL string to evaluate. * @return The result of the query as Table. */ - def sql(query: String): Table = { + @deprecated + def sql(sql: String): Table = { val planner = new FlinkPlannerImpl(getFrameworkConfig, getPlanner, getTypeFactory) // parse the sql query - val parsed = planner.parse(query) + val parsed = planner.parse(sql) // validate the sql query val validated = planner.validate(parsed) // transform to a relational tree val relational = planner.rel(validated) - new Table(this, LogicalRelNode(relational.rel)) } /** + * Evaluates a SQL Select query on registered tables and retrieves the result as a + * [[Table]]. + * + * All tables referenced by the query must be registered in the TableEnvironment. But + * [[Table.toString]] will automatically register an unique table name and return the + * table name. So it allows to call SQL directly on tables like this: + * + * {{{ + * val table: Table = ... + * // the table is not registered to the table environment + * tEnv.sqlSelect(s"SELECT * FROM $table") + * }}} + * + * @param sql The SQL string to evaluate. + * @return The result of the query as Table or null of the DML insert operation. + */ + def sqlQuery(sql: String): Table = { + val planner = new FlinkPlannerImpl(getFrameworkConfig, getPlanner, getTypeFactory) + // parse the sql query + val parsed = planner.parse(sql) + if (null != parsed && parsed.getKind.belongsTo(SqlKind.QUERY)) { + // validate the sql query + val validated = planner.validate(parsed) + // transform to a relational tree + val relational = planner.rel(validated) + new Table(this, LogicalRelNode(relational.rel)) + } else { + throw new TableException( + "Unsupported sql query! sqlQuery Only accept SELECT, UNION, INTERSECT, EXCEPT, VALUES, " + --- End diff -- I'd change the error message to > Unsupported SQL query! sqlQuery() only accepts SQL queries of type SELECT, UNION, INTERSECT, EXCEPT, VALUES, WITH, ORDER_BY, and EXPLICIT_TABLE.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---