Skip to content

Commit

Permalink
PageUtil support Dameng
Browse files Browse the repository at this point in the history
  • Loading branch information
wangliang181230 committed Aug 28, 2023
1 parent 8a3ef66 commit 08b3a4e
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
2 changes: 2 additions & 0 deletions common/src/main/java/io/seata/common/util/PageUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ public static String pageSql(String sourceSql, String dbType, int pageNum, int p
case "h2":
case "postgresql":
case "oceanbase":
case "dm":
return LIMIT_TEMPLATE.replace(SOURCE_SQL_PLACE_HOLD, sourceSql)
.replace(LIMIT_PLACE_HOLD, String.valueOf(pageSize))
.replace(OFFSET_PLACE_HOLD, String.valueOf((pageNum - 1) * pageSize));
Expand All @@ -130,6 +131,7 @@ public static String countSql(String sourceSql, String dbType) {
case "h2":
case "oceanbase":
case "oracle":
case "dm":
return sourceSql.replaceAll("(?i)(?<=select)(.*)(?=from)", " count(1) ");
case "postgresql":
int lastIndexOfOrderBy = sourceSql.toLowerCase().lastIndexOf("order by");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public class LockStoreSqlFactoryTest {

private static LockStoreSql OCEANBASE_LOCK_STORE = LockStoreSqlFactory.getLogStoreSql("oceanbase");

private static LockStoreSql DM_LOCK_STORE = LockStoreSqlFactory.getLogStoreSql("dm");

private static String GLOBAL_TABLE = "global_table";

private static String BRANCH_TABLE = "branch_table";
Expand Down Expand Up @@ -282,4 +284,50 @@ public void oceanbaseLockTest() {
sql = OCEANBASE_LOCK_STORE.getCheckLockableSql(BRANCH_TABLE, 3);
Assertions.assertEquals(EXPECT_CHECK_BRANCH_LOCKABLE_SQL,sql);
}

@Test
public void dmLockTest() {
String sql;
// Get insert lock sql string.
sql = DM_LOCK_STORE.getInsertLockSQL(GLOBAL_TABLE);
Assertions.assertNotNull(sql);
sql = DM_LOCK_STORE.getInsertLockSQL(BRANCH_TABLE);
Assertions.assertNotNull(sql);

// Get delete lock sql string.
sql = DM_LOCK_STORE.getDeleteLockSql(GLOBAL_TABLE);
Assertions.assertNotNull(sql);
sql = DM_LOCK_STORE.getDeleteLockSql(BRANCH_TABLE);
Assertions.assertNotNull(sql);

// Get batch delete lock sql string.
sql = DM_LOCK_STORE.getBatchDeleteLockSql(GLOBAL_TABLE, 3);
Assertions.assertEquals(EXPECT_BATCH_GLOBAL_DELETE_LOCK_SQL,sql);
sql = DM_LOCK_STORE.getBatchDeleteLockSql(BRANCH_TABLE, 3);
Assertions.assertEquals(EXPECT_BATCH_BRANCH_DELETE_LOCK_SQL,sql);

// Get batch delete lock sql string.
sql = DM_LOCK_STORE.getBatchDeleteLockSqlByBranchId(GLOBAL_TABLE);
Assertions.assertNotNull(sql);
sql = DM_LOCK_STORE.getBatchDeleteLockSqlByBranchId(BRANCH_TABLE);
Assertions.assertNotNull(sql);

// Get batch delete lock sql string.
sql = DM_LOCK_STORE.getBatchDeleteLockSqlByXid(GLOBAL_TABLE);
Assertions.assertEquals(EXPECT_BATCH_GLOBAL_DELETE_LOCK_BY_BRANCHS_SQL,sql);
sql = DM_LOCK_STORE.getBatchDeleteLockSqlByXid(BRANCH_TABLE);
Assertions.assertEquals(EXPECT_BATCH_BRANCH_DELETE_LOCK_BY_BRANCHS_SQL,sql);

// Get query lock sql string.
sql = DM_LOCK_STORE.getQueryLockSql(GLOBAL_TABLE);
Assertions.assertNotNull(sql);
sql = DM_LOCK_STORE.getQueryLockSql(BRANCH_TABLE);
Assertions.assertNotNull(sql);

// Get check lock sql string.
sql = DM_LOCK_STORE.getCheckLockableSql(GLOBAL_TABLE, 3);
Assertions.assertEquals(EXPECT_CHECK_GLOBAL_LOCKABLE_SQL,sql);
sql = DM_LOCK_STORE.getCheckLockableSql(BRANCH_TABLE, 3);
Assertions.assertEquals(EXPECT_CHECK_BRANCH_LOCKABLE_SQL,sql);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public class LogStoreSqlsFactoryTest {

private static LogStoreSqls oceanbase = LogStoreSqlsFactory.getLogStoreSqls("oceanbase");

private static LogStoreSqls dmLog = LogStoreSqlsFactory.getLogStoreSqls("dm");

private static String globalTable = "global_table";

private static String branchTable = "branch_table";
Expand Down Expand Up @@ -211,4 +213,38 @@ public void oceanbaseLogTest() {
sql = oceanbase.getQueryBranchMax(branchTable);
Assertions.assertNotNull(sql);
}

@Test
public void dmLogTest() {
String sql = dmLog.getInsertGlobalTransactionSQL(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getUpdateGlobalTransactionStatusSQL(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getDeleteGlobalTransactionSQL(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryGlobalTransactionSQL(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryGlobalTransactionSQLByTransactionId(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryGlobalTransactionSQLByStatus(globalTable, "1");
Assertions.assertNotNull(sql);
sql = dmLog.getQueryGlobalTransactionForRecoverySQL(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getInsertBranchTransactionSQL(branchTable);
Assertions.assertNotNull(sql);
sql = dmLog.getUpdateBranchTransactionStatusSQL(branchTable);
Assertions.assertNotNull(sql);
sql = dmLog.getDeleteBranchTransactionByBranchIdSQL(branchTable);
Assertions.assertNotNull(sql);
sql = dmLog.getDeleteBranchTransactionByXId(branchTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryBranchTransaction(branchTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryBranchTransaction(branchTable, "1");
Assertions.assertNotNull(sql);
sql = dmLog.getQueryGlobalMax(globalTable);
Assertions.assertNotNull(sql);
sql = dmLog.getQueryBranchMax(branchTable);
Assertions.assertNotNull(sql);
}
}

0 comments on commit 08b3a4e

Please sign in to comment.