Skip to content

Commit 7eb3b9f

Browse files
committed
feat: improve SQL template
1 parent 3812d53 commit 7eb3b9f

File tree

13 files changed

+44
-2
lines changed

13 files changed

+44
-2
lines changed

backend/apps/chat/models/chat_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ def sql_sys_question(self, db_type: Union[str, DB], enable_query_limit: bool = T
200200
_process_check = _sql_template.get('process_check') if _sql_template.get('process_check') else _base_template[
201201
'process_check']
202202
_query_limit = _base_template['query_limit'] if enable_query_limit else _base_template['no_query_limit']
203-
_base_sql_rules = _sql_template['quot_rule'] + _query_limit + _sql_template['limit_rule'] + _sql_template[
204-
'other_rule']
203+
_other_rule = _sql_template['other_rule'].format(multi_table_condition=_base_template['multi_table_condition'])
204+
_base_sql_rules = _sql_template['quot_rule'] + _query_limit + _sql_template['limit_rule'] + _other_rule
205205
_sql_examples = _sql_template['basic_example']
206206
_example_engine = _sql_template['example_engine']
207207
_example_answer_1 = _sql_template['example_answer_1_with_limit'] if enable_query_limit else _sql_template[

backend/templates/sql_examples/AWS_Redshift.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ template:
2020
2121
other_rule: |
2222
<rule>必须为每个表生成别名(不加AS)</rule>
23+
{multi_table_condition}
2324
<rule>禁止使用星号(*),必须明确字段名</rule>
2425
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2526
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/ClickHouse.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个表生成简短别名(如t1/t2)</rule>
24+
{multi_table_condition}
2425
<rule>禁止使用星号(*),必须明确字段名</rule>
2526
<rule>JSON字段需用点号语法访问:`"column.field"`</rule>
2627
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/DM.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个表生成别名(不加AS)</rule>
24+
{multi_table_condition}
2425
<rule>禁止使用星号(*),必须明确字段名</rule>
2526
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2627
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/Doris.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个表生成别名(不加AS)</rule>
24+
{multi_table_condition}
2425
<rule>禁止使用星号(*),必须明确字段名</rule>
2526
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2627
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/Elasticsearch.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个索引生成别名(不加AS)</rule>
24+
<rule>
25+
<title>Elasticsearch SQL多表查询字段限定规则</title>
26+
<requirements>
27+
<requirement>当使用JOIN涉及多个索引时,所有字段引用必须明确限定索引别名</requirement>
28+
<requirement>适用于SELECT、WHERE、GROUP BY、HAVING、ORDER BY、ON等子句中的所有字段引用</requirement>
29+
<requirement>单索引查询不需要表名前缀</requirement>
30+
</requirements>
31+
<notes>
32+
<note>Elasticsearch的JOIN性能有限,仅适合小数据量关联</note>
33+
<note>标识符引用使用双引号(")</note>
34+
<note>大多数Elasticsearch查询是单索引查询,不需要字段限定</note>
35+
<note>嵌套字段通过点号访问,如 "customer.name",不需要表名前缀</note>
36+
</notes>
37+
</rule>
2438
<rule>禁止使用星号(*),必须明确字段名</rule>
2539
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2640
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/Kingbase.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个表生成别名(不加AS)</rule>
24+
{multi_table_condition}
2425
<rule>禁止使用星号(*),必须明确字段名</rule>
2526
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2627
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/Microsoft_SQL_Server.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ template:
2121
2222
other_rule: |
2323
<rule>必须为每个表生成别名(不加AS)</rule>
24+
{multi_table_condition}
2425
<rule>禁止使用星号(*),必须明确字段名</rule>
2526
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2627
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/MySQL.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ template:
2020
2121
other_rule: |
2222
<rule>必须为每个表生成别名(不加AS)</rule>
23+
{multi_table_condition}
2324
<rule>禁止使用星号(*),必须明确字段名</rule>
2425
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
2526
<rule>函数字段必须加别名</rule>

backend/templates/sql_examples/Oracle.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ template:
8383
8484
other_rule: |
8585
<rule>必须为每个表生成别名(不加AS)</rule>
86+
{multi_table_condition}
8687
<rule>禁止使用星号(*),必须明确字段名</rule>
8788
<rule>中文/特殊字符字段需保留原名并添加英文别名</rule>
8889
<rule>函数字段必须加别名</rule>

0 commit comments

Comments
 (0)