1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Bug#30333 (Performance, expressions lists in the parser)

Before this patch, the parser would execute:
- Select->expr_list.push_front()
- Select->expr_list.pop()
when parsing expressions lists, in the following rules:
- udf_expr_list
- expr_list
- ident_list

This is unnecessary, and introduces overhead due to the memory allocations
performed with Select->expr_list

With this patch, this code has been removed.
The list being parsed is maintained in the parser stack instead.

Also, 'udf_expr_list' has been renamed 'opt_udf_expr_list', since this
production can be empty.


sql/sql_lex.cc:
  Removed unused attribute expr_list
sql/sql_lex.h:
  Removed unused attribute expr_list
sql/sql_yacc.yy:
  Improved performances when parsing expression lists
This commit is contained in:
unknown
2007-08-22 15:38:32 -06:00
parent 49fea65f2b
commit 5dc3e88947
3 changed files with 41 additions and 40 deletions

View File

@ -596,7 +596,6 @@ public:
const char *type; /* type of select for EXPLAIN */
SQL_LIST order_list; /* ORDER clause */
List<List_item> expr_list;
SQL_LIST *gorder_list;
Item *select_limit, *offset_limit; /* LIMIT clause parameters */
// Arrays of pointers to top elements of all_fields list