[ 
https://issues.apache.org/jira/browse/CALCITE-1101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15169472#comment-15169472
 ] 

Julian Hyde commented on CALCITE-1101:
--------------------------------------

bq. Would it make sense to still let Calcite handle the translation to RelNode 
from sql

Yes, provided that we can also handle materialized views that are not based on 
SQL. Those views shouldn't feel like second-class citizens.

bq. MaterializationService also handles the creation of materialized views if 
they are not pre-populated, so looks like we'd better have table name + table 
path instead of Table object here

Yes, I intended to replace Table with something like TableEntry:

{code}
class TableEntry {
  SchemaEntry schema;
  Table table;
  String name;
}

class SchemaEntry {
  SchemaEntry parent;
  Schema schema;
  String name;
}
{code}

It has the same information content as table+path. You can compute the path of 
a TableEntry by following its parent SchemaEntry until you get to root.

> Extend Schema SPI to provide materialized views
> -----------------------------------------------
>
>                 Key: CALCITE-1101
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1101
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>
> Currently the way to get materialized views is via MaterializationService, 
> but it would be simpler to get them from a new method 
> Schema.getMaterializedViews().
> Some thoughts:
> * The method should return materialized views not just in the current schema, 
> and therefore
> * The method should be filtered by Table (or Tables)
> * The objects returned can not include RelNode (RelNode can only be created 
> in the context of a statement, and the Schema is created before the first 
> statement; furthermore, holding onto RelNode would be a resource leak). But 
> they should provide the means to create a RelNode (given sufficient context).
> * Maybe the objects returned indicate something about the mapping
> Taking all this, we get {code}List<Foo> getMaterializedViews(Table... tables);
> class Foo {
>   public final Table view;
>   public final List<Table> referencedTables;
>   public final TileKey tileKey; // may be null
>   public final String sql; // may be null; for information only
>   public RelNode rel(Context context);
> }
> {code}
> Maybe we can obsolete {{CalciteSchema.getTableBySql}}.
> Cc [~maryannxue], [~jamestaylor].



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to