Skip to content

Commit a6ea7a3

Browse files
committed
Bug#30306021: REMOVE USELESS PARSE TREE NODE CLASSES
Parse tree node classes PT_query_expression_body_primary and PT_nested_query_expression looked like useless wrappers. So, the current patch has removed them. Change-Id: Iee5ebacd1f1915cdf3d4bd1e7c774c363c55bfec
1 parent 8e5b7b3 commit a6ea7a3

File tree

4 files changed

+25
-121
lines changed

4 files changed

+25
-121
lines changed

sql/dd/info_schema/show_query_builder.cc

+7-18
Original file line numberDiff line numberDiff line change
@@ -274,13 +274,8 @@ PT_derived_table *Select_lex_builder::prepare_derived_table(
274274

275275
if (query_specification == nullptr) return nullptr;
276276

277-
PT_query_expression_body_primary *query_expression_body_primary =
278-
new (m_thd->mem_root)
279-
PT_query_expression_body_primary(query_specification);
280-
if (query_expression_body_primary == nullptr) return nullptr;
281-
282277
PT_query_expression *query_expression =
283-
new (m_thd->mem_root) PT_query_expression(query_expression_body_primary);
278+
new (m_thd->mem_root) PT_query_expression(query_specification);
284279
if (query_expression == nullptr) return nullptr;
285280

286281
PT_subquery *sub_query =
@@ -300,26 +295,20 @@ PT_derived_table *Select_lex_builder::prepare_derived_table(
300295
added to this Select_lex_builder.
301296
*/
302297
SELECT_LEX *Select_lex_builder::prepare_select_lex() {
303-
PT_query_specification *query_specification2 =
298+
PT_query_specification *query_specification =
304299
new (m_thd->mem_root) PT_query_specification(
305300
options, m_select_item_list, m_table_reference_list, m_where_clause);
306-
if (query_specification2 == nullptr) return nullptr;
307-
308-
PT_query_expression_body_primary *query_expression_body_primary2 =
309-
new (m_thd->mem_root)
310-
PT_query_expression_body_primary(query_specification2);
311-
if (query_expression_body_primary2 == nullptr) return nullptr;
301+
if (query_specification == nullptr) return nullptr;
312302

313303
PT_order *pt_order_by = nullptr;
314304
if (m_order_by_list) {
315305
pt_order_by = new (m_thd->mem_root) PT_order(m_order_by_list);
316306
if (pt_order_by == nullptr) return nullptr;
317307
}
318308

319-
PT_query_expression *query_expression2 =
320-
new (m_thd->mem_root) PT_query_expression(query_expression_body_primary2,
321-
pt_order_by, nullptr, nullptr);
322-
if (query_expression2 == nullptr) return nullptr;
309+
PT_query_expression *query_expression = new (m_thd->mem_root)
310+
PT_query_expression(query_specification, pt_order_by, nullptr, nullptr);
311+
if (query_expression == nullptr) return nullptr;
323312

324313
LEX *lex = m_thd->lex;
325314
SELECT_LEX *current_select = lex->current_select();
@@ -328,7 +317,7 @@ SELECT_LEX *Select_lex_builder::prepare_select_lex() {
328317
Parse_context pc(m_thd, current_select);
329318
if (m_thd->is_error()) return nullptr;
330319

331-
if (query_expression2->contextualize(&pc)) return nullptr;
320+
if (query_expression->contextualize(&pc)) return nullptr;
332321

333322
return current_select;
334323
}

sql/parse_tree_nodes.h

+10-75
Original file line numberDiff line numberDiff line change
@@ -1439,15 +1439,7 @@ class PT_window_list : public Parse_tree_node {
14391439
bool push_back(PT_window *w) { return m_windows.push_back(w); }
14401440
};
14411441

1442-
class PT_query_primary : public Parse_tree_node {
1443-
public:
1444-
virtual bool has_into_clause() const = 0;
1445-
virtual bool is_union() const = 0;
1446-
virtual bool can_absorb_order_and_limit() const = 0;
1447-
1448-
virtual bool is_table_value_constructor() const { return false; }
1449-
virtual PT_insert_values_list *get_row_value_list() const { return nullptr; }
1450-
};
1442+
class PT_query_primary : public PT_query_expression_body {};
14511443

14521444
class PT_query_specification : public PT_query_primary {
14531445
typedef PT_query_primary super;
@@ -1513,6 +1505,9 @@ class PT_query_specification : public PT_query_primary {
15131505
bool is_union() const override { return false; }
15141506

15151507
bool can_absorb_order_and_limit() const override { return true; }
1508+
1509+
bool is_table_value_constructor() const override { return false; }
1510+
PT_insert_values_list *get_row_value_list() const override { return nullptr; }
15161511
};
15171512

15181513
class PT_table_value_constructor : public PT_query_primary {
@@ -1549,7 +1544,7 @@ class PT_explicit_table : public PT_query_specification {
15491544
: super(options_arg, item_list_arg, from_clause_arg, nullptr) {}
15501545
};
15511546

1552-
class PT_query_expression final : public Parse_tree_node {
1547+
class PT_query_expression final : public PT_query_primary {
15531548
public:
15541549
PT_query_expression(PT_with_clause *with_clause,
15551550
PT_query_expression_body *body, PT_order *order,
@@ -1576,20 +1571,20 @@ class PT_query_expression final : public Parse_tree_node {
15761571
PT_query_expression_body *body() { return m_body; }
15771572

15781573
/// Called by the Bison parser.
1579-
bool is_union() const { return m_body->is_union(); }
1574+
bool is_union() const override { return m_body->is_union(); }
15801575

15811576
/// Called by the Bison parser.
1582-
bool has_into_clause() const { return m_body->has_into_clause(); }
1577+
bool has_into_clause() const override { return m_body->has_into_clause(); }
15831578

1584-
bool can_absorb_order_and_limit() const {
1579+
bool can_absorb_order_and_limit() const override {
15851580
return !m_body->is_union() && m_order == nullptr && m_limit == nullptr;
15861581
}
15871582

1588-
bool is_table_value_constructor() const {
1583+
bool is_table_value_constructor() const override {
15891584
return m_body->is_table_value_constructor();
15901585
}
15911586

1592-
PT_insert_values_list *get_row_value_list() const {
1587+
PT_insert_values_list *get_row_value_list() const override {
15931588
return m_body->get_row_value_list();
15941589
}
15951590

@@ -1634,40 +1629,6 @@ class PT_subquery : public Parse_tree_node {
16341629
SELECT_LEX *value() { return select_lex; }
16351630
};
16361631

1637-
class PT_query_expression_body_primary : public PT_query_expression_body {
1638-
public:
1639-
PT_query_expression_body_primary(PT_query_primary *query_primary)
1640-
: m_query_primary(query_primary) {}
1641-
1642-
bool contextualize(Parse_context *pc) override {
1643-
if (PT_query_expression_body::contextualize(pc) ||
1644-
m_query_primary->contextualize(pc))
1645-
return true;
1646-
return false;
1647-
}
1648-
1649-
bool is_union() const override { return m_query_primary->is_union(); }
1650-
1651-
bool has_into_clause() const override {
1652-
return m_query_primary->has_into_clause();
1653-
}
1654-
1655-
bool can_absorb_order_and_limit() const override {
1656-
return m_query_primary->can_absorb_order_and_limit();
1657-
}
1658-
1659-
bool is_table_value_constructor() const override {
1660-
return m_query_primary->is_table_value_constructor();
1661-
}
1662-
1663-
PT_insert_values_list *get_row_value_list() const override {
1664-
return m_query_primary->get_row_value_list();
1665-
}
1666-
1667-
private:
1668-
PT_query_primary *m_query_primary;
1669-
};
1670-
16711632
class PT_union : public PT_query_expression_body {
16721633
public:
16731634
PT_union(PT_query_expression *lhs, const POS &lhs_pos, bool is_distinct,
@@ -1698,32 +1659,6 @@ class PT_union : public PT_query_expression_body {
16981659
PT_into_destination *m_into;
16991660
};
17001661

1701-
class PT_nested_query_expression : public PT_query_primary {
1702-
typedef PT_query_primary super;
1703-
1704-
public:
1705-
PT_nested_query_expression(PT_query_expression *qe) : m_qe(qe) {}
1706-
1707-
bool contextualize(Parse_context *pc) override {
1708-
if (super::contextualize(pc)) return true;
1709-
1710-
bool result = m_qe->contextualize(pc);
1711-
1712-
return result;
1713-
}
1714-
1715-
bool is_union() const override { return m_qe->is_union(); }
1716-
1717-
bool has_into_clause() const override { return m_qe->has_into_clause(); }
1718-
1719-
bool can_absorb_order_and_limit() const override {
1720-
return m_qe->can_absorb_order_and_limit();
1721-
}
1722-
1723-
private:
1724-
PT_query_expression *m_qe;
1725-
};
1726-
17271662
class PT_select_stmt : public Parse_tree_root {
17281663
typedef Parse_tree_root super;
17291664

sql/sql_show_status.cc

+2-12
Original file line numberDiff line numberDiff line change
@@ -176,14 +176,9 @@ static SELECT_LEX *build_query(const POS &pos, THD *thd,
176176
NULL); // where
177177
if (query_specification == NULL) return NULL;
178178

179-
PT_query_expression_body_primary *query_expression_body_primary;
180-
query_expression_body_primary =
181-
new (thd->mem_root) PT_query_expression_body_primary(query_specification);
182-
if (query_expression_body_primary == NULL) return NULL;
183-
184179
PT_query_expression *query_expression;
185180
query_expression =
186-
new (thd->mem_root) PT_query_expression(query_expression_body_primary);
181+
new (thd->mem_root) PT_query_expression(query_specification);
187182
if (query_expression == NULL) return NULL;
188183

189184
PT_subquery *sub_query;
@@ -256,14 +251,9 @@ static SELECT_LEX *build_query(const POS &pos, THD *thd,
256251
where_clause); // where
257252
if (query_specification2 == NULL) return NULL;
258253

259-
PT_query_expression_body_primary *query_expression_body_primary2;
260-
query_expression_body_primary2 = new (thd->mem_root)
261-
PT_query_expression_body_primary(query_specification2);
262-
if (query_expression_body_primary2 == NULL) return NULL;
263-
264254
PT_query_expression *query_expression2;
265255
query_expression2 =
266-
new (thd->mem_root) PT_query_expression(query_expression_body_primary2);
256+
new (thd->mem_root) PT_query_expression(query_specification2);
267257
if (query_expression2 == NULL) return NULL;
268258

269259
LEX *lex = thd->lex;

sql/sql_yacc.yy

+6-16
Original file line numberDiff line numberDiff line change
@@ -9073,19 +9073,15 @@ query_expression:
90739073
opt_limit_clause
90749074
opt_locking_clause_list
90759075
{
9076-
auto nested= NEW_PTN PT_nested_query_expression($1);
9077-
auto body= NEW_PTN PT_query_expression_body_primary(nested);
9078-
$$= NEW_PTN PT_query_expression(body, $2, $3, $4);
9076+
$$= NEW_PTN PT_query_expression($1, $2, $3, $4);
90799077
}
90809078
| with_clause
90819079
query_expression_parens
90829080
order_clause
90839081
opt_limit_clause
90849082
opt_locking_clause_list
90859083
{
9086-
auto nested= NEW_PTN PT_nested_query_expression($2);
9087-
auto body= NEW_PTN PT_query_expression_body_primary(nested);
9088-
$$= NEW_PTN PT_query_expression($1, body, $3, $4, $5);
9084+
$$= NEW_PTN PT_query_expression($1, $2, $3, $4, $5);
90899085
}
90909086
| query_expression_parens
90919087
limit_clause
@@ -9117,7 +9113,7 @@ query_expression:
91179113
query_expression_body:
91189114
query_primary
91199115
{
9120-
$$= NEW_PTN PT_query_expression_body_primary($1);
9116+
$$ = $1;
91219117
}
91229118
| query_expression_body UNION_SYM union_option query_primary
91239119
{
@@ -9139,10 +9135,7 @@ query_expression_body:
91399135
YYTHD->syntax_error_at(@4);
91409136

91419137
auto lhs_qe= NEW_PTN PT_query_expression($1);
9142-
PT_nested_query_expression *nested_qe=
9143-
NEW_PTN PT_nested_query_expression($4);
9144-
9145-
$$= NEW_PTN PT_union(lhs_qe, @1, $3, nested_qe);
9138+
$$= NEW_PTN PT_union(lhs_qe, @1, $3, $4);
91469139
}
91479140
| query_expression_parens UNION_SYM union_option query_expression_parens
91489141
{
@@ -9152,9 +9145,7 @@ query_expression_body:
91529145
if ($4->is_union())
91539146
YYTHD->syntax_error_at(@4);
91549147

9155-
PT_nested_query_expression *nested_qe=
9156-
NEW_PTN PT_nested_query_expression($4);
9157-
$$= NEW_PTN PT_union($1, @1, $3, nested_qe);
9148+
$$= NEW_PTN PT_union($1, @1, $3, $4);
91589149
}
91599150
;
91609151

@@ -11849,8 +11840,7 @@ do_stmt:
1184911840
{
1185011841
$$= NEW_PTN PT_select_stmt(SQLCOM_DO,
1185111842
NEW_PTN PT_query_expression(
11852-
NEW_PTN PT_query_expression_body_primary(
11853-
NEW_PTN PT_query_specification({}, $2))));
11843+
NEW_PTN PT_query_specification({}, $2)));
1185411844
}
1185511845
;
1185611846

0 commit comments

Comments
 (0)