mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[improvement][headless]Support dataSetNames that contain dash.
[improvement][headless]Support dataSetNames that contain dash. [improvement][headless]Support dataSetNames that contain dash.
This commit is contained in:
@@ -2,6 +2,7 @@ package com.tencent.supersonic.headless.api.pojo.request;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.jsqlparser.SqlAddHelper;
|
||||
import com.tencent.supersonic.common.jsqlparser.SqlReplaceHelper;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
@@ -281,7 +282,7 @@ public class QueryStructReq extends SemanticQueryReq {
|
||||
|
||||
public String getTableName() {
|
||||
if (StringUtils.isNotBlank(dataSetName)) {
|
||||
return dataSetName;
|
||||
return SqlReplaceHelper.escapeTableName(dataSetName);
|
||||
}
|
||||
if (dataSetId != null) {
|
||||
return Constants.TABLE_PREFIX + dataSetId;
|
||||
|
||||
@@ -15,12 +15,19 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryFilter;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@@ -97,15 +104,16 @@ public class QueryReqBuilder {
|
||||
* convert to QueryS2SQLReq
|
||||
*
|
||||
* @param querySql
|
||||
* @param dataSetId
|
||||
* @param dataSet
|
||||
* @return
|
||||
*/
|
||||
public static QuerySqlReq buildS2SQLReq(String querySql, Long dataSetId) {
|
||||
public static QuerySqlReq buildS2SQLReq(String querySql, DataSetResp dataSet) {
|
||||
QuerySqlReq querySQLReq = new QuerySqlReq();
|
||||
if (Objects.nonNull(querySql)) {
|
||||
querySQLReq.setSql(querySql);
|
||||
}
|
||||
querySQLReq.setDataSetId(dataSetId);
|
||||
querySQLReq.setDataSetId(dataSet.getId());
|
||||
querySQLReq.setDataSetName(dataSet.getName());
|
||||
return querySQLReq;
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user