暂时不兼容bpm模块的达梦

This commit is contained in:
陈博文
2025-06-11 09:23:07 +08:00
parent e0edee6537
commit 8844085ead
9 changed files with 347 additions and 3179 deletions

View File

@@ -10,7 +10,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.flowable.common.engine.impl; package org.flowable.common.engine.impldm;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;

View File

@@ -9,9 +9,9 @@ import liquibase.datatype.LiquibaseDataType;
import liquibase.exception.UnexpectedLiquibaseException; import liquibase.exception.UnexpectedLiquibaseException;
import liquibase.statement.DatabaseFunction; import liquibase.statement.DatabaseFunction;
import liquibase.util.StringUtil; import liquibase.util.StringUtil;
import liquibase.database.core.DmDatabase;
import java.util.Locale; import java.util.Locale;
import java.util.regex.Pattern;
@DataTypeInfo(name = "boolean", aliases = {"java.sql.Types.BOOLEAN", "java.lang.Boolean", "bit", "bool"}, minParameters = 0, maxParameters = 0, priority = LiquibaseDataType.PRIORITY_DEFAULT) @DataTypeInfo(name = "boolean", aliases = {"java.sql.Types.BOOLEAN", "java.lang.Boolean", "bit", "bool"}, minParameters = 0, maxParameters = 0, priority = LiquibaseDataType.PRIORITY_DEFAULT)
public class BooleanType extends LiquibaseDataType { public class BooleanType extends LiquibaseDataType {
@@ -19,11 +19,11 @@ public class BooleanType extends LiquibaseDataType {
@Override @Override
public DatabaseDataType toDatabaseDataType(Database database) { public DatabaseDataType toDatabaseDataType(Database database) {
String originalDefinition = StringUtil.trimToEmpty(getRawDefinition()); String originalDefinition = StringUtil.trimToEmpty(getRawDefinition());
if ((database instanceof Firebird3Database)) { // if ((database instanceof Firebird3Database)) {
return new DatabaseDataType("BOOLEAN"); // return new DatabaseDataType("BOOLEAN");
} // }
if ((database instanceof Db2zDatabase) || (database instanceof FirebirdDatabase)) { if ((database instanceof AbstractDb2Database) || (database instanceof FirebirdDatabase)) {
return new DatabaseDataType("SMALLINT"); return new DatabaseDataType("SMALLINT");
} else if (database instanceof MSSQLDatabase) { } else if (database instanceof MSSQLDatabase) {
return new DatabaseDataType(database.escapeDataTypeName("bit")); return new DatabaseDataType(database.escapeDataTypeName("bit"));
@@ -42,7 +42,7 @@ public class BooleanType extends LiquibaseDataType {
} else { } else {
return new DatabaseDataType("SMALLINT"); return new DatabaseDataType("SMALLINT");
} }
} else if (database instanceof DB2Database) { } else if (database.getClass().isAssignableFrom(DB2Database.class)) {
if (((DB2Database) database).supportsBooleanDataType()) if (((DB2Database) database).supportsBooleanDataType())
return new DatabaseDataType("BOOLEAN"); return new DatabaseDataType("BOOLEAN");
else else
@@ -53,7 +53,7 @@ public class BooleanType extends LiquibaseDataType {
if (originalDefinition.toLowerCase(Locale.US).startsWith("bit")) { if (originalDefinition.toLowerCase(Locale.US).startsWith("bit")) {
return new DatabaseDataType("BIT", getParameters()); return new DatabaseDataType("BIT", getParameters());
} }
} else if (database instanceof DmDatabase) { // dhb52: DM Support } else if(database instanceof DmDatabase) {
return new DatabaseDataType("bit"); return new DatabaseDataType("bit");
} }
@@ -72,15 +72,8 @@ public class BooleanType extends LiquibaseDataType {
if ("true".equals(((String) value).toLowerCase(Locale.US)) || "1".equals(value) || "b'1'".equals(((String) value).toLowerCase(Locale.US)) || "t".equals(((String) value).toLowerCase(Locale.US)) || ((String) value).toLowerCase(Locale.US).equals(this.getTrueBooleanValue(database).toLowerCase(Locale.US))) { if ("true".equals(((String) value).toLowerCase(Locale.US)) || "1".equals(value) || "b'1'".equals(((String) value).toLowerCase(Locale.US)) || "t".equals(((String) value).toLowerCase(Locale.US)) || ((String) value).toLowerCase(Locale.US).equals(this.getTrueBooleanValue(database).toLowerCase(Locale.US))) {
returnValue = this.getTrueBooleanValue(database); returnValue = this.getTrueBooleanValue(database);
} else if ("false".equals(((String) value).toLowerCase(Locale.US)) || "0".equals(value) || "b'0'".equals( } else if ("false".equals(((String) value).toLowerCase(Locale.US)) || "0".equals(value) || "b'0'".equals(
((String) value).toLowerCase(Locale.US)) || "f".equals(((String) value).toLowerCase(Locale.US)) || ((String) value).toLowerCase(Locale.US).equals(this.getFalseBooleanValue(database).toLowerCase(Locale.US))) { ((String) value).toLowerCase(Locale.US)) || "f".equals(((String) value).toLowerCase(Locale.US)) || ((String) value).toLowerCase(Locale.US).equals(this.getFalseBooleanValue(database).toLowerCase(Locale.US))) {
returnValue = this.getFalseBooleanValue(database); returnValue = this.getFalseBooleanValue(database);
} else if (database instanceof PostgresDatabase && Pattern.matches("b?([01])\\1*(::bit|::\"bit\")?", (String) value)) {
returnValue = "b'"
+ value.toString()
.replace("b", "")
.replace("\"", "")
.replace("::it", "")
+ "'::\"bit\"";
} else { } else {
throw new UnexpectedLiquibaseException("Unknown boolean value: " + value); throw new UnexpectedLiquibaseException("Unknown boolean value: " + value);
} }
@@ -112,23 +105,15 @@ public class BooleanType extends LiquibaseDataType {
} }
protected boolean isNumericBoolean(Database database) { protected boolean isNumericBoolean(Database database) {
if (database instanceof Firebird3Database) {
return false;
}
if (database instanceof DerbyDatabase) { if (database instanceof DerbyDatabase) {
return !((DerbyDatabase) database).supportsBooleanDataType(); return !((DerbyDatabase) database).supportsBooleanDataType();
} else if (database instanceof DB2Database) { } else if (database.getClass().isAssignableFrom(DB2Database.class)) {
return !((DB2Database) database).supportsBooleanDataType(); return !((DB2Database) database).supportsBooleanDataType();
} }
return (database instanceof Db2zDatabase) return (database instanceof Db2zDatabase) || (database instanceof DB2Database) || (database instanceof FirebirdDatabase) || (database instanceof
|| (database instanceof FirebirdDatabase) MSSQLDatabase) || (database instanceof MySQLDatabase) || (database instanceof OracleDatabase) ||
|| (database instanceof MSSQLDatabase) (database instanceof SQLiteDatabase) || (database instanceof SybaseASADatabase) || (database instanceof
|| (database instanceof MySQLDatabase) SybaseDatabase) || (database instanceof DmDatabase);
|| (database instanceof OracleDatabase)
|| (database instanceof SQLiteDatabase)
|| (database instanceof SybaseASADatabase)
|| (database instanceof SybaseDatabase)
|| (database instanceof DmDatabase); // dhb52: DM Support
} }
/** /**
@@ -161,5 +146,4 @@ public class BooleanType extends LiquibaseDataType {
public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() { public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() {
return LoadDataChange.LOAD_DATA_TYPE.BOOLEAN; return LoadDataChange.LOAD_DATA_TYPE.BOOLEAN;
} }
} }

View File

@@ -17,5 +17,4 @@ liquibase.database.core.PostgresDatabase
liquibase.database.core.SQLiteDatabase liquibase.database.core.SQLiteDatabase
liquibase.database.core.SybaseASADatabase liquibase.database.core.SybaseASADatabase
liquibase.database.core.SybaseDatabase liquibase.database.core.SybaseDatabase
liquibase.database.core.DmDatabase
liquibase.database.core.UnsupportedDatabase liquibase.database.core.UnsupportedDatabase