Hello Calcite Devs,

I'm working on a data mocking system that's accessible via a relational API: tables, columns, indexes, etc. I implemented a rudimentary query runner layer from scratch, so the project is already usable in MVP state. The next step would be the integration of Calcite.

For now, I have created an initial version by implementing the ScannableTable interface. This was very easy, but the functionality is, of course, slow due to the full table scan, as it does not make use of the available indexes. There seems to be a big gap between ScannableTable and QueryableTable. Implementing the Queryable interface for QueryableTable manually is quite a lot of work.

Is there some existing or proposed method for the (probably common) case where indexes are available for an otherwise scannable table? If I do need to implement this manually, what should I look out for?

For context, here is the original storage API I defined for the MVP version:

https://github.com/miniconnect/minibase/tree/master/projects/storage/src/main/java/hu/webarticum/minibase/storage/api

This is my current sketchy table adapter based on ScannableTable:

https://github.com/miniconnect/calcite-integration/blob/main/projects/minibase-calcite/src/main/java/hu/webarticum/minibase/calcite/driver/MinibaseCalciteTable.java

Thanks and regards,
Dávid Horváth

Reply via email to