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)); } } }
@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)); }
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");
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)); } } }
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");