public DremioCatalogReader getCatalogReader() { return sqlConverter.getCatalogReader(); }
public DremioSqlToRelConverter( SqlConverter sqlConverter, SqlValidator validator, SqlRexConvertletTable convertletTable, Config config) { super(new NoOpExpander(), validator, sqlConverter.getCatalogReader(), sqlConverter.getCluster(), convertletTable, config); this.sqlConverter = sqlConverter; }
public static RelNode deserializePlan(final byte[] planBytes, SqlConverter parent) { final SqlConverter parser = new SqlConverter(parent, parent.getCatalogReader().withSchemaPath(ImmutableList.of())); final LogicalPlanDeserializer deserializer = parser.getSerializerFactory().getDeserializer(parser.getCluster(), parser.getCatalogReader(), parser.getFunctionImplementationRegistry()); return deserializer.deserialize(planBytes); }
private RelNode expandSchemaPath(final List<String> path) { final DremioCatalogReader catalog = parent.getCatalogReader(); final RelOptTable table = catalog.getTable(path); if(table == null){ return null; } ToRelContext context = new ToRelContext() { @Override public RelOptCluster getCluster() { return parent.getCluster(); } @Override public RelRoot expandView(RelDataType rowType, String queryString, List<String> schemaPath, List<String> viewPath) { return null; } }; NamespaceTable newTable = table.unwrap(NamespaceTable.class); if(newTable != null){ return newTable.toRel(context, table); } throw new IllegalStateException("Unable to expand path for table: " + table); }
public static RelRoot expandView(NamespaceKey path, final String viewOwner, final String queryString, final List<String> context, final SqlConverter sqlConverter) { ViewExpansionToken token = null; try { //RelDataType rowType = view.getRowType(cluster.getTypeFactory()); token = sqlConverter.getViewExpansionContext().reserveViewExpansionToken(viewOwner); final DremioCatalogReader catalog; if(viewOwner != null) { catalog = sqlConverter.getCatalogReader().withSchemaPathAndUser(viewOwner, context); } else { catalog = sqlConverter.getCatalogReader().withSchemaPath(context); } final SqlConverter newConverter = new SqlConverter(sqlConverter, catalog); final SqlNode parsedNode = newConverter.parse(queryString); final SqlNode validatedNode = newConverter.validate(parsedNode); final RelRootPlus root = newConverter.toConvertibleRelRoot(validatedNode, true); if(path == null) { return root; } // we need to make sure that if a inner expansion is context sensitive, we consider the current // expansion context sensitive even if it isn't locally. final boolean contextSensitive = root.isContextSensitive() || ExpansionNode.isContextSensitive(root.rel); return new RelRoot(ExpansionNode.wrap(path, root.rel, contextSensitive), root.validatedRowType, root.kind, root.fields, root.collation); } finally { if (token != null) { token.release(); } } }
final DremioCatalogReader reader = parser.getCatalogReader(); final Catalog catalog = context.getCatalog(); final SqlNode sqlNode = parser.parse(sql);