apache/incubator-seata · error · IllegalArgumentException
"The DB type :" + dbType + " is not supported yet"
Error message
"The DB type :" + dbType + " is not supported yet"
What it means
PageUtil.getTimeStartSql builds a 'time >= ?' SQL fragment converting an epoch-seconds bound, currently supporting mysql, oracle, postgresql, sqlserver, dm and oscar (all via FLOOR(col/1000) >= ?). Any other dbType throws IllegalArgumentException("The DB type :X is not supported yet").
Source
Thrown at common/src/main/java/org/apache/seata/common/util/PageUtil.java:200
}
/**
* get sql for time start
* @param dbType
* @param timeColumnName
* @return java.lang.String
*/
public static String getTimeStartSql(String dbType, String timeColumnName) {
switch (dbType.toLowerCase()) {
case "mysql":
case "oracle":
case "postgresql":
case "sqlserver":
case "dm":
case "oscar":
return " and FLOOR(" + timeColumnName + "/1000) >= ? ";
default:
throw new IllegalArgumentException("The DB type :" + dbType + " is not supported yet");
}
}
/**
* get sql for time end
* @param dbType
* @param timeColumnName
* @return java.lang.String
*/
public static String getTimeEndSql(String dbType, String timeColumnName) {
switch (dbType.toLowerCase()) {
case "mysql":
case "oracle":
case "postgresql":
case "sqlserver":
case "dm":
case "oscar":
return " and FLOOR(" + timeColumnName + "/1000) <= ? ";View on GitHub (pinned to e01f97c6db)
Solutions
- Use a supported dbType: mysql, oracle, postgresql, sqlserver, dm, or oscar
- Correct the store.db.dbType configuration value (exact lowercase name)
- Skip time-filter parameters when the dialect is unsupported, or add a dialect case upstream
Example fix
# before store.db.dbType = h2 // getTimeStartSql throws # after store.db.dbType = mysql
Defensive patterns
Strategy: type-guard
Validate before calling
Set<String> TIME_DB = Set.of("mysql", "oracle", "postgresql", "sqlserver", "dm", "oscar");
if (!TIME_DB.contains(dbType)) skipTimeFilter = true; Type guard
static boolean supportsEpochTimeFilter(String dbType) { return dbType != null && Set.of("mysql","oracle","postgresql","sqlserver","dm","oscar").contains(dbType.toLowerCase()); } Try / catch
try { frag = PageUtil.getTimeStartSql(dbType, col); } catch (IllegalArgumentException e) { throw new ConfigurationException("time filters unsupported on " + dbType, e); } Prevention
- Match your store dbType to the six supported dialects when time filters are needed
- Gate time-filter request parameters on dialect capability checks
- Keep dialect capability sets in one place, versioned with your Seata dependency
When it happens
Trigger: Calling getTimeStartSql(dbType, timeColumnName) with a dbType not in {mysql, oracle, postgresql, sqlserver, dm, oscar} — e.g. h2, db2, mariadb spelled as 'maria', or a casing/whitespace variant (the method lowercases dbType itself, so case is tolerated but the name must match exactly).
Common situations: Console time-range queries (transaction list filtered by start time) against an unsupported store; custom store implementations reusing PageUtil with their own dbType constant.
Related errors
AI-assisted analysis of apache/incubator-seata@e01f97c6db (2026-08-14).
Data as JSON: /api/errors/9d173f6abe5e6f05.
Report an issue: GitHub.