private synchronized CatalogMetadata getTransactionCatalogMetadata(ConnectorId connectorId)
{
checkOpenTransaction();
CatalogMetadata catalogMetadata = this.catalogMetadata.get(connectorId);
if (catalogMetadata == null) {
Catalog catalog = catalogsByConnectorId.get(connectorId);
verify(catalog != null, "Unknown connectorId: %s", connectorId);
ConnectorTransactionMetadata metadata = createConnectorTransactionMetadata(catalog.getConnectorId(), catalog);
ConnectorTransactionMetadata informationSchema = createConnectorTransactionMetadata(catalog.getInformationSchemaId(), catalog);
ConnectorTransactionMetadata systemTables = createConnectorTransactionMetadata(catalog.getSystemTablesId(), catalog);
catalogMetadata = new CatalogMetadata(
metadata.getConnectorId(), metadata.getConnectorMetadata(), metadata.getTransactionHandle(),
informationSchema.getConnectorId(), informationSchema.getConnectorMetadata(), informationSchema.getTransactionHandle(),
systemTables.getConnectorId(), systemTables.getConnectorMetadata(), systemTables.getTransactionHandle());
this.catalogMetadata.put(catalog.getConnectorId(), catalogMetadata);
this.catalogMetadata.put(catalog.getInformationSchemaId(), catalogMetadata);
this.catalogMetadata.put(catalog.getSystemTablesId(), catalogMetadata);
}
return catalogMetadata;
}