Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(Custom) table engine bindings #52

Open
danthegoodman1 opened this issue Jul 3, 2023 · 3 comments
Open

(Custom) table engine bindings #52

danthegoodman1 opened this issue Jul 3, 2023 · 3 comments

Comments

@danthegoodman1
Copy link

Being able to bind a custom table engine (not function) that exhibits dynamic behavior would be really powerful.

For example, similar to how I have the parquet merge engine IceDB where I have an example querying from a custom table function, it would be much nicer if the columns for filtering the metadata could be determined via the query predicate (WHERE conditions) rather than function parameters.

This would allow you to fully decoupled storage, compute, and metadata to build a serverless OLAP DB that natively support multi-tenancy and dynamic schema (through column name merging, existing clickhouse feature). This could then effectively be aliased to being a list of parquet files to read, with merge on name enabled (can't find the docs in clickhouse to save my life for that setting).

Effectively this would be intercepting the AST in a very DX-friendly way, and returning a custom clickhouse table function in its place before execution.

@danthegoodman1 danthegoodman1 changed the title Table engine bindings (Custom) table engine bindings Jul 3, 2023
@danthegoodman1
Copy link
Author

danthegoodman1 commented Jul 3, 2023

This is also a sort of table alias but with interception of the query so you can do magic with the query predicate (e.g. transpiling to get a list of parquet files based on partitions like I do in IceDB, and returning a s3() that reads a list of parquets)

@danthegoodman1
Copy link
Author

However the above also does depends on the s3 function NOT using S3 ListObject which it currently does right now every time you give it blob format, whether you specify the entire list or not...

@danthegoodman1
Copy link
Author

Some places I would like to use this are:
danthegoodman1/icedb#45
danthegoodman1/icedb#46
danthegoodman1/icedb#47

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant