[improvement][headless]Support dataSetNames that contain dash.
Some checks are pending
supersonic CentOS CI / build (21) (push) Waiting to run
supersonic mac CI / build (21) (push) Waiting to run
supersonic ubuntu CI / build (21) (push) Waiting to run
supersonic windows CI / build (21) (push) Waiting to run

[improvement][headless]Support dataSetNames that contain dash.

[improvement][headless]Support dataSetNames that contain dash.
This commit is contained in:
jerryjzhang
2025-02-21 01:11:58 +08:00
parent 5fa3607874
commit 94e853f57e
7 changed files with 43 additions and 15 deletions

View File

@@ -7,6 +7,7 @@ import com.tencent.supersonic.auth.api.authorization.request.QueryAuthResReq;
import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResourceResp;
import com.tencent.supersonic.auth.api.authorization.service.AuthService;
import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.QueryAuthorization;
import com.tencent.supersonic.common.pojo.User;
@@ -73,6 +74,15 @@ public class S2DataPermissionAspect {
SemanticQueryReq queryReq = null;
if (objects[0] instanceof SemanticQueryReq) {
queryReq = (SemanticQueryReq) objects[0];
if (queryReq instanceof QuerySqlReq) {
QuerySqlReq sqlReq = (QuerySqlReq) queryReq;
if (sqlReq.getDataSetName() != null) {
String escapedTable = SqlReplaceHelper.escapeTableName(sqlReq.getDataSetName());
sqlReq.setSql(sqlReq.getSql().replaceAll(
String.format(" %s ", sqlReq.getDataSetName()),
String.format(" %s ", escapedTable)));
}
}
}
if (queryReq == null) {
throw new InvalidArgumentException("queryReq is not Invalid");