So are you suggesting doing something like this? https://calcite.apache.org/docs/tutorial.html#tables-and-views-in-schemas
And using a special function `tenant_id = CURRENT_TENANT()` in place of `gender = \'F\'` I really wish some of the further topics at the bottom were more flushed out, specifically how to add functions. -Dan On Sun, Mar 27, 2016 at 9:11 PM, Julian Hyde <[email protected]> wrote: > See comments inline. > > Julian > > > > On Mar 25, 2016, at 9:29 AM, Dan Di Spaltro <[email protected]> > wrote: > > > > So I definitely understand the data side of the target database ("A"), > that > > I am virtualizing. > > > > I guess more specific questions would be: > > * How would I expose only two tables from "A" (they would both include > the > > tenantId field), I'm guess I might override the JdbcSchema using some > > whitelist. > > A whitelist is one approach. Another is to keep the JdbcSchema private, > but create views in another schema that reference those tables. Tenants > would only see the views. > > > * Since I want to give everyone the same virtual table space (with > > different "data"), would I need to look in overriding some of the Jdbc > core > > implementation? > > I don’t think you need to change anything in the JDBC adapter. All of the > smarts will be in the views. > > > * I would need to use the parsed tree and then add the tenantId filter > > * Somehow pass in the tenantId during query time, ideally at the > statement > > vs the connection level. > > You could put tenantId into the DataContext. In SQL it would be accessed > using a function. This is very similar to how CURRENT_TIMESTAMP function > works. > > > > > Anyways, was just looking for some pointers, as there is a lot of code > > here. And anything would be much appreciated. I am happy to share some > of > > the work once it's done. > > > >
