@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return KafkaTransactionHandle.INSTANCE; }
public static void checkConnectorSupports(IsolationLevel supportedLevel, IsolationLevel requestedLevel) { if (!supportedLevel.meetsRequirementOf(requestedLevel)) { throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", supportedLevel, requestedLevel)); } } }
@Override public String toString() { return name().replace('_', ' '); }
@Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession session, TupleDomain<Integer> constraint) { Builder table = InMemoryRecordSet.builder(transactionsTable); for (TransactionInfo info : transactionManager.getAllTransactionInfos()) { table.addRow( info.getTransactionId().toString(), info.getIsolationLevel().toString(), info.isReadOnly(), info.isAutoCommitContext(), info.getCreateTime().getMillis(), (long) info.getIdleTime().getValue(TimeUnit.SECONDS), info.getWrittenConnectorId().map(ConnectorId::getCatalogName).orElse(null), createStringsBlock(info.getConnectorIds())); } return table.build().cursor(); }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return KuduTransactionHandle.INSTANCE; }
@Test public void testMeetsRequirementOf() { assertTrue(READ_UNCOMMITTED.meetsRequirementOf(READ_UNCOMMITTED)); assertFalse(READ_UNCOMMITTED.meetsRequirementOf(READ_COMMITTED)); assertFalse(READ_UNCOMMITTED.meetsRequirementOf(REPEATABLE_READ)); assertFalse(READ_UNCOMMITTED.meetsRequirementOf(SERIALIZABLE)); assertTrue(READ_COMMITTED.meetsRequirementOf(READ_UNCOMMITTED)); assertTrue(READ_COMMITTED.meetsRequirementOf(READ_COMMITTED)); assertFalse(READ_COMMITTED.meetsRequirementOf(REPEATABLE_READ)); assertFalse(READ_COMMITTED.meetsRequirementOf(SERIALIZABLE)); assertTrue(REPEATABLE_READ.meetsRequirementOf(READ_UNCOMMITTED)); assertTrue(REPEATABLE_READ.meetsRequirementOf(READ_COMMITTED)); assertTrue(REPEATABLE_READ.meetsRequirementOf(REPEATABLE_READ)); assertFalse(REPEATABLE_READ.meetsRequirementOf(SERIALIZABLE)); assertTrue(SERIALIZABLE.meetsRequirementOf(READ_UNCOMMITTED)); assertTrue(SERIALIZABLE.meetsRequirementOf(READ_COMMITTED)); assertTrue(SERIALIZABLE.meetsRequirementOf(REPEATABLE_READ)); assertTrue(SERIALIZABLE.meetsRequirementOf(SERIALIZABLE)); }
@Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession session, TupleDomain<Integer> constraint) { Builder table = InMemoryRecordSet.builder(transactionsTable); for (TransactionInfo info : transactionManager.getAllTransactionInfos()) { table.addRow( info.getTransactionId().toString(), info.getIsolationLevel().toString(), info.isReadOnly(), info.isAutoCommitContext(), info.getCreateTime().getMillis(), (long) info.getIdleTime().getValue(TimeUnit.SECONDS), info.getWrittenConnectorId().orElse(null), createStringsBlock(info.getConnectorIds())); } return table.build().cursor(); }
@Override public String toString() { return name().replace('_', ' '); }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return LocalFileTransactionHandle.INSTANCE; }
checkState(transactionInfo.getIsolationLevel().meetsRequirementOf(isolationLevel), "Cannot provide %s isolation with existing transaction isolation: %s", isolationLevel, transactionInfo.getIsolationLevel()); checkState(!transactionInfo.isReadOnly() || readOnly, "Cannot provide read-write semantics with existing read-only transaction"); checkState(!transactionInfo.isAutoCommitContext() && !singleStatement, "Cannot combine auto commit transactions");
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return ElasticsearchTransactionHandle.INSTANCE; }
public static void checkConnectorSupports(IsolationLevel supportedLevel, IsolationLevel requestedLevel) { if (!supportedLevel.meetsRequirementOf(requestedLevel)) { throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", supportedLevel, requestedLevel)); } } }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return JmxTransactionHandle.INSTANCE; }
checkState(transactionInfo.getIsolationLevel().meetsRequirementOf(isolationLevel), "Cannot provide %s isolation with existing transaction isolation: %s", isolationLevel, transactionInfo.getIsolationLevel()); checkState(!transactionInfo.isReadOnly() || readOnly, "Cannot provide read-write semantics with existing read-only transaction"); checkState(!transactionInfo.isAutoCommitContext() && !singleStatement, "Cannot combine auto commit transactions");
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); return RedisTransactionHandle.INSTANCE; }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_UNCOMMITTED, isolationLevel); return CassandraTransactionHandle.INSTANCE; }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_UNCOMMITTED, isolationLevel); MongoTransactionHandle transaction = new MongoTransactionHandle(); transactions.put(transaction, new MongoMetadata(mongoSession)); return transaction; }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_COMMITTED, isolationLevel); JdbcTransactionHandle transaction = new JdbcTransactionHandle(); transactions.put(transaction, jdbcMetadataFactory.create()); return transaction; }
@Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { checkConnectorSupports(READ_UNCOMMITTED, isolationLevel); ConnectorTransactionHandle transaction = new AccumuloTransactionHandle(); transactions.put(transaction, metadataFactory.create()); return transaction; }