public ConnectorTransactionMetadata(ConnectorId connectorId, Connector connector, ConnectorTransactionHandle transactionHandle) { this.connectorId = requireNonNull(connectorId, "connectorId is null"); this.connector = requireNonNull(connector, "connector is null"); this.transactionHandle = requireNonNull(transactionHandle, "transactionHandle is null"); this.connectorMetadata = connector.getMetadata(transactionHandle); }
splitManager = connector.getSplitManager(); checkState(splitManager != null, "Connector %s does not have a split manager", connectorId); Set<SystemTable> systemTables = connector.getSystemTables(); requireNonNull(systemTables, "Connector %s returned a null system tables set"); this.systemTables = ImmutableSet.copyOf(systemTables); Set<Procedure> procedures = connector.getProcedures(); requireNonNull(procedures, "Connector %s returned a null procedures set"); this.procedures = ImmutableSet.copyOf(procedures); connectorPageSourceProvider = connector.getPageSourceProvider(); requireNonNull(connectorPageSourceProvider, format("Connector %s returned a null page source provider", connectorId)); ConnectorRecordSetProvider connectorRecordSetProvider = null; try { connectorRecordSetProvider = connector.getRecordSetProvider(); requireNonNull(connectorRecordSetProvider, format("Connector %s returned a null record set provider", connectorId)); connectorPageSinkProvider = connector.getPageSinkProvider(); requireNonNull(connectorPageSinkProvider, format("Connector %s returned a null page sink provider", connectorId)); indexProvider = connector.getIndexProvider(); requireNonNull(indexProvider, format("Connector %s returned a null index provider", connectorId)); partitioningProvider = connector.getNodePartitioningProvider(); requireNonNull(partitioningProvider, format("Connector %s returned a null partitioning provider", connectorId)); accessControl = connector.getAccessControl();
private ConnectorTransactionHandle beginTransaction(Connector connector) { if (connector instanceof InternalConnector) { return ((InternalConnector) connector).beginTransaction(transactionId, isolationLevel, readOnly); } else { return connector.beginTransaction(isolationLevel, readOnly); } }
private static void assertCreateConnector(String metastoreUri) { HiveConnectorFactory connectorFactory = new HiveConnectorFactory( "hive-test", HiveConnector.class.getClassLoader(), Optional.empty()); Map<String, String> config = ImmutableMap.<String, String>builder() .put("hive.metastore.uri", metastoreUri) .build(); Connector connector = connectorFactory.create("hive-test", config, new TestingConnectorContext()); ConnectorTransactionHandle transaction = connector.beginTransaction(READ_UNCOMMITTED, true); assertInstanceOf(connector.getMetadata(transaction), ClassLoaderSafeConnectorMetadata.class); assertInstanceOf(connector.getSplitManager(), ClassLoaderSafeConnectorSplitManager.class); assertInstanceOf(connector.getPageSourceProvider(), ConnectorPageSourceProvider.class); connector.commit(transaction); }
@BeforeClass public void setup() throws Exception { EmbeddedCassandra.start(); String keyspace = "test_connector"; createTestTables(EmbeddedCassandra.getSession(), keyspace, DATE); String connectorId = "cassandra-test"; CassandraConnectorFactory connectorFactory = new CassandraConnectorFactory(connectorId); Connector connector = connectorFactory.create(connectorId, ImmutableMap.of( "cassandra.contact-points", EmbeddedCassandra.getHost(), "cassandra.native-protocol-port", Integer.toString(EmbeddedCassandra.getPort())), new TestingConnectorContext()); metadata = connector.getMetadata(CassandraTransactionHandle.INSTANCE); assertInstanceOf(metadata, CassandraMetadata.class); splitManager = connector.getSplitManager(); assertInstanceOf(splitManager, CassandraSplitManager.class); recordSetProvider = connector.getRecordSetProvider(); assertInstanceOf(recordSetProvider, CassandraRecordSetProvider.class); database = keyspace; table = new SchemaTableName(database, TABLE_ALL_TYPES.toLowerCase(ENGLISH)); tableUnpartitioned = new SchemaTableName(database, "presto_test_unpartitioned"); invalidTable = new SchemaTableName(database, "totally_invalid_table_name"); }
private Catalog createTestingCatalog(String catalogName, ConnectorId connectorId) { ConnectorId systemId = createSystemTablesConnectorId(connectorId); Connector connector = createTestingConnector(); InternalNodeManager nodeManager = new InMemoryNodeManager(); return new Catalog( catalogName, connectorId, connector, createInformationSchemaConnectorId(connectorId), new InformationSchemaConnector(catalogName, nodeManager, metadata, accessControl), systemId, new SystemConnector( systemId, nodeManager, connector.getSystemTables(), transactionId -> transactionManager.getConnectorTransaction(transactionId, connectorId))); }
public void commit() { if (finished.compareAndSet(false, true)) { connector.commit(transactionHandle); } }
metadata.getAnalyzePropertyManager().addProperties(TPCH_CONNECTOR_ID, tpchTestCatalog.getConnector(TPCH_CONNECTOR_ID).getAnalyzeProperties());
@PreDestroy public synchronized void stop() { if (stopped.getAndSet(true)) { return; } for (Map.Entry<ConnectorId, MaterializedConnector> entry : connectors.entrySet()) { Connector connector = entry.getValue().getConnector(); try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(connector.getClass().getClassLoader())) { connector.shutdown(); } catch (Throwable t) { log.error(t, "Error shutting down connector: %s", entry.getKey()); } } }
private static void assertCreateConnector(String metastoreUri) { HiveConnectorFactory connectorFactory = new HiveConnectorFactory( "hive-test", HiveConnector.class.getClassLoader(), Optional.empty()); Map<String, String> config = ImmutableMap.<String, String>builder() .put("hive.metastore.uri", metastoreUri) .build(); Connector connector = connectorFactory.create("hive-test", config, new TestingConnectorContext()); ConnectorTransactionHandle transaction = connector.beginTransaction(READ_UNCOMMITTED, true); assertInstanceOf(connector.getMetadata(transaction), ClassLoaderSafeConnectorMetadata.class); assertInstanceOf(connector.getSplitManager(), ClassLoaderSafeConnectorSplitManager.class); assertInstanceOf(connector.getPageSourceProvider(), ConnectorPageSourceProvider.class); connector.commit(transaction); }
private Catalog createTestingCatalog(String catalogName, ConnectorId connectorId) { ConnectorId systemId = createSystemTablesConnectorId(connectorId); Connector connector = createTestingConnector(); InternalNodeManager nodeManager = new InMemoryNodeManager(); return new Catalog( catalogName, connectorId, connector, createInformationSchemaConnectorId(connectorId), new InformationSchemaConnector(catalogName, nodeManager, metadata, accessControl), systemId, new SystemConnector( systemId, nodeManager, connector.getSystemTables(), transactionId -> transactionManager.getConnectorTransaction(transactionId, connectorId))); }
public void commit() { if (finished.compareAndSet(false, true)) { connector.commit(transactionHandle); } }
metadata.getAnalyzePropertyManager().addProperties(TPCH_CONNECTOR_ID, tpchTestCatalog.getConnector(TPCH_CONNECTOR_ID).getAnalyzeProperties());
@PreDestroy public synchronized void stop() { if (stopped.getAndSet(true)) { return; } for (Map.Entry<ConnectorId, MaterializedConnector> entry : connectors.entrySet()) { Connector connector = entry.getValue().getConnector(); try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(connector.getClass().getClassLoader())) { connector.shutdown(); } catch (Throwable t) { log.error(t, "Error shutting down connector: %s", entry.getKey()); } } }
splitManager = connector.getSplitManager(); checkState(splitManager != null, "Connector %s does not have a split manager", connectorId); Set<SystemTable> systemTables = connector.getSystemTables(); requireNonNull(systemTables, "Connector %s returned a null system tables set"); this.systemTables = ImmutableSet.copyOf(systemTables); Set<Procedure> procedures = connector.getProcedures(); requireNonNull(procedures, "Connector %s returned a null procedures set"); this.procedures = ImmutableSet.copyOf(procedures); connectorPageSourceProvider = connector.getPageSourceProvider(); requireNonNull(connectorPageSourceProvider, format("Connector %s returned a null page source provider", connectorId)); ConnectorRecordSetProvider connectorRecordSetProvider = null; try { connectorRecordSetProvider = connector.getRecordSetProvider(); requireNonNull(connectorRecordSetProvider, format("Connector %s returned a null record set provider", connectorId)); connectorPageSinkProvider = connector.getPageSinkProvider(); requireNonNull(connectorPageSinkProvider, format("Connector %s returned a null page sink provider", connectorId)); indexProvider = connector.getIndexProvider(); requireNonNull(indexProvider, format("Connector %s returned a null index provider", connectorId)); partitioningProvider = connector.getNodePartitioningProvider(); requireNonNull(partitioningProvider, format("Connector %s returned a null partitioning provider", connectorId)); accessControl = connector.getAccessControl();
private static ConnectorId registerBogusConnector(CatalogManager catalogManager, TransactionManager transactionManager, AccessControl accessControl, String catalogName) { ConnectorId connectorId = new ConnectorId(catalogName); Connector connector = new TpchConnectorFactory().create(catalogName, ImmutableMap.of(), new TestingConnectorContext()); InMemoryNodeManager nodeManager = new InMemoryNodeManager(); MetadataManager metadata = MetadataManager.createTestMetadataManager(catalogManager); ConnectorId systemId = createSystemTablesConnectorId(connectorId); catalogManager.registerCatalog(new Catalog( catalogName, connectorId, connector, createInformationSchemaConnectorId(connectorId), new InformationSchemaConnector(catalogName, nodeManager, metadata, accessControl), systemId, new SystemConnector( systemId, nodeManager, connector.getSystemTables(), transactionId -> transactionManager.getConnectorTransaction(transactionId, connectorId)))); return connectorId; }
public ConnectorTransactionMetadata(ConnectorId connectorId, Connector connector, ConnectorTransactionHandle transactionHandle) { this.connectorId = requireNonNull(connectorId, "connectorId is null"); this.connector = requireNonNull(connector, "connector is null"); this.transactionHandle = requireNonNull(transactionHandle, "transactionHandle is null"); this.connectorMetadata = connector.getMetadata(transactionHandle); }
private ConnectorTransactionHandle beginTransaction(Connector connector) { if (connector instanceof InternalConnector) { return ((InternalConnector) connector).beginTransaction(transactionId, isolationLevel, readOnly); } else { return connector.beginTransaction(isolationLevel, readOnly); } }
@Test public void testCreateConnector() { MongoPlugin plugin = new MongoPlugin(); ConnectorFactory factory = getOnlyElement(plugin.getConnectorFactories()); Connector connector = factory.create("test", ImmutableMap.of("mongodb.seeds", seed), new TestingConnectorContext()); Type type = getOnlyElement(plugin.getTypes()); assertEquals(type, OBJECT_ID); connector.shutdown(); }
private static ConnectorId registerBogusConnector(CatalogManager catalogManager, TransactionManager transactionManager, AccessControl accessControl, String catalogName) { ConnectorId connectorId = new ConnectorId(catalogName); Connector connector = new TpchConnectorFactory().create(catalogName, ImmutableMap.of(), new TestingConnectorContext()); InMemoryNodeManager nodeManager = new InMemoryNodeManager(); MetadataManager metadata = MetadataManager.createTestMetadataManager(catalogManager); ConnectorId systemId = createSystemTablesConnectorId(connectorId); catalogManager.registerCatalog(new Catalog( catalogName, connectorId, connector, createInformationSchemaConnectorId(connectorId), new InformationSchemaConnector(catalogName, nodeManager, metadata, accessControl), systemId, new SystemConnector( systemId, nodeManager, connector.getSystemTables(), transactionId -> transactionManager.getConnectorTransaction(transactionId, connectorId)))); return connectorId; }