Hi all,

I'm evaluating if Calcite is a good fit as a query planner for my database
project, and would appreciate some high-level pointers on where to look in
the source to figure out how to do what I need. Or, alternatively,
confirmation if it's not feasible.

My system is relational but not SQL, and I would like to work with concrete
values which don't map cleanly to any existing SQL types. I am happy
defining my own equality, hash and comparison semantics, and would like
them to work with Calcite's existing equality/comparison operators, as well
as my own user defined functions.

The type system mostly seems quite flexible, but where I'm running into
trouble is actually using them as inputs to queries. For example, I'd like
to create a filter to return only rows with a field value equal to one of
these custom values, but I can't use RexCall(SqlOperator, RexField,
RexLiteral)  because RexLiteral explicitly only supports a limited set of
SQL types.

1. I don't need full compatibility: I am ok if my custom types only work
with backends I write.
2. The whole system is in-process, so no need to worry about serialization
or conversion.
2. I plan on using the algebra directly, so no parser support is needed.

Can anyone give any pointers to what classes/interfaces I should look at
for this kind of use case? I don't need a full example or anything, just an
indication of where in the (rather extensive) type system to start digging.
Ideally in a place that preserves as many of Calcite's
built-in optimizations as possible.

Many thanks, and I appreciate your work on this clearly very sophisticated
project.

- Luke VanderHart

Reply via email to