@Override public M bind(RelNode rel, RelMetadataQuery mq) { final Metadata metadata = function.bind(rel, mq); return metadataClass.cast( Proxy.newProxyInstance(metadataClass.getClassLoader(), new Class[]{metadataClass}, new CachingInvocationHandler(metadata))); } };
public <M extends Metadata> M query(RelNode rel, RelMetadataQuery mq, Class<M> metadataClazz) { try { //noinspection unchecked final Pair<Class<RelNode>, Class<Metadata>> key = (Pair) Pair.of(rel.getClass(), metadataClazz); final Metadata apply = cache.get(key).bind(rel, mq); return metadataClazz.cast(apply); } catch (UncheckedExecutionException | ExecutionException e) { Util.throwIfUnchecked(e.getCause()); throw new RuntimeException(e.getCause()); } } }
public <M extends Metadata> M query(RelNode rel, RelMetadataQuery mq, Class<M> metadataClazz) { try { //noinspection unchecked final Pair<Class<RelNode>, Class<Metadata>> key = (Pair) Pair.of(rel.getClass(), metadataClazz); final Metadata apply = cache.get(key).bind(rel, mq); return metadataClazz.cast(apply); } catch (UncheckedExecutionException | ExecutionException e) { Util.throwIfUnchecked(e.getCause()); throw new RuntimeException(e.getCause()); } } }
public <M extends Metadata> UnboundMetadata<M> apply( Class<? extends RelNode> relClass, final Class<? extends M> metadataClass) { final UnboundMetadata<M> function = underlyingProvider.apply(relClass, metadataClass); if (function == null) { return null; } // TODO jvs 30-Mar-2006: Use meta-metadata to decide which metadata // query results can stay fresh until the next Ice Age. return (rel, mq) -> { final Metadata metadata = function.bind(rel, mq); return metadataClass.cast( Proxy.newProxyInstance(metadataClass.getClassLoader(), new Class[]{metadataClass}, new CachingInvocationHandler(metadata))); }; }
public <M extends Metadata> UnboundMetadata<M> apply( Class<? extends RelNode> relClass, final Class<? extends M> metadataClass) { final UnboundMetadata<M> function = underlyingProvider.apply(relClass, metadataClass); if (function == null) { return null; } // TODO jvs 30-Mar-2006: Use meta-metadata to decide which metadata // query results can stay fresh until the next Ice Age. return (rel, mq) -> { final Metadata metadata = function.bind(rel, mq); return metadataClass.cast( Proxy.newProxyInstance(metadataClass.getClassLoader(), new Class[]{metadataClass}, new CachingInvocationHandler(metadata))); }; }
final List<Metadata> metadataList = new ArrayList<>(); for (UnboundMetadata<M> function : functions) { final Metadata metadata = function.bind(rel, mq); if (metadata != null) { metadataList.add(metadata);
final List<Metadata> metadataList = new ArrayList<>(); for (UnboundMetadata<M> function : functions) { final Metadata metadata = function.bind(rel, mq); if (metadata != null) { metadataList.add(metadata);
public <M extends Metadata> UnboundMetadata<M> apply( Class<? extends RelNode> relClass, final Class<? extends M> metadataClass) { return (rel, mq) -> { if (!(rel instanceof HepRelVertex)) { return null; } HepRelVertex vertex = (HepRelVertex) rel; final RelNode rel2 = vertex.getCurrentRel(); UnboundMetadata<M> function = rel.getCluster().getMetadataProvider().apply(rel2.getClass(), metadataClass); return function.bind(rel2, mq); }; }
public <M extends Metadata> UnboundMetadata<M> apply( Class<? extends RelNode> relClass, final Class<? extends M> metadataClass) { return (rel, mq) -> { if (!(rel instanceof HepRelVertex)) { return null; } HepRelVertex vertex = (HepRelVertex) rel; final RelNode rel2 = vertex.getCurrentRel(); UnboundMetadata<M> function = rel.getCluster().getMetadataProvider().apply(rel2.getClass(), metadataClass); return function.bind(rel2, mq); }; }
provider.apply(subset.best.getClass(), metadataClass); if (function != null) { final M metadata = function.bind(subset.best, mq); if (metadata != null) { return metadata; provider.apply(relCandidate.getClass(), metadataClass); if (function != null) { final M result = function.bind(relCandidate, mq); if (result != null) { return result;
provider.apply(subset.best.getClass(), metadataClass); if (function != null) { final M metadata = function.bind(subset.best, mq); if (metadata != null) { return metadata; provider.apply(relCandidate.getClass(), metadataClass); if (function != null) { final M result = function.bind(relCandidate, mq); if (result != null) { return result;