Skip to content

Commit c33661f

Browse files
committed
Fix
1 parent 629633b commit c33661f

9 files changed

+29
-385
lines changed

core/src/integration-test/java/com/scalar/db/storage/jdbc/ConsensusCommitAdminImportTableWithMetadataDecouplingIntegrationTestWithJdbcDatabase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class ConsensusCommitAdminImportTableWithMetadataDecouplingIntegrationTes
2727
protected Properties getProps(String testName) {
2828
Properties properties = JdbcEnv.getProperties(testName);
2929

30-
// Set the isolation level for consistency reads
30+
// Set the isolation level for consistency reads for virtual tables
3131
RdbEngineStrategy rdbEngine =
3232
RdbEngineFactory.create(new JdbcConfig(new DatabaseConfig(properties)));
3333
properties.setProperty(

core/src/integration-test/java/com/scalar/db/storage/jdbc/ConsensusCommitImportTableWithMetadataDecouplingIntegrationTestWithJdbcDatabase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class ConsensusCommitImportTableWithMetadataDecouplingIntegrationTestWith
1414
protected Properties getProperties(String testName) {
1515
Properties properties = ConsensusCommitJdbcEnv.getProperties(testName);
1616

17-
// Set the isolation level for consistency reads
17+
// Set the isolation level for consistency reads for virtual tables
1818
RdbEngineStrategy rdbEngine =
1919
RdbEngineFactory.create(new JdbcConfig(new DatabaseConfig(properties)));
2020
properties.setProperty(

core/src/integration-test/java/com/scalar/db/storage/jdbc/ConsensusCommitSpecificWithMetadataDecouplingIntegrationTestWithJdbcDatabase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class ConsensusCommitSpecificWithMetadataDecouplingIntegrationTestWithJdb
1313
protected Properties getProperties(String testName) {
1414
Properties properties = ConsensusCommitJdbcEnv.getProperties(testName);
1515

16-
// Set the isolation level for consistency reads
16+
// Set the isolation level for consistency reads for virtual tables
1717
RdbEngineStrategy rdbEngine =
1818
RdbEngineFactory.create(new JdbcConfig(new DatabaseConfig(properties)));
1919
properties.setProperty(

core/src/integration-test/java/com/scalar/db/storage/jdbc/ConsensusCommitWithMetadataDecouplingIntegrationTestWithJdbcDatabase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class ConsensusCommitWithMetadataDecouplingIntegrationTestWithJdbcDatabas
1313
protected Properties getProps(String testName) {
1414
Properties properties = ConsensusCommitJdbcEnv.getProperties(testName);
1515

16-
// Set the isolation level for consistency reads
16+
// Set the isolation level for consistency reads for virtual tables
1717
RdbEngineStrategy rdbEngine =
1818
RdbEngineFactory.create(new JdbcConfig(new DatabaseConfig(properties)));
1919
properties.setProperty(

core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcSchemaLoaderImportWithMetadataDecouplingIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protected Properties getProperties(String testName) {
3232
rdbEngine = RdbEngineFactory.create(config);
3333
testUtils = new JdbcAdminImportTestUtils(properties);
3434

35-
// Set the isolation level for consistency reads
35+
// Set the isolation level for consistency reads for virtual tables
3636
properties.setProperty(
3737
JdbcConfig.ISOLATION_LEVEL,
3838
JdbcTestUtils.getIsolationLevel(

core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcSchemaLoaderWithMetadataDecouplingIntegrationTest.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ protected Properties getProperties(String testName) {
2020
JdbcConfig config = new JdbcConfig(new DatabaseConfig(properties));
2121
rdbEngine = RdbEngineFactory.create(config);
2222

23-
// Set the isolation level for consistency reads
23+
// Set the isolation level for consistency reads for virtual tables
2424
properties.setProperty(
2525
JdbcConfig.ISOLATION_LEVEL,
2626
JdbcTestUtils.getIsolationLevel(
@@ -30,14 +30,6 @@ protected Properties getProperties(String testName) {
3030
return properties;
3131
}
3232

33-
@Override
34-
protected void initialize(String testName) throws Exception {
35-
super.initialize(testName);
36-
Properties properties = getProperties(testName);
37-
JdbcConfig config = new JdbcConfig(new DatabaseConfig(properties));
38-
rdbEngine = RdbEngineFactory.create(config);
39-
}
40-
4133
@Override
4234
protected AdminTestUtils getAdminTestUtils(String testName) {
4335
return new JdbcAdminTestUtils(getProperties(testName));

core/src/main/java/com/scalar/db/storage/jdbc/JdbcDatabase.java

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -391,23 +391,10 @@ private List<Put> dividePutForSourceTables(Put put, VirtualTableInfo virtualTabl
391391
}
392392
}
393393

394-
// Check if all right expressions are IS_NULL
395-
boolean allRightConditionsAreIsNull = false;
396-
if (!rightExpressions.isEmpty()) {
397-
allRightConditionsAreIsNull =
398-
rightExpressions.stream()
399-
.allMatch(e -> e.getOperator() == ConditionalExpression.Operator.IS_NULL);
400-
}
401-
402394
if (!leftExpressions.isEmpty()) {
403395
putBuilderForLeftSourceTable.condition(ConditionBuilder.putIf(leftExpressions));
404396
}
405-
if (virtualTableInfo.getJoinType() == VirtualTableJoinType.LEFT_OUTER
406-
&& allRightConditionsAreIsNull) {
407-
// In case of LEFT_OUTER join, if all conditions for the right source table are IS_NULL,
408-
// it means the right record should not exist, so we use PutIfNotExists.
409-
putBuilderForRightSourceTable.condition(ConditionBuilder.putIfNotExists());
410-
} else if (!rightExpressions.isEmpty()) {
397+
if (!rightExpressions.isEmpty()) {
411398
putBuilderForRightSourceTable.condition(ConditionBuilder.putIf(rightExpressions));
412399
}
413400
}
@@ -473,23 +460,10 @@ private List<Delete> divideDeleteForSourceTables(Delete delete, VirtualTableInfo
473460
}
474461
}
475462

476-
// Check if all right expressions are IS_NULL
477-
boolean allRightConditionsAreIsNull = false;
478-
if (!rightExpressions.isEmpty()) {
479-
allRightConditionsAreIsNull =
480-
rightExpressions.stream()
481-
.allMatch(e -> e.getOperator() == ConditionalExpression.Operator.IS_NULL);
482-
}
483-
484463
if (!leftExpressions.isEmpty()) {
485464
deleteBuilderForLeftSourceTable.condition(ConditionBuilder.deleteIf(leftExpressions));
486465
}
487-
if (virtualTableInfo.getJoinType() == VirtualTableJoinType.LEFT_OUTER
488-
&& allRightConditionsAreIsNull) {
489-
// In case of LEFT_OUTER join, if all conditions for the right source table are IS_NULL,
490-
// it means the right record should not exist, so we use DeleteIfExists.
491-
deleteBuilderForRightSourceTable.condition(ConditionBuilder.deleteIfExists());
492-
} else if (!rightExpressions.isEmpty()) {
466+
if (!rightExpressions.isEmpty()) {
493467
deleteBuilderForRightSourceTable.condition(ConditionBuilder.deleteIf(rightExpressions));
494468
}
495469
}

core/src/main/java/com/scalar/db/storage/jdbc/JdbcUtils.java

Lines changed: 21 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -41,25 +41,8 @@ public static BasicDataSource initDataSource(
4141
config
4242
.getIsolation()
4343
.ifPresent(
44-
isolation -> {
45-
switch (isolation) {
46-
case READ_UNCOMMITTED:
47-
dataSource.setDefaultTransactionIsolation(
48-
Connection.TRANSACTION_READ_UNCOMMITTED);
49-
break;
50-
case READ_COMMITTED:
51-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
52-
break;
53-
case REPEATABLE_READ:
54-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
55-
break;
56-
case SERIALIZABLE:
57-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
58-
break;
59-
default:
60-
throw new AssertionError();
61-
}
62-
});
44+
isolation ->
45+
dataSource.setDefaultTransactionIsolation(toJdbcTransactionIsolation(isolation)));
6346

6447
dataSource.setDefaultReadOnly(false);
6548

@@ -93,25 +76,8 @@ public static BasicDataSource initDataSourceForTableMetadata(
9376
config
9477
.getIsolation()
9578
.ifPresent(
96-
isolation -> {
97-
switch (isolation) {
98-
case READ_UNCOMMITTED:
99-
dataSource.setDefaultTransactionIsolation(
100-
Connection.TRANSACTION_READ_UNCOMMITTED);
101-
break;
102-
case READ_COMMITTED:
103-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
104-
break;
105-
case REPEATABLE_READ:
106-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
107-
break;
108-
case SERIALIZABLE:
109-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
110-
break;
111-
default:
112-
throw new AssertionError();
113-
}
114-
});
79+
isolation ->
80+
dataSource.setDefaultTransactionIsolation(toJdbcTransactionIsolation(isolation)));
11581

11682
dataSource.setDefaultReadOnly(false);
11783

@@ -143,25 +109,8 @@ public static BasicDataSource initDataSourceForAdmin(
143109
config
144110
.getIsolation()
145111
.ifPresent(
146-
isolation -> {
147-
switch (isolation) {
148-
case READ_UNCOMMITTED:
149-
dataSource.setDefaultTransactionIsolation(
150-
Connection.TRANSACTION_READ_UNCOMMITTED);
151-
break;
152-
case READ_COMMITTED:
153-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
154-
break;
155-
case REPEATABLE_READ:
156-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
157-
break;
158-
case SERIALIZABLE:
159-
dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
160-
break;
161-
default:
162-
throw new AssertionError();
163-
}
164-
});
112+
isolation ->
113+
dataSource.setDefaultTransactionIsolation(toJdbcTransactionIsolation(isolation)));
165114

166115
dataSource.setDefaultReadOnly(false);
167116

@@ -174,6 +123,21 @@ public static BasicDataSource initDataSourceForAdmin(
174123
return dataSource;
175124
}
176125

126+
private static int toJdbcTransactionIsolation(Isolation isolation) {
127+
switch (isolation) {
128+
case READ_UNCOMMITTED:
129+
return Connection.TRANSACTION_READ_UNCOMMITTED;
130+
case READ_COMMITTED:
131+
return Connection.TRANSACTION_READ_COMMITTED;
132+
case REPEATABLE_READ:
133+
return Connection.TRANSACTION_REPEATABLE_READ;
134+
case SERIALIZABLE:
135+
return Connection.TRANSACTION_SERIALIZABLE;
136+
default:
137+
throw new AssertionError();
138+
}
139+
}
140+
177141
/**
178142
* Get {@code JDBCType} of the specified {@code sqlType}.
179143
*

0 commit comments

Comments
 (0)