MCPcopy Create free account
hub / github.com/PaddlePaddle/Research / SQL

Class SQL

NLP/Text2SQL-BASELINE/text2sql/dataproc/sql_label.py:37–138  ·  view source on GitHub ↗

SQL define

Source from the content-addressed store, hash-verified

35g_having_agg_threshold = 0.9
36
37class SQL(object):
38 """SQL define"""
39 op_sql_dict = {0: ">", 1: "<", 2: "==", 3: "!=", 4: ">=", 5: "<="}
40 agg_sql_dict = {0: "", 1: "AVG", 2: "MAX", 3: "MIN", 4: "COUNT", 5: "SUM"}
41 conn_sql_dict = {0: "", 1: "and", 2: "or"}
42 order_dict = {0: "", 1: "asc", 2: "desc"}
43 sel_num_dict = {0: 1, 1: 2, 2: 3, 3: 4}
44 #cond_num_dict = {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
45 cond_num_dict = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
46 group_num_dict = {0: 0, 1: 1}
47 group_type_dict = {0: 'none', 1: 'group', 2: 'group_having', 3: 'group_order'}
48
49 order2id = {"": 0, "asc": 1, "desc": 2}
50
51 num_where_ops = len(op_sql_dict) + 1
52 num_agg_ops = len(agg_sql_dict)
53 num_cond_ops = len(conn_sql_dict)
54 num_order_directions = len(order_dict)
55 num_sel_num = len(sel_num_dict)
56 num_where_num = len(cond_num_dict)
57 num_group_num = len(group_num_dict)
58 num_group_type = len(group_type_dict)
59
60 dtype_str = 'text'
61 dtype_num = 'real'
62
63 def __init__(self, cond_conn_op: int, agg: list, sel: list, conds: list, **kwargs):
64 """doc"""
65 self.cond_conn_op = cond_conn_op
66 self.sel = []
67 self.agg = []
68 sel_agg_pairs = sorted(zip(sel, agg), key=lambda x: x[0])
69 for col_id, agg_op in sel_agg_pairs:
70 self.sel.append(col_id)
71 self.agg.append(agg_op)
72 self.conds = list(sorted(conds, key=lambda x: x[0]))
73 self.order_by = list(sorted(kwargs.get("order_by", [])))
74 self.group_by = list(sorted(kwargs.get("group_by", [])))
75 self.having = list(sorted(kwargs.get("having", [])))
76 order_str = kwargs.get("order_direction", "").lower()
77 self.order_direction = self.order2id.get(order_str, 0)
78 limit = kwargs.get("limit", None)
79 self.limit = '0' if limit is None else str(limit)
80 self.sel_num = len(self.sel)
81 self.cond_num = len(self.conds)
82 self.group_num = len(self.group_by)
83 self.group_type = 0
84 if len(self.group_by) > 0:
85 self.group_type = 1
86 if len(self.having) > 0:
87 self.group_type = 2
88 elif len(self.order_by) > 0 and self.order_by[0][0] > 0:
89 self.group_type = 3
90
91
92 @classmethod
93 def from_dict(cls, data: dict):
94 """doc"""

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected