fix: 显示并提示 sql 变量只能在where中使用
This commit is contained in:
parent
b0b9de235d
commit
0f5b69aebe
@ -45,6 +45,7 @@ import io.dataease.service.engine.EngineService;
|
||||
import io.dataease.service.sys.SysAuthService;
|
||||
import net.sf.jsqlparser.expression.BinaryExpression;
|
||||
import net.sf.jsqlparser.expression.Expression;
|
||||
import net.sf.jsqlparser.expression.ExpressionVisitor;
|
||||
import net.sf.jsqlparser.expression.Parenthesis;
|
||||
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
|
||||
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
|
||||
@ -52,6 +53,7 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
|
||||
import net.sf.jsqlparser.expression.operators.relational.InExpression;
|
||||
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
|
||||
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
||||
import net.sf.jsqlparser.parser.SimpleNode;
|
||||
import net.sf.jsqlparser.statement.Statement;
|
||||
import net.sf.jsqlparser.statement.select.PlainSelect;
|
||||
import net.sf.jsqlparser.statement.select.Select;
|
||||
@ -951,6 +953,14 @@ public class DataSetTableService {
|
||||
return sqlVariableDetails;
|
||||
}
|
||||
|
||||
|
||||
public void checkVariable(final String sql) throws Exception{
|
||||
String tmpSql = removeVariables(sql);
|
||||
if (tmpSql.contains(SubstitutedParams)) {
|
||||
throw new Exception(Translator.get("I18N_SQL_variable_limit"));
|
||||
}
|
||||
}
|
||||
|
||||
public String handleVariableDefaultValue(String sql, String sqlVariableDetails) {
|
||||
if (StringUtils.isEmpty(sql)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
|
||||
@ -1022,6 +1032,7 @@ public class DataSetTableService {
|
||||
if (StringUtils.isEmpty(sql)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
|
||||
}
|
||||
checkVariable(sql);
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
String sqlAsTable = qp.createSQLPreview(sql, null);
|
||||
datasourceRequest.setQuery(sqlAsTable);
|
||||
|
||||
@ -188,3 +188,4 @@ I18N_NO_PERMISSION=You do not have permission to
|
||||
I18N_PLEASE_CONCAT_ADMIN=Please contact the administrator for authorization
|
||||
|
||||
|
||||
I18N_SQL_variable_limit=SQL variables can only be used in where conditions
|
||||
@ -190,3 +190,5 @@ I18N_DATASOURCE_LEVEL_GRANT=授权
|
||||
I18N_NO_PERMISSION=当前用户没有权限
|
||||
|
||||
I18N_PLEASE_CONCAT_ADMIN=请联系管理员开通
|
||||
|
||||
I18N_SQL_variable_limit=SQL 变量只能在 WHERE 条件中使用
|
||||
|
||||
@ -184,4 +184,6 @@ I18N_DATASOURCE_LEVEL_GRANT=授權
|
||||
|
||||
I18N_NO_PERMISSION=當前用戶沒有權限
|
||||
|
||||
I18N_PLEASE_CONCAT_ADMIN=請聯系管理員開通
|
||||
I18N_PLEASE_CONCAT_ADMIN=請聯系管理員開通
|
||||
|
||||
I18N_SQL_variable_limit=SQL變數只能在WHERE條件中使用
|
||||
@ -1122,6 +1122,7 @@ export default {
|
||||
max_more_than_mix: 'Max must more than Min'
|
||||
},
|
||||
dataset: {
|
||||
sql_variable_limit: 'SQL variables can only be used in where conditions',
|
||||
select_year: 'Select Year',
|
||||
select_month: 'Select Month',
|
||||
select_date: 'Select Date',
|
||||
|
||||
@ -1122,6 +1122,7 @@ export default {
|
||||
max_more_than_mix: '最大值必須大於最小值'
|
||||
},
|
||||
dataset: {
|
||||
sql_variable_limit: 'SQL 變數只能在 WHERE 條件中使用',
|
||||
select_year: '選擇年',
|
||||
select_month: '選擇月',
|
||||
select_date: '選擇日期',
|
||||
|
||||
@ -1125,6 +1125,7 @@ export default {
|
||||
},
|
||||
dataset: {
|
||||
select_year: '选择年',
|
||||
sql_variable_limit: 'SQL 变量只能在 WHERE 条件中使用',
|
||||
select_month: '选择月',
|
||||
select_date: '选择日期',
|
||||
select_time: '选择时间',
|
||||
|
||||
@ -46,12 +46,26 @@
|
||||
<el-option :label="$t('dataset.sync_latter')" value="sync_latter"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<span v-if="mode === '0'" style="line-height: 26px;">
|
||||
<el-tooltip class="item" effect="dark" content="Right Bottom 提示文字" placement="bottom">
|
||||
<div slot="content">
|
||||
{{ $t('dataset.sql_variable_limit') }}<br>
|
||||
</div>
|
||||
<i class="el-icon-info" style="cursor: pointer;" />
|
||||
</el-tooltip>
|
||||
</span>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-button v-if="mode === '0'" type="text" size="mini" style="float: right;" @click="variableMgm">
|
||||
{{ $t('sql_variable.variable_mgm') }}
|
||||
</el-button>
|
||||
|
||||
<el-tooltip tyle="float: right;" v-if="mode === '0'" class="item" effect="dark" :content="$t('dataset.sql_variable_limit')" placement="left">
|
||||
<el-button type="text" size="mini" style="float: right;" @click="variableMgm">
|
||||
{{ $t('sql_variable.variable_mgm') }}
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user