Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/3829#discussion_r136109255 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/BatchTableEnvironment.scala --- @@ -106,6 +106,43 @@ abstract class BatchTableEnvironment( } /** + * Registers an external [[TableSink]] in this [[TableEnvironment]]'s catalog. + * Registered sink tables can be referenced in SQL DML clause. + * + * Examples: + * + * - predefine a table sink with schema + * {{{ + * val fieldTypes: Array[TypeInformation[_]] = Array( #TODO ) + * val fieldNames: Array[String] = Array("a", "b", "c") + * val tableSink: TableSink = new YourTableSinkImpl(fieldTypes, Option(fieldNames)) + * }}} + * + * - register an alias for this table sink to catalog + * {{{ + * tableEnv.registerTableSink("example_sink_table", tableSink) + * }}} + * + * - use the registered sink in SQL directly + * {{{ + * tableEnv.sqlInsert("INSERT INTO example_sink_table SELECT a, b, c FROM sourceTable") + * }}} + * + * @param name The name under which the [[TableSink]] is registered. + * @param tableSink The [[TableSink]] to register. + */ + override def registerTableSink(name: String, tableSink: TableSink[_]): Unit = { --- End diff -- In our discussion, I proposed to request field names and types when registering a `TableSink` instead of requiring users to specify those in the `TableSink` itself. Internally, we would create a configure the passed table sink and register the returned copy. So the signature `registerTableSink` method would look like: ``` override def registerTableSink( name: String, fieldNames: Array[String], fieldTypes: Array[TypeInformation[_]], tableSink: TableSink[_]): Unit ``` I think this is a better approach because it uses the current `TableSink` interface and enforces users to specify field names and types. Otherwise, we need special `TableSink` implementations that request this information in the constructor.
--- 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. ---