private Table getRequiredTable(String databaseName, String tableName) { return getTable(databaseName, tableName) .orElseThrow(() -> new TableNotFoundException(new SchemaTableName(databaseName, tableName))); }
private static Object[] tableRow(String catalog, SchemaTableName name, String type) { return new Object[] {catalog, name.getSchemaName(), name.getTableName(), type, null, null, null, null, null, null}; } }
@Override public void checkCanCreateTable(ConnectorTransactionHandle transaction, ConnectorIdentity identity, SchemaTableName tableName) { if (!isDatabaseOwner(identity, tableName.getSchemaName())) { denyCreateTable(tableName.toString()); } }
public static Optional<SchemaTableName> getSourceTable(SchemaTableName tableName) { if (tableName.getTableName().endsWith(COLUMN_RANGES_TABLE_SUFFIX) && !tableName.getTableName().equals(COLUMN_RANGES_TABLE_SUFFIX)) { int tableNameLength = tableName.getTableName().length() - COLUMN_RANGES_TABLE_SUFFIX.length(); return Optional.of(new SchemaTableName( tableName.getSchemaName(), tableName.getTableName().substring(0, tableNameLength))); } return Optional.empty(); }
@Test public void testCreateViewWithReplace() { SchemaTableName test = new SchemaTableName("test", "test_view"); metadata.createView(SESSION, test, "aaa", true); metadata.createView(SESSION, test, "bbb", true); assertEquals(metadata.getViews(SESSION, test.toSchemaTablePrefix()).get(test).getViewData(), "bbb"); }
@Override public List<String> listSchemaNames(ConnectorSession session) { Set<String> schemaNames = new HashSet<>(); for (SchemaTableName schemaTableName : tables.keySet()) { schemaNames.add(schemaTableName.getSchemaName()); } return ImmutableList.copyOf(schemaNames); }
@Override protected ConnectorTableHandle getTableHandle(ConnectorMetadata metadata, SchemaTableName tableName) { if (tableName.getTableName().startsWith(TEMPORARY_TABLE_PREFIX)) { return super.getTableHandle(metadata, tableName); } throw new SkipException("tests using existing tables are not supported"); }
@Test public void testGetTableSchemaOffline() { try (Transaction transaction = newTransaction()) { ConnectorMetadata metadata = transaction.getMetadata(); Map<SchemaTableName, List<ColumnMetadata>> columns = metadata.listTableColumns(newSession(), tableOffline.toSchemaTablePrefix()); assertEquals(columns.size(), 1); Map<String, ColumnMetadata> map = uniqueIndex(getOnlyElement(columns.values()), ColumnMetadata::getName); assertPrimitiveField(map, "t_string", createUnboundedVarcharType(), false); } }
public static SchemaTableName getSourceTableNameForPartitionsTable(SchemaTableName tableName) { checkArgument(isPartitionsSystemTable(tableName), "not a partitions table name"); return new SchemaTableName( tableName.getSchemaName(), tableName.getTableName().substring(0, tableName.getTableName().length() - PARTITIONS_TABLE_SUFFIX.length())); } }
@Test public void testCreateViewWithReplace() { SchemaTableName test = new SchemaTableName("test", "test_view"); metadata.createSchema(SESSION, "test", ImmutableMap.of()); metadata.createView(SESSION, test, "aaa", true); metadata.createView(SESSION, test, "bbb", true); assertEquals(metadata.getViews(SESSION, test.toSchemaTablePrefix()).get(test).getViewData(), "bbb"); }
@Override public List<SchemaTableName> listViews(ConnectorSession session, Optional<String> schemaName) { ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder(); for (SchemaTableName viewName : views.keySet()) { if (schemaName.map(viewName.getSchemaName()::equals).orElse(true)) { builder.add(viewName); } } return builder.build(); }
@Test public void testGetTableSchemaOffline() { try (Transaction transaction = newTransaction()) { ConnectorMetadata metadata = transaction.getMetadata(); Map<SchemaTableName, List<ColumnMetadata>> columns = metadata.listTableColumns(newSession(), tableOffline.toSchemaTablePrefix()); assertEquals(columns.size(), 1); Map<String, ColumnMetadata> map = uniqueIndex(getOnlyElement(columns.values()), ColumnMetadata::getName); assertPrimitiveField(map, "t_string", createUnboundedVarcharType(), false); } }
public static Function<SchemaTableName, QualifiedObjectName> convertFromSchemaTableName(String catalogName) { return input -> new QualifiedObjectName(catalogName, input.getSchemaName(), input.getTableName()); } }
public void addProcedures(ConnectorId connectorId, Collection<Procedure> procedures) { requireNonNull(connectorId, "connectorId is null"); requireNonNull(procedures, "procedures is null"); procedures.forEach(this::validateProcedure); Map<SchemaTableName, Procedure> proceduresByName = Maps.uniqueIndex( procedures, procedure -> new SchemaTableName(procedure.getSchema(), procedure.getName())); checkState(connectorProcedures.putIfAbsent(connectorId, proceduresByName) == null, "Procedures already registered for connector: %s", connectorId); }
@Override public void checkCanCreateView(ConnectorTransactionHandle transaction, ConnectorIdentity identity, SchemaTableName viewName) { if (!isDatabaseOwner(identity, viewName.getSchemaName())) { denyCreateView(viewName.toString()); } }
@Override public List<String> listSchemaNames(ConnectorSession session) { return tables.listSystemTables(session).stream() .map(table -> table.getTableMetadata().getTable().getSchemaName()) .distinct() .collect(toImmutableList()); }
@Override public String toString() { return schemaTableName.toString() + session.map(value -> ", constraint = " + tupleDomain.toString(value)).orElse(""); } }
@Override public ConnectorTableHandle getTableHandle(ConnectorSession connectorSession, SchemaTableName tableName) { if (!TABLES.containsKey(tableName)) { return null; } return new InformationSchemaTableHandle(catalogName, tableName.getSchemaName(), tableName.getTableName()); }