From 78496920465818be9b15a60a8aaf9e02c0631b51 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Sat, 23 Mar 2024 16:25:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6):=20?= =?UTF-8?q?=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2=E6=9C=AA=E5=AF=B9%?= =?UTF-8?q?=E8=BD=AC=E4=B9=89=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20close#8432?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/engine/doris/DorisQueryProvider.java | 2 +- .../provider/engine/mysql/MysqlQueryProvider.java | 2 +- .../io/dataease/provider/query/ck/CKQueryProvider.java | 2 +- .../io/dataease/provider/query/db2/Db2QueryProvider.java | 2 +- .../io/dataease/provider/query/es/EsQueryProvider.java | 2 +- .../dataease/provider/query/hive/HiveQueryProvider.java | 2 +- .../provider/query/impala/ImpalaQueryProvider.java | 2 +- .../provider/query/mongodb/MongoQueryProvider.java | 2 +- .../dataease/provider/query/mysql/MysqlQueryProvider.java | 2 +- .../provider/query/oracle/OracleQueryProvider.java | 2 +- .../io/dataease/provider/query/pg/PgQueryProvider.java | 2 +- .../provider/query/redshift/RedshiftQueryProvider.java | 2 +- .../provider/query/sqlserver/SqlserverQueryProvider.java | 2 +- .../plugins/datasource/dm/query/DmQueryProvider.java | 2 +- .../datasource/kingbase/query/KingbaseQueryProvider.java | 2 +- .../datasource/kylin/query/KylinQueryProvider.java | 2 +- .../datasource/dm/query/MaxcomputeQueryProvider.java | 2 +- .../datasource/mongo/query/MongobiQueryProvider.java | 2 +- .../plugins/datasource/dm/query/PrestoQueryProvider.java | 2 +- .../dataease/plugins/datasource/query/QueryProvider.java | 8 ++++++++ 20 files changed, 27 insertions(+), 19 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index 13b2c2f933..7b22212f9c 100644 --- a/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -1437,7 +1437,7 @@ public class DorisQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java index e15e386923..50e6864457 100644 --- a/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java @@ -1379,7 +1379,7 @@ public class MysqlQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java index a75fb8e006..f7cd5d8111 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java @@ -1480,7 +1480,7 @@ public class CKQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java index b5d1bb8c3a..2dd9ea9ce1 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java @@ -1476,7 +1476,7 @@ public class Db2QueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index 7b5e2f579b..90de48bbaf 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -1403,7 +1403,7 @@ public class EsQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "UCASE(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java index cef882d2df..c5bbb6fbea 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java @@ -1360,7 +1360,7 @@ public class HiveQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java index 854c5cb5db..3950fac6a3 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java @@ -1380,7 +1380,7 @@ public class ImpalaQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java index 04dcd4c24f..324a71fcdf 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java @@ -1235,7 +1235,7 @@ public class MongoQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index 2b8f03a8d5..74fe391f29 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -1444,7 +1444,7 @@ public class MysqlQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java index 5e6e02dbf4..dfcc5ccbbe 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java @@ -1549,7 +1549,7 @@ public class OracleQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java index acb6a7c212..a18e0cc6f7 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java @@ -1400,7 +1400,7 @@ public class PgQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java index c9cad1148c..78c4ef1355 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java @@ -1386,7 +1386,7 @@ public class RedshiftQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/core/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java index dcc63f3a5a..37b0e78a00 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java @@ -1532,7 +1532,7 @@ public class SqlserverQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) { diff --git a/extensions/dataease-extensions-datasource/dm/dm-backend/src/main/java/io/dataease/plugins/datasource/dm/query/DmQueryProvider.java b/extensions/dataease-extensions-datasource/dm/dm-backend/src/main/java/io/dataease/plugins/datasource/dm/query/DmQueryProvider.java index 6da0bb4e58..fbb27a8493 100644 --- a/extensions/dataease-extensions-datasource/dm/dm-backend/src/main/java/io/dataease/plugins/datasource/dm/query/DmQueryProvider.java +++ b/extensions/dataease-extensions-datasource/dm/dm-backend/src/main/java/io/dataease/plugins/datasource/dm/query/DmQueryProvider.java @@ -1570,7 +1570,7 @@ public class DmQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/extensions/dataease-extensions-datasource/kingbase/kingbase-backend/src/main/java/io/dataease/plugins/datasource/kingbase/query/KingbaseQueryProvider.java b/extensions/dataease-extensions-datasource/kingbase/kingbase-backend/src/main/java/io/dataease/plugins/datasource/kingbase/query/KingbaseQueryProvider.java index c438ae2d54..9cf4b8d68a 100644 --- a/extensions/dataease-extensions-datasource/kingbase/kingbase-backend/src/main/java/io/dataease/plugins/datasource/kingbase/query/KingbaseQueryProvider.java +++ b/extensions/dataease-extensions-datasource/kingbase/kingbase-backend/src/main/java/io/dataease/plugins/datasource/kingbase/query/KingbaseQueryProvider.java @@ -1608,7 +1608,7 @@ public class KingbaseQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/extensions/dataease-extensions-datasource/kylin/kylin-backend/src/main/java/io/dataease/plugins/datasource/kylin/query/KylinQueryProvider.java b/extensions/dataease-extensions-datasource/kylin/kylin-backend/src/main/java/io/dataease/plugins/datasource/kylin/query/KylinQueryProvider.java index 3aa5f18d71..5f83666c2f 100644 --- a/extensions/dataease-extensions-datasource/kylin/kylin-backend/src/main/java/io/dataease/plugins/datasource/kylin/query/KylinQueryProvider.java +++ b/extensions/dataease-extensions-datasource/kylin/kylin-backend/src/main/java/io/dataease/plugins/datasource/kylin/query/KylinQueryProvider.java @@ -1329,7 +1329,7 @@ public class KylinQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/extensions/dataease-extensions-datasource/maxcompute/maxcompute-backend/src/main/java/io/dataease/plugins/datasource/dm/query/MaxcomputeQueryProvider.java b/extensions/dataease-extensions-datasource/maxcompute/maxcompute-backend/src/main/java/io/dataease/plugins/datasource/dm/query/MaxcomputeQueryProvider.java index 382bf73eb5..4f4a44d23a 100644 --- a/extensions/dataease-extensions-datasource/maxcompute/maxcompute-backend/src/main/java/io/dataease/plugins/datasource/dm/query/MaxcomputeQueryProvider.java +++ b/extensions/dataease-extensions-datasource/maxcompute/maxcompute-backend/src/main/java/io/dataease/plugins/datasource/dm/query/MaxcomputeQueryProvider.java @@ -1349,7 +1349,7 @@ public class MaxcomputeQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/extensions/dataease-extensions-datasource/mongo/mongo-backend/src/main/java/io/dataease/plugins/datasource/mongo/query/MongobiQueryProvider.java b/extensions/dataease-extensions-datasource/mongo/mongo-backend/src/main/java/io/dataease/plugins/datasource/mongo/query/MongobiQueryProvider.java index 5e4660cdbf..3cb8df0f6f 100644 --- a/extensions/dataease-extensions-datasource/mongo/mongo-backend/src/main/java/io/dataease/plugins/datasource/mongo/query/MongobiQueryProvider.java +++ b/extensions/dataease-extensions-datasource/mongo/mongo-backend/src/main/java/io/dataease/plugins/datasource/mongo/query/MongobiQueryProvider.java @@ -1341,7 +1341,7 @@ public class MongobiQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/extensions/dataease-extensions-datasource/presto/presto-backend/src/main/java/io/dataease/plugins/datasource/dm/query/PrestoQueryProvider.java b/extensions/dataease-extensions-datasource/presto/presto-backend/src/main/java/io/dataease/plugins/datasource/dm/query/PrestoQueryProvider.java index 33900638b3..18ac229c19 100644 --- a/extensions/dataease-extensions-datasource/presto/presto-backend/src/main/java/io/dataease/plugins/datasource/dm/query/PrestoQueryProvider.java +++ b/extensions/dataease-extensions-datasource/presto/presto-backend/src/main/java/io/dataease/plugins/datasource/dm/query/PrestoQueryProvider.java @@ -1345,7 +1345,7 @@ public class PrestoQueryProvider extends QueryProvider { } } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { String keyword = value.get(0).toUpperCase(); - whereValue = "'%" + keyword + "%'"; + whereValue = formatLikeValue(keyword); whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { diff --git a/sdk/dataease-plugin-datasource/src/main/java/io/dataease/plugins/datasource/query/QueryProvider.java b/sdk/dataease-plugin-datasource/src/main/java/io/dataease/plugins/datasource/query/QueryProvider.java index 975a381c71..b9f863dc8b 100644 --- a/sdk/dataease-plugin-datasource/src/main/java/io/dataease/plugins/datasource/query/QueryProvider.java +++ b/sdk/dataease-plugin-datasource/src/main/java/io/dataease/plugins/datasource/query/QueryProvider.java @@ -255,4 +255,12 @@ public abstract class QueryProvider { public String getTotalCount(boolean isTable, String sql, Datasource ds) { return null; } + + public String formatLikeValue(String value) { + if (StringUtils.isBlank(value)) return null; + if (StringUtils.equals("%", value)) { + return "'%\\\\" + value + "%'"; + } + return "'%" + value + "%'"; + } }