This is an automated email from the ASF dual-hosted git repository. jiafengzheng pushed a commit to branch rest-api-plan-tablename-case in repository https://gitbox.apache.org/repos/asf/doris.git
commit bbe2c6d37ed3f51a5ff86664bd81b04fd5672715 Author: jiafeng.zhang <zhang...@gmail.com> AuthorDate: Sun Oct 8 14:14:46 2023 +0800 [fix](fe rest api)api gets execution plan, table name case problem --- .../doris/httpv2/rest/TableQueryPlanAction.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/TableQueryPlanAction.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/TableQueryPlanAction.java index f3379355708..a9962ee15b6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/TableQueryPlanAction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/TableQueryPlanAction.java @@ -26,6 +26,7 @@ import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.Table; import org.apache.doris.catalog.TableIf; +import org.apache.doris.common.Config; import org.apache.doris.common.DorisHttpException; import org.apache.doris.common.MetaNotFoundException; import org.apache.doris.httpv2.entity.ResponseEntityBuilder; @@ -35,8 +36,10 @@ import org.apache.doris.planner.PlanFragment; import org.apache.doris.planner.Planner; import org.apache.doris.planner.ScanNode; import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.GlobalVariable; import org.apache.doris.qe.OriginStatement; import org.apache.doris.qe.StmtExecutor; +import org.apache.doris.qe.VariableMgr; import org.apache.doris.thrift.TDataSink; import org.apache.doris.thrift.TDataSinkType; import org.apache.doris.thrift.TMemoryScratchSink; @@ -197,10 +200,20 @@ public class TableQueryPlanAction extends RestBaseController { // check consistent http requested resource with sql referenced // if consistent in this way, can avoid check privilege TableName tableAndDb = fromTables.get(0).getName(); - if (!(tableAndDb.getDb().equals(requestDb) && tableAndDb.getTbl().equals(requestTable))) { - throw new DorisHttpException(HttpResponseStatus.BAD_REQUEST, - "requested database and table must consistent with sql: request [ " - + requestDb + "." + requestTable + "]" + "and sql [" + tableAndDb.toString() + "]"); + int lower = GlobalVariable.lowerCaseTableNames; + //Determine whether table names are case-sensitive + if(lower == 0) { + if (!(tableAndDb.getDb().equals(requestDb) && tableAndDb.getTbl().equals(requestTable))) { + throw new DorisHttpException(HttpResponseStatus.BAD_REQUEST, + "requested database and table must consistent with sql: request [ " + + requestDb + "." + requestTable + "]" + "and sql [" + tableAndDb.toString () + "]"); + } + } else { + if (!(tableAndDb.getDb().equalsIgnoreCase(requestDb) && tableAndDb.getTbl().equalsIgnoreCase(requestTable))) { + throw new DorisHttpException(HttpResponseStatus.BAD_REQUEST, + "requested database and table must consistent with sql: request [ " + + requestDb + "." + requestTable + "]" + "and sql [" + tableAndDb.toString () + "]"); + } } // acquired Planner to get PlanNode and fragment templates --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org