Skip to content

Commit

Permalink
Merge branch 'master' into feat/data-loader/metadata-service
Browse files Browse the repository at this point in the history
  • Loading branch information
inv-jishnu authored Jan 20, 2025
2 parents d984eea + 8c96c1a commit 153c2d1
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 4 deletions.
11 changes: 11 additions & 0 deletions core/src/main/java/com/scalar/db/api/AbacOperationAttributes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.scalar.db.api;

import com.google.common.collect.ImmutableMap;
import java.util.Map;
import java.util.Optional;

Expand All @@ -16,6 +17,11 @@ public static void setReadTag(Map<String, String> attributes, String policyName,
attributes.put(READ_TAG_PREFIX + policyName, readTag);
}

public static void setReadTag(
ImmutableMap.Builder<String, String> attributesBuilder, String policyName, String readTag) {
attributesBuilder.put(READ_TAG_PREFIX + policyName, readTag);
}

public static void clearReadTag(Map<String, String> attributes, String policyName) {
attributes.remove(READ_TAG_PREFIX + policyName);
}
Expand All @@ -29,6 +35,11 @@ public static void setWriteTag(
attributes.put(WRITE_TAG_PREFIX + policyName, writeTag);
}

public static void setWriteTag(
ImmutableMap.Builder<String, String> attributesBuilder, String policyName, String writeTag) {
attributesBuilder.put(WRITE_TAG_PREFIX + policyName, writeTag);
}

public static void clearWriteTag(Map<String, String> attributes, String policyName) {
attributes.remove(WRITE_TAG_PREFIX + policyName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static org.assertj.core.api.Assertions.assertThat;

import com.google.common.collect.ImmutableMap;
import com.scalar.db.io.Key;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -11,7 +12,7 @@
public class AbacOperationAttributesTest {

@Test
public void setReadTag_ShouldSetReadTag() {
public void setReadTag_MapGiven_ShouldSetReadTag() {
// Arrange
Map<String, String> attributes = new HashMap<>();
String policyName = "policyName";
Expand All @@ -25,6 +26,21 @@ public void setReadTag_ShouldSetReadTag() {
.containsEntry(AbacOperationAttributes.READ_TAG_PREFIX + policyName, readTag);
}

@Test
public void setReadTag_ImmutableMapBuilderGiven_ShouldSetReadTag() {
// Arrange
ImmutableMap.Builder<String, String> attributesBuilder = ImmutableMap.builder();
String policyName = "policyName";
String readTag = "readTag";

// Act
AbacOperationAttributes.setReadTag(attributesBuilder, policyName, readTag);

// Assert
assertThat(attributesBuilder.build())
.containsEntry(AbacOperationAttributes.READ_TAG_PREFIX + policyName, readTag);
}

@Test
public void clearReadTag_ShouldClearReadTag() {
// Arrange
Expand Down Expand Up @@ -60,7 +76,7 @@ public void clearReadTags_ShouldClearReadTags() {
}

@Test
public void setWriteTag_ShouldSetWriteTag() {
public void setWriteTag_MapGiven_ShouldSetWriteTag() {
// Arrange
Map<String, String> attributes = new HashMap<>();
String policyName = "policyName";
Expand All @@ -74,6 +90,21 @@ public void setWriteTag_ShouldSetWriteTag() {
.containsEntry(AbacOperationAttributes.WRITE_TAG_PREFIX + policyName, writeTag);
}

@Test
public void setWriteTag_ImmutableMapBuilderGiven_ShouldSetWriteTag() {
// Arrange
ImmutableMap.Builder<String, String> attributesBuilder = ImmutableMap.builder();
String policyName = "policyName";
String writeTag = "writeTag";

// Act
AbacOperationAttributes.setWriteTag(attributesBuilder, policyName, writeTag);

// Assert
assertThat(attributesBuilder.build())
.containsEntry(AbacOperationAttributes.WRITE_TAG_PREFIX + policyName, writeTag);
}

@Test
public void clearWriteTag_ShouldClearWriteTag() {
// Arrange
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ public class JdbcAdminTest {
RdbEngine.SQLITE,
new RdbEngineSqlite(),
RdbEngine.YUGABYTE,
new RdbEngineYugabyte());
new RdbEngineYugabyte(),
RdbEngine.MARIADB,
new RdbEngineMariaDB());

@Mock private BasicDataSource dataSource;
@Mock private Connection connection;
Expand Down Expand Up @@ -119,6 +121,7 @@ private JdbcAdmin createJdbcAdminFor(RdbEngineStrategy rdbEngineStrategy) {
private void mockUndefinedTableError(RdbEngine rdbEngine, SQLException sqlException) {
switch (rdbEngine) {
case MYSQL:
case MARIADB:
when(sqlException.getErrorCode()).thenReturn(1049);
break;
case POSTGRESQL:
Expand Down Expand Up @@ -3450,6 +3453,7 @@ private SQLException prepareDuplicatedKeyException(RdbEngine rdbEngine) {
case SQL_SERVER:
case MYSQL:
case ORACLE:
case MARIADB:
duplicateKeyException = mock(SQLException.class);
when(duplicateKeyException.getSQLState()).thenReturn("23000");
break;
Expand Down
5 changes: 4 additions & 1 deletion core/src/test/java/com/scalar/db/storage/jdbc/RdbEngine.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ public enum RdbEngine {
ORACLE,
SQL_SERVER,
SQLITE,
YUGABYTE;
YUGABYTE,
MARIADB;

public static RdbEngineStrategy createRdbEngineStrategy(RdbEngine rdbEngine) {
switch (rdbEngine) {
Expand All @@ -27,6 +28,8 @@ public static RdbEngineStrategy createRdbEngineStrategy(RdbEngine rdbEngine) {
return new RdbEngineSqlite();
case YUGABYTE:
return new RdbEngineYugabyte();
case MARIADB:
return new RdbEngineMariaDB();
default:
throw new AssertionError();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ public void selectQueryTest(RdbEngine rdbEngineType) throws SQLException {
case MYSQL:
case POSTGRESQL:
case YUGABYTE:
case MARIADB:
expectedQuery =
"SELECT c1,c2 FROM n1.t1 WHERE p1=? AND c1>=? AND c1<=? "
+ "ORDER BY c1 ASC,c2 DESC LIMIT 10";
Expand Down Expand Up @@ -1300,6 +1301,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery =
"INSERT INTO n1.t1 (p1,v1,v2,v3) VALUES (?,?,?,?)"
+ " ON DUPLICATE KEY UPDATE v1=?,v2=?,v3=?";
Expand Down Expand Up @@ -1340,6 +1342,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "v1Value");
verify(preparedStatement).setString(3, "v2Value");
Expand All @@ -1364,6 +1367,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery =
"INSERT INTO n1.t1 (p1,c1,v1,v2,v3) VALUES (?,?,?,?,?)"
+ " ON DUPLICATE KEY UPDATE v1=?,v2=?,v3=?";
Expand Down Expand Up @@ -1406,6 +1410,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "c1Value");
verify(preparedStatement).setString(3, "v1Value");
Expand Down Expand Up @@ -1434,6 +1439,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery =
"INSERT INTO n1.t1 (p1,p2,c1,c2,v1,v2,v3,v4) VALUES (?,?,?,?,?,?,?,?)"
+ " ON DUPLICATE KEY UPDATE v1=?,v2=?,v3=?,v4=?";
Expand Down Expand Up @@ -1480,6 +1486,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "p2Value");
verify(preparedStatement).setString(3, "c1Value");
Expand Down Expand Up @@ -1518,6 +1525,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery =
"INSERT INTO n1.t1 (p1,p2,c1,c2,v1,v2,v3,v4,v5) VALUES (?,?,?,?,?,?,?,?,?)"
+ " ON DUPLICATE KEY UPDATE v1=?,v2=?,v3=?,v4=?,v5=?";
Expand Down Expand Up @@ -1565,6 +1573,7 @@ public void upsertQueryTest(RdbEngine rdbEngineType) throws SQLException {
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "p2Value");
verify(preparedStatement).setString(3, "c1Value");
Expand Down Expand Up @@ -1617,6 +1626,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery = "INSERT IGNORE INTO n1.t1 (p1) VALUES (?)";
break;
case POSTGRESQL:
Expand Down Expand Up @@ -1649,6 +1659,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
break;
case ORACLE:
Expand All @@ -1661,6 +1672,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery = "INSERT IGNORE INTO n1.t1 (p1,c1) VALUES (?,?)";
break;
case POSTGRESQL:
Expand Down Expand Up @@ -1698,6 +1710,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "c1Value");
break;
Expand All @@ -1713,6 +1726,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
preparedStatement = mock(PreparedStatement.class);
switch (rdbEngineType) {
case MYSQL:
case MARIADB:
expectedQuery = "INSERT IGNORE INTO n1.t1 (p1,p2,c1,c2) VALUES (?,?,?,?)";
break;
case POSTGRESQL:
Expand Down Expand Up @@ -1754,6 +1768,7 @@ public void upsertQueryWithoutValuesTest(RdbEngine rdbEngineType) throws SQLExce
case POSTGRESQL:
case SQLITE:
case YUGABYTE:
case MARIADB:
verify(preparedStatement).setString(1, "p1Value");
verify(preparedStatement).setString(2, "p2Value");
verify(preparedStatement).setString(3, "c1Value");
Expand Down

0 comments on commit 153c2d1

Please sign in to comment.