Ted, Thanks for chiming in.
And, I’m very excited to see another project using Calcite. Nice work. May I include SQL-Gremlin in the list of adapters on http://calcite.apache.org/docs/adapter.html? Would it make sense to convert SQL-Gremlin into a true adapter (i.e. provide an implementation of SchemaFactory so that you could include a Gremlin schema in a Calcite model file alongside other schemas)? Julian > On Feb 25, 2016, at 6:02 AM, Ted Wilmes <[email protected]> wrote: > > Not sure if this would be of any help, but I worked through a similar sort of > thing in this class: > > https://github.com/twilmes/sql-gremlin/blob/cef926c71645165b4c469ebc05e23df0c3591747/src/main/java/org/twilmes/sql/gremlin/processor/FieldMapVisitor.java > > > I'm using Calcite as part of a project that converts SQL to the Gremlin graph > query language. Because of how the Gremlin queries are constructed, I needed > to be able to trace the provenance of the columns at each level back to their > original column name. This particular code is executed during a depth first > traversal of the RelNodes. > > --Ted > > ________________________________________ > From: Julian Hyde <[email protected]> > Sent: Wednesday, February 24, 2016 6:44 PM > To: [email protected] > Subject: Re: Translate "$0" to real name > > Scalar expressions (RexNode) are, by design, separate from relational > expressions (RelNode). Therefore a reference to an input field (RexInputRef) > contains the ordinal and type of the field that it references but not its > name or any other information. > > It’s useful that RexNodes are self-contained; they are easier to canonize, > and there are fewer concerns about them being the source of memory leaks. > > If you want to print extra information about a RexNode you need to supply the > list of RelNodes that are the context. When used in a Filter or Project, that > list is just [input]. When used in a Join, that list is [left, right]. > > It would be nice if, say, the explain of Filter, Project and Join used the > input field names rather than $n. If you wrote this we could hook it up. > > Lastly, note that the names of the fields of RelNodes may not be the “real > names” you are hoping for. We try to preserve the names from SQL, but there > are times when they get lost, especially after applying transformation rules. > All we can really guarantee is that the names are unique within each input. > > Julian > > >> On Feb 23, 2016, at 5:54 PM, Matt Bateman <[email protected]> wrote: >> >> Hi All, >> >> I'm sure this is something simple I'm missing. When evaluating a where >> clause the RexInputRef uses the "$index" notation. How do I get from there >> to the actual name of the column? The javadoc for RexInputRef talks about >> this but doesn't indicate how to do the actual translation. >> >> Thanks, >> >> Matt
