I dug up some examples from Github of using the "TableFunctionImpl" class:
mat-calcite-plugin/TableFunctions.java at a57a5ba80768066714c22bd9e8a9b529d4cb9a6b · vlsi/mat-calcite-plugin (github.com) <https://github.com/vlsi/mat-calcite-plugin/blob/a57a5ba80768066714c22bd9e8a9b529d4cb9a6b/MatCalcitePlugin/src/com/github/vlsi/mat/calcite/functions/TableFunctions.java> Calcite_sql_driver/MazeTable.java at 6819088123e67631367ca927b112b58e4eb90829 · dream001/Calcite_sql_driver (github.com) <https://github.com/dream001/Calcite_sql_driver/blob/6819088123e67631367ca927b112b58e4eb90829/src/test/java/com/yonyou/calcite/MazeTable.java> Currently trying to get a TableFunction that just returns a Map<String, Object> as a relation to work Have the below -- calling this shows that the function IS invoked, but the data it gives back is garbage: Calcite JSON_TABLE WIP (github.com) <https://gist.github.com/GavinRay97/b42c69992a0d0c3a01f1c7e1b9ab1999> This is the output of main() json = {"id":1, "name":"John"} json = {"id":1, "name":"John"} json = {"id":1, "name":"John"} EXPR$0: id EXPR$0: id I'm doing something wrong here for sure, lol. On Tue, May 31, 2022 at 11:35 AM Gavin Ray <ray.gavi...@gmail.com> wrote: > I'm interested in implementing JSON_TABLE functionality for Calcite > > This opens up some neat usecases, like adding HTTP request UDF's > then using JSON_TABLE to convert the result into a table: > > SELECT JSON_TABLE( > HTTP_GET('http://localhost:8080/api/v1/users/1')) > > Adding support for all of the functionality seems difficult, > but I'm wondering whether this could be done as a "SqlTableFunction" UDF? > > I'm thinking it might be possible if the JSON_TABLE udf > expects Map<String, Object> and does inference based on that? > > Something like: > > WITH users AS ( > SELECT HTTP_GET('http://localhost:8080/api/v1/users') > ) SELECT > id, > name > FROM > JSON_TABLE(JSON_PATH(users, "$.0")) > > Does anyone have ideas or see issues with this approach? > Thank you =) > > > >