public <M extends Metadata> Multimap<Method, MetadataHandler<M>> handlers( MetadataDef<M> def) { return underlyingProvider.handlers(def); }
@Override 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 new UnboundMetadata<M>() { @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))); } }; }
@Override public <M extends Metadata> Multimap<Method, MetadataHandler<M>> handlers(MetadataDef<M> def) { return underlyingProvider.handlers(def); }
private static CacheLoader<Pair<Class<RelNode>, Class<Metadata>>, UnboundMetadata<Metadata>> loader(final RelMetadataProvider provider) { return CacheLoader.from(key -> { final UnboundMetadata<Metadata> function = provider.apply(key.left, key.right); // Return DUMMY, not null, so the cache knows to not ask again. return function != null ? function : DUMMY; }); }
public <M extends Metadata> Multimap<Method, MetadataHandler<M>> handlers(MetadataDef<M> def) { return provider.handlers(def); }
private static CacheLoader<Pair<Class<RelNode>, Class<Metadata>>, UnboundMetadata<Metadata>> loader(final RelMetadataProvider provider) { return CacheLoader.from(key -> { final UnboundMetadata<Metadata> function = provider.apply(key.left, key.right); // Return DUMMY, not null, so the cache knows to not ask again. return function != null ? function : DUMMY; }); }
public <M extends Metadata> Multimap<Method, MetadataHandler<M>> handlers( MetadataDef<M> def) { return underlyingProvider.handlers(def); }
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> Multimap<Method, MetadataHandler<M>> handlers(MetadataDef<M> def) { return provider.handlers(def); }
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> Multimap<Method, MetadataHandler<M>> handlers( MetadataDef<M> def) { final ImmutableMultimap.Builder<Method, MetadataHandler<M>> builder = ImmutableMultimap.builder(); for (RelMetadataProvider provider : providers.reverse()) { builder.putAll(provider.handlers(def)); } return builder.build(); }
for (RelMetadataProvider provider : providers) { final UnboundMetadata<M> function = provider.apply(relClass, metadataClass); if (function == null) { continue;
public <M extends Metadata> Multimap<Method, MetadataHandler<M>> handlers( MetadataDef<M> def) { final ImmutableMultimap.Builder<Method, MetadataHandler<M>> builder = ImmutableMultimap.builder(); for (RelMetadataProvider provider : providers.reverse()) { builder.putAll(provider.handlers(def)); } return builder.build(); }
for (RelMetadataProvider provider : providers) { final UnboundMetadata<M> function = provider.apply(relClass, metadataClass); if (function == null) { continue;
.handlers(BuiltInMetadata.ColumnUniqueness.DEF) .get(BuiltInMethod.COLUMN_UNIQUENESS.method) .iterator().next();
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); }; }
.handlers(BuiltInMetadata.ColumnUniqueness.DEF) .get(BuiltInMethod.COLUMN_UNIQUENESS.method) .iterator().next();
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); for (RelNode relCandidate : subset.set.rels) { final UnboundMetadata<M> function = provider.apply(relCandidate.getClass(), metadataClass); if (function != null) { final M result = function.bind(relCandidate, mq);
provider.apply(subset.best.getClass(), metadataClass); if (function != null) { final M metadata = function.bind(subset.best, mq); for (RelNode relCandidate : subset.set.rels) { final UnboundMetadata<M> function = provider.apply(relCandidate.getClass(), metadataClass); if (function != null) { final M result = function.bind(relCandidate, mq);