private ConnectorMetadata getMetadataForWrite(Session session, ConnectorId connectorId) { return getCatalogMetadataForWrite(session, connectorId).getMetadata(); }
@Override public void createTable(Session session, String catalogName, ConnectorTableMetadata tableMetadata, boolean ignoreExisting) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.createTable(session.toConnectorSession(connectorId), tableMetadata, ignoreExisting); }
@Override public TableStatisticsMetadata getStatisticsCollectionMetadata(Session session, String catalogName, ConnectorTableMetadata tableMetadata) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorMetadata metadata = catalogMetadata.getMetadata(); ConnectorId connectorId = catalogMetadata.getConnectorId(); return metadata.getStatisticsCollectionMetadata(session.toConnectorSession(connectorId), tableMetadata); }
@Override public Optional<NewTableLayout> getNewTableLayout(Session session, String catalogName, ConnectorTableMetadata tableMetadata) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); ConnectorTransactionHandle transactionHandle = catalogMetadata.getTransactionHandleFor(connectorId); ConnectorSession connectorSession = session.toConnectorSession(connectorId); return metadata.getNewTableLayout(connectorSession, tableMetadata) .map(layout -> new NewTableLayout(connectorId, transactionHandle, layout)); }
@Override public OutputTableHandle beginCreateTable(Session session, String catalogName, ConnectorTableMetadata tableMetadata, Optional<NewTableLayout> layout) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); ConnectorTransactionHandle transactionHandle = catalogMetadata.getTransactionHandleFor(connectorId); ConnectorSession connectorSession = session.toConnectorSession(connectorId); ConnectorOutputTableHandle handle = metadata.beginCreateTable(connectorSession, tableMetadata, layout.map(NewTableLayout::getLayout)); return new OutputTableHandle(connectorId, transactionHandle, handle); }
@Override public Optional<NewTableLayout> getInsertLayout(Session session, TableHandle table) { ConnectorId connectorId = table.getConnectorId(); CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, connectorId); ConnectorMetadata metadata = catalogMetadata.getMetadata(); return metadata.getInsertLayout(session.toConnectorSession(connectorId), table.getConnectorHandle()) .map(layout -> new NewTableLayout(connectorId, catalogMetadata.getTransactionHandleFor(connectorId), layout)); }
@Override public void dropSchema(Session session, CatalogSchemaName schema) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, schema.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.dropSchema(session.toConnectorSession(connectorId), schema.getSchemaName()); }
@Override public void createView(Session session, QualifiedObjectName viewName, String viewData, boolean replace) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, viewName.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.createView(session.toConnectorSession(connectorId), viewName.asSchemaTableName(), viewData, replace); }
@Override public void grantTablePrivileges(Session session, QualifiedObjectName tableName, Set<Privilege> privileges, String grantee, boolean grantOption) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, tableName.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.grantTablePrivileges(session.toConnectorSession(connectorId), tableName.asSchemaTableName(), privileges, grantee, grantOption); }
@Override public void createSchema(Session session, CatalogSchemaName schema, Map<String, Object> properties) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, schema.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.createSchema(session.toConnectorSession(connectorId), schema.getSchemaName(), properties); }
@Override public void renameSchema(Session session, CatalogSchemaName source, String target) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, source.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.renameSchema(session.toConnectorSession(connectorId), source.getSchemaName(), target); }
@Override public void dropView(Session session, QualifiedObjectName viewName) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, viewName.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.dropView(session.toConnectorSession(connectorId), viewName.asSchemaTableName()); }
@Override public void revokeTablePrivileges(Session session, QualifiedObjectName tableName, Set<Privilege> privileges, String grantee, boolean grantOption) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, tableName.getCatalogName()); ConnectorId connectorId = catalogMetadata.getConnectorId(); ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.revokeTablePrivileges(session.toConnectorSession(connectorId), tableName.asSchemaTableName(), privileges, grantee, grantOption); }
@Override public InsertTableHandle beginInsert(Session session, TableHandle tableHandle) { ConnectorId connectorId = tableHandle.getConnectorId(); CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, connectorId); ConnectorMetadata metadata = catalogMetadata.getMetadata(); ConnectorTransactionHandle transactionHandle = catalogMetadata.getTransactionHandleFor(connectorId); ConnectorInsertTableHandle handle = metadata.beginInsert(session.toConnectorSession(connectorId), tableHandle.getConnectorHandle()); return new InsertTableHandle(tableHandle.getConnectorId(), transactionHandle, handle); }
@Override public void renameTable(Session session, TableHandle tableHandle, QualifiedObjectName newTableName) { String catalogName = newTableName.getCatalogName(); CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorId connectorId = catalogMetadata.getConnectorId(); if (!tableHandle.getConnectorId().equals(connectorId)) { throw new PrestoException(SYNTAX_ERROR, "Cannot rename tables across catalogs"); } ConnectorMetadata metadata = catalogMetadata.getMetadata(); metadata.renameTable(session.toConnectorSession(connectorId), tableHandle.getConnectorHandle(), newTableName.asSchemaTableName()); }