package com.facebook.presto.sql.planner; import com.facebook.presto.Session; import com.facebook.presto.connector.ConnectorId; import com.facebook.presto.metadata.FunctionRegistry; import com.facebook.presto.metadata.InsertTableHandle; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.metadata.NewTableLayout; import com.facebook.presto.metadata.OutputTableHandle; import com.facebook.presto.metadata.ProcedureRegistry; import com.facebook.presto.metadata.QualifiedObjectName; import com.facebook.presto.metadata.QualifiedTablePrefix; import com.facebook.presto.metadata.ResolvedIndex; import com.facebook.presto.metadata.SchemaPropertyManager; import com.facebook.presto.metadata.SessionPropertyManager; import com.facebook.presto.metadata.SqlFunction; import com.facebook.presto.metadata.TableHandle; import com.facebook.presto.metadata.TableLayout; import com.facebook.presto.metadata.TableLayoutHandle; import com.facebook.presto.metadata.TableLayoutResult; import com.facebook.presto.metadata.TableMetadata; import com.facebook.presto.metadata.TablePropertyManager; import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.spi.CatalogSchemaName; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnIdentity; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.Constraint; import com.facebook.presto.spi.QueryId; import com.facebook.presto.spi.TableIdentity; import com.facebook.presto.spi.block.BlockEncodingSerde; import com.facebook.presto.spi.predicate.TupleDomain; import com.facebook.presto.spi.security.Privilege; import com.facebook.presto.spi.type.Type; import com.facebook.presto.spi.type.TypeManager; import com.facebook.presto.spi.type.TypeSignature; import com.facebook.presto.sql.analyzer.Analysis; import com.facebook.presto.sql.parser.SqlParser; import com.facebook.presto.sql.tree.QualifiedName; import com.facebook.presto.sql.tree.Query; import com.facebook.presto.sql.tree.Statement; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import io.airlift.slice.Slice; import org.testng.annotations.Test; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.OptionalLong; import java.util.Set; import static com.facebook.presto.spi.type.BigintType.BIGINT; public class TestFuturistic { @Test(enabled = false) public void testName() throws Exception { String s = "select count(*) from test where ali = 5"; Statement statement = new SqlParser().createStatement(s); Analysis analysis = new Analysis(statement, ImmutableList.of(), false); Session build = Session.builder(new SessionPropertyManager()) .setQueryId(QueryId.valueOf("test")) .setCatalog("test") .setCatalog("test") .setCatalog("test") .build(); QueryPlanner queryPlanner = new QueryPlanner(analysis, new SymbolAllocator(), new PlanNodeIdAllocator(), new MetadataSimulator(), build); RelationPlan plan = queryPlanner.plan((Query) statement); EffectivePredicateExtractor.extract(plan.getRoot(), ImmutableMap.of(new Symbol("ali"), BIGINT)); } private static class MetadataSimulator implements Metadata { @Override public void verifyComparableOrderableContract() { } @Override public Type getType(TypeSignature typeSignature) { return null; } @Override public boolean isAggregationFunction(QualifiedName qualifiedName) { return false; } @Override public List<SqlFunction> listFunctions() { return null; } @Override public void addFunctions(List<? extends SqlFunction> list) { } @Override public boolean schemaExists(Session session, CatalogSchemaName catalogSchemaName) { return false; } @Override public List<String> listSchemaNames(Session session, String s) { return null; } @Override public Optional<TableHandle> getTableHandle(Session session, QualifiedObjectName qualifiedObjectName) { return null; } @Override public List<TableLayoutResult> getLayouts(Session session, TableHandle tableHandle, Constraint<ColumnHandle> constraint, Optional<Set<ColumnHandle>> optional) { return null; } @Override public TableLayout getLayout(Session session, TableLayoutHandle tableLayoutHandle) { return null; } @Override public Optional<Object> getInfo(Session session, TableLayoutHandle tableLayoutHandle) { return null; } @Override public TableMetadata getTableMetadata(Session session, TableHandle tableHandle) { return null; } @Override public List<QualifiedObjectName> listTables(Session session, QualifiedTablePrefix qualifiedTablePrefix) { return null; } @Override public Map<String, ColumnHandle> getColumnHandles(Session session, TableHandle tableHandle) { return null; } @Override public ColumnMetadata getColumnMetadata(Session session, TableHandle tableHandle, ColumnHandle columnHandle) { return null; } @Override public Map<QualifiedObjectName, List<ColumnMetadata>> listTableColumns(Session session, QualifiedTablePrefix qualifiedTablePrefix) { return null; } @Override public void createSchema(Session session, CatalogSchemaName catalogSchemaName, Map<String, Object> map) { } @Override public void dropSchema(Session session, CatalogSchemaName catalogSchemaName) { } @Override public void renameSchema(Session session, CatalogSchemaName catalogSchemaName, String s) { } @Override public void createTable(Session session, String s, ConnectorTableMetadata connectorTableMetadata) { } @Override public void renameTable(Session session, TableHandle tableHandle, QualifiedObjectName qualifiedObjectName) { } @Override public void renameColumn(Session session, TableHandle tableHandle, ColumnHandle columnHandle, String s) { } @Override public void addColumn(Session session, TableHandle tableHandle, ColumnMetadata columnMetadata) { } @Override public void dropTable(Session session, TableHandle tableHandle) { } @Override public TableIdentity getTableIdentity(Session session, TableHandle tableHandle) { return null; } @Override public TableIdentity deserializeTableIdentity(Session session, String s, byte[] bytes) { return null; } @Override public ColumnIdentity getColumnIdentity(Session session, TableHandle tableHandle, ColumnHandle columnHandle) { return null; } @Override public ColumnIdentity deserializeColumnIdentity(Session session, String s, byte[] bytes) { return null; } @Override public Optional<NewTableLayout> getNewTableLayout(Session session, String s, ConnectorTableMetadata connectorTableMetadata) { return null; } @Override public OutputTableHandle beginCreateTable(Session session, String s, ConnectorTableMetadata connectorTableMetadata, Optional<NewTableLayout> optional) { return null; } @Override public void finishCreateTable(Session session, OutputTableHandle outputTableHandle, Collection<Slice> collection) { } @Override public Optional<NewTableLayout> getInsertLayout(Session session, TableHandle tableHandle) { return null; } @Override public InsertTableHandle beginInsert(Session session, TableHandle tableHandle) { return null; } @Override public void finishInsert(Session session, InsertTableHandle insertTableHandle, Collection<Slice> collection) { } @Override public ColumnHandle getUpdateRowIdColumnHandle(Session session, TableHandle tableHandle) { return null; } @Override public boolean supportsMetadataDelete(Session session, TableHandle tableHandle, TableLayoutHandle tableLayoutHandle) { return false; } @Override public OptionalLong metadataDelete(Session session, TableHandle tableHandle, TableLayoutHandle tableLayoutHandle) { return null; } @Override public TableHandle beginDelete(Session session, TableHandle tableHandle) { return null; } @Override public void finishDelete(Session session, TableHandle tableHandle, Collection<Slice> collection) { } @Override public Optional<ConnectorId> getCatalogHandle(Session session, String s) { return null; } @Override public Map<String, ConnectorId> getCatalogNames(Session session) { return null; } @Override public List<QualifiedObjectName> listViews(Session session, QualifiedTablePrefix qualifiedTablePrefix) { return null; } @Override public Map<QualifiedObjectName, ViewDefinition> getViews(Session session, QualifiedTablePrefix qualifiedTablePrefix) { return null; } @Override public Optional<ViewDefinition> getView(Session session, QualifiedObjectName qualifiedObjectName) { return null; } @Override public void createView(Session session, QualifiedObjectName qualifiedObjectName, String s, boolean b) { } @Override public void dropView(Session session, QualifiedObjectName qualifiedObjectName) { } @Override public Optional<ResolvedIndex> resolveIndex(Session session, TableHandle tableHandle, Set<ColumnHandle> set, Set<ColumnHandle> set1, TupleDomain<ColumnHandle> tupleDomain) { return null; } @Override public void grantTablePrivileges(Session session, QualifiedObjectName qualifiedObjectName, Set<Privilege> set, String s, boolean b) { } @Override public void revokeTablePrivileges(Session session, QualifiedObjectName qualifiedObjectName, Set<Privilege> set, String s, boolean b) { } @Override public FunctionRegistry getFunctionRegistry() { return null; } @Override public ProcedureRegistry getProcedureRegistry() { return null; } @Override public TypeManager getTypeManager() { return null; } @Override public BlockEncodingSerde getBlockEncodingSerde() { return null; } @Override public SessionPropertyManager getSessionPropertyManager() { return null; } @Override public SchemaPropertyManager getSchemaPropertyManager() { return null; } @Override public TablePropertyManager getTablePropertyManager() { return null; } } }