mariadb/sql
unknown 476eaae84d Bug#19194 (Right recursion in parser for CASE causes excessive stack usage,
limitation)

Note to the reviewer
====================

Warning: reviewing this patch is somewhat involved.
Due to the nature of several issues all affecting the same area,
fixing separately each issue is not practical, since each fix can not be
implemented and tested independently.
In particular, the issues with
- rule recursion
- nested case statements
- forward jump resolution (backpatch list)
are tightly coupled (see below).

Definitions
===========

The expression
  CASE expr
  WHEN expr THEN expr
  WHEN expr THEN expr
  ...
  END
is a "Simple Case Expression".

The expression
  CASE
  WHEN expr THEN expr
  WHEN expr THEN expr
  ...
  END
is a "Searched Case Expression".

The statement
  CASE expr
  WHEN expr THEN stmts
  WHEN expr THEN stmts
  ...
  END CASE
is a "Simple Case Statement".

The statement
  CASE
  WHEN expr THEN stmts
  WHEN expr THEN stmts
  ...
  END CASE
is a "Searched Case Statement".

A "Left Recursive" rule is like
  list:
      element
    | list element
    ;

A "Right Recursive" rule is like
  list:
      element
    | element list
    ;

Left and right recursion produces the same language, the difference only
affects the *order* in which the text is parsed.

In a descendant parser (usually written manually), right recursion works
very well, and is typically implemented with a while loop.
In an ascendant parser (yacc/bison) left recursion works very well,
and is implemented naturally by the parser stack.
In both cases, using the wrong type or recursion is very bad and should be
avoided, as it causes technical issues with the parser implementation.

Before this change
==================

The "Simple Case Expression" and "Searched Case Expression" were both
implemented by the "when_list" and "when_list2" rules, which are left
recursive (ok).

These rules, however, used lex->when_list instead of using the parser stack,
which is more complex that necessary, and potentially dangerous because
of other rules using THD::reset_lex.

The "Simple Case Statement" and "Searched Case Statements" were implemented
by the "sp_case", "sp_whens" and in part by "sp_proc_stmt" rules.
Both cases were right recursive (bad).

The grammar involved was convoluted, and is assumed to be the results of
tweaks to get the code generation to work, but is not what someone would
naturally write.

In addition, using a common rule for both "Simple" and "Searched" case
statements was implemented with sp_head::m_flags |= IN_SIMPLE_CASE,
which is a flag and not a stack, and therefore does not take into account
*nested* case statements. This leads to incorrect generated code, and either
a server crash or an incorrect result.

With regards to the backpatch mechanism, a *different* backpatch list was
created for each jump from "WHEN expr THEN stmt" to "END CASE", which
relied on the grammar to be right recursive.
This is a mis-use of the backpatch list, since this list can resolve
multiple references to the same target at once.

The optimizer algorithm used to detect dead code in the "assembly" SQL
instructions, implemented by sp_head::opt_mark(uint ip), was recursive
in some cases (a conditional jump pointing forward to another conditional
jump).
In case of specially crafted code, like
- a long list of "IF expr THEN stmt END IF"
- a long CASE statement
this would actually cause a server crash with a stack overflow.
In general, having a stack that grows proportionally with user data (the
SQL code given by the client in a CREATE PROCEDURE) is to be avoided.

In debug builds only, creating a SP / SF / Trigger which had a significant
amount of code would spend --literally-- several minutes in sp_head::create,
because of the debug code involved with DBUG_PRINT("info", ("Code %s ...
There are several issues with this code:
- in a CASE with 5 000 WHEN, there are 15 000 instructions generated,
  which create a sting representation of the code which is 500 000 bytes
  long,
- using a String instead of an io stream causes performances to degrade
  to a total server freeze, as time is spent doing realloc of a buffer
  always too short,
- Printing a 500 000 long string in the debug log is too verbose,
- Generating this string even when DBUG_PRINT is off is useless,
- Having code that potentially can affect the server behavior, used with
  #ifdef / #endif is useful in some cases, but is also a bad practice.

After this change
=================

"Case Expressions" (both simple and searched) have been simplified to
not use LEX::when_list, which has been removed.

Considering all the issues affecting case statements, the grammar for these
has been totally re written.

The existing actions, used to generate "assembly" sp_inst* code, have been
preserved but moved in the new grammar, with the following changes:

a) Bison rules are no longer shared between "Simple" and "Searched" case
statements, because a stack instead of a flag is required to handle them.
Nested statements are handled naturally by the parser stack, which by
definition uses the correct rule in the correct context.
Nested statements of the opposite type (simple vs searched) works correctly.
The flag sp_head::IN_SIMPLE_CASE is no longer used.
This is a step towards resolution of WL#2999, which correctly identified
that temporary parsing flags do not belong to sp_head.
The code in the action is shared by mean of the case_stmt_action_xxx()
helpers.

b) The backpatch mechanism, used to resolve forward jumps in the generated
code, has been changed to:
- create a label for the instruction following 'END CASE',
- register each jump at the end of a "WHEN expr THEN stmt" in a *unique*
  backpatch list associated with the 'END CASE' label
- resolve all the forward jumps for this label at once.

In addition, the code involving backpatch has been commented, so that a
reader can now understand by reading matching "Registering" and "Resolving"
comments how the forward jumps are resolved and what target they resolve to,
as this is far from evident when reading the code alone.

The implementation of sp_head::opt_mark() has been revised to avoid
recursive calls from jump instructions, and instead add the jump location
to the list of paths to explore during the flow analysis of the instruction
graph, with a call to sp_head::add_mark_lead().
In addition, the flow analysis will stop if an instruction has already
been marked as reachable, which the previous code failed to do in the
recursive case.
sp_head::opt_mark() is now private, to prevent new calls to this method from
being introduced.

The debug code present in sp_head::create() has been removed.
Considering that SHOW PROCEDURE CODE is also available in debug builds,
and can be used anytime regardless of the trace level, as opposed to
"CREATE PROCEDURE" time and only if the trace was on,
removing the code actually makes debugging easier (usable trace).

Tests have been written to cover the parser overflow (big CASE),
and to cover nested CASE statements.


mysql-test/r/sp-code.result:
  Test cases for nested CASE statements.
mysql-test/t/sp-code.test:
  Test cases for nested CASE statements.
sql/sp_head.cc:
  Re factored opt_mark() to avoid recursion, clean up.
sql/sp_head.h:
  Re factored opt_mark() to avoid recursion, clean up.
sql/sql_lex.cc:
  Removed when_list.
sql/sql_lex.h:
  Removed when_list.
sql/sql_yacc.yy:
  Minor clean up for case expressions,
  Major re write for case statements (Bug#19194).
mysql-test/r/sp_stress_case.result:
  New test for massive CASE statements.
mysql-test/t/sp_stress_case.sh:
  New test for massive CASE statements.
mysql-test/t/sp_stress_case.test:
  New test for massive CASE statements.
2006-11-17 12:14:29 -07:00
..
examples Additional files for cmake support 2006-08-31 19:52:42 +02:00
share Addition to fix for bug#10974. Fixed spelling. 2006-10-06 11:03:14 +05:00
.cvsignore
add_errmsg
client_settings.h
CMakeLists.txt Fix for bug #19121: Windows incompatible udf_example 2006-09-22 14:42:43 +02:00
custom_conf.h
derror.cc
des_key_file.cc Many files: 2005-09-30 14:03:55 +02:00
discover.cc
field.cc Merge bk-internal:/home/bk/mysql-5.0-rpl 2006-10-03 14:24:43 +02:00
field.h Merge rurik.mysql.com:/home/igor/mysql-4.1-opt 2006-09-20 09:47:36 -07:00
field_conv.cc Bug#19960 Inconsistent results when joining InnoDB tables using partial UTF8 indexes 2006-09-29 16:15:57 +05:00
filesort.cc Added a missing breakpoint. This could cause 2006-10-03 12:44:59 +03:00
frm_crypt.cc
gen_lex_hash.cc Merge zippy.cornsilk.net:/home/cmiller/work/mysql/merge/mysql-5.0-maint-gca 2006-08-23 18:37:04 -04:00
gstream.cc
gstream.h
ha_archive.cc Fixed that max_zfile_size was incorrectly calculated on big-endian boxes. 2006-09-29 21:36:17 +05:00
ha_archive.h BUG#21675 - engine=archive 2GB file limit, when reached mysqld restarts on any query 2006-09-28 20:30:15 +05:00
ha_berkeley.cc Bug#20573 2006-08-30 13:20:39 -07:00
ha_berkeley.h Fixes during review of new code 2005-11-03 22:42:25 +02:00
ha_blackhole.cc Revoking patch for Bug#10952 on behalf of Brian. 2006-07-10 20:46:05 +02:00
ha_blackhole.h Merge a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-4.1 2005-08-26 15:56:52 +03:00
ha_federated.cc autopush test - sorry for the commit messages, ignore 2006-08-09 17:41:35 -07:00
ha_federated.h BUG #15133 "unique index with nullable value not accepted in federated table" 2006-07-25 18:38:09 -04:00
ha_heap.cc Bug#20573 2006-08-30 13:20:39 -07:00
ha_heap.h Merge mysql.com:/opt/local/work/mysql-4.1-root 2006-02-02 18:17:18 +03:00
ha_innodb.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-09-23 09:48:43 -04:00
ha_innodb.h foo2 2006-04-13 17:22:56 +09:30
ha_myisam.cc Merge april.(none):/home/svoj/devel/bk/mysql-5.0-engines 2006-09-12 18:53:51 +05:00
ha_myisam.h BUG#20256 - LOCK WRITE - MyISAM 2006-09-12 18:25:35 +05:00
ha_myisammrg.cc After merge fix. 2006-10-08 22:34:32 +05:00
ha_myisammrg.h Bug#19648 2006-05-30 17:10:53 -07:00
ha_ndbcluster.cc Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0 2006-09-18 16:23:45 +05:00
ha_ndbcluster.h Fix for bug #21059 Server crashes on join query with large dataset with NDB tables: do not release operation records for on-going read_multi_range 2006-08-15 14:31:21 +02:00
handler.cc Merge april.(none):/home/svoj/devel/bk/mysql-5.0-engines 2006-09-12 18:53:51 +05:00
handler.h Merge april.(none):/home/svoj/devel/bk/mysql-5.0-engines 2006-09-12 18:53:51 +05:00
hash_filo.cc
hash_filo.h
hostname.cc Merge mysql.com:/usr/home/ram/work/mysql-4.1 2006-03-03 15:32:00 +04:00
init.cc Fixes during review of new pushed code 2005-08-12 13:54:42 +03:00
item.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-10-02 22:53:10 +04:00
item.h Merge dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt 2006-09-15 14:14:38 +02:00
item_buff.cc Fix for bug#19667 group by a decimal expression yields wrong result 2006-06-15 16:24:02 +05:00
item_cmpfunc.cc merge fixes 2006-09-18 12:14:27 +02:00
item_cmpfunc.h Merge polly.local:/tmp/20924/bug20294/my50-bug20294 2006-09-13 16:06:59 +04:00
item_create.cc Bug#16172 DECIMAL data type processed incorrectly 2006-08-08 14:40:07 +05:00
item_create.h Bug#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns 2006-07-02 14:35:45 +04:00
item_func.cc Fix for the patch for bug#21726: Incorrect result with multiple 2006-10-03 13:38:16 +04:00
item_func.h BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID 2006-10-02 14:28:23 +04:00
item_geofunc.cc bug #14807 (GeomFromText() should return MYSQL_TYPE_GEOMETRY) 2006-07-04 12:56:53 +05:00
item_geofunc.h Merge mysql.com:/home/mydev/mysql-4.1-bug14400 2006-07-05 11:20:10 +02:00
item_row.cc BUG#21166: Prepared statement causes signal 11 on second execution 2006-08-24 15:49:12 +04:00
item_row.h Merge mysql.com:/opt/local/work/mysql-4.1-16365 2006-04-12 18:30:54 +04:00
item_strfunc.cc Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint 2006-09-28 07:30:24 -04:00
item_strfunc.h Merge shellback.(none):/home/msvensson/mysql/mysql-5.0 2006-08-31 11:57:36 +02:00
item_subselect.cc BUG#16255: Merge to 5.0 2006-08-24 20:56:28 +04:00
item_subselect.h Merge mysql.com:/home/psergey/mysql-4.1-opt 2006-07-21 23:45:34 +04:00
item_sum.cc Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0 2006-10-10 18:11:10 +04:00
item_sum.h Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug21354 2006-10-10 17:18:36 +04:00
item_timefunc.cc Merge rama.(none):/home/jimw/my/mysql-4.1-clean 2006-09-28 18:09:10 -07:00
item_timefunc.h Manually merged 2006-06-17 02:11:12 +04:00
item_uniq.cc
item_uniq.h Inefficient usage of String::append() fixed. 2005-11-20 20:47:07 +02:00
key.cc Fix for bug#20670 "UPDATE using key and invoking trigger that modifies 2006-09-21 11:35:38 +04:00
lex.h Fixed BUG#18949: Test case sp-goto is disabled 2006-04-18 11:07:34 +02:00
lex_symbol.h
lock.cc Fix for bug#21216 "Simultaneous DROP TABLE and SHOW OPEN TABLES causes 2006-08-21 12:18:59 +04:00
log.cc Merge bk-internal:/home/bk/mysql-5.0 2006-10-03 20:28:59 +02:00
log_event.cc BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID 2006-10-02 14:28:23 +04:00
log_event.h Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit 2006-06-12 08:54:45 -04:00
Makefile.am Bug#18888 Trying to overwrite sql/lex_hash.h during build 2006-09-25 20:01:39 +02:00
matherr.c
message.mc make dist changes for Cmake build 2006-09-01 10:32:12 +02:00
mf_iocache.cc
my_decimal.cc Fix for bug #13573 (wrong data inserted for too big decimals) 2005-10-15 21:57:32 +05:00
my_decimal.h Fix for bug #13573 (wrong data inserted for too big decimals) 2005-10-15 21:57:32 +05:00
my_lock.c
mysql_priv.h Merge bk-internal:/home/bk/mysql-5.0-runtime 2006-10-03 14:26:11 +02:00
mysqld.cc Merge rama.(none):/home/jimw/my/mysql-4.1-clean 2006-09-28 18:09:10 -07:00
mysqld_suffix.h
net_serv.cc Merge maint2.mysql.com:/data/localhome/tsmith/bk/41 2006-09-01 08:53:56 +02:00
nt_servc.cc
nt_servc.h
opt_range.cc Merge bk-internal:/home/bk/mysql-5.0-runtime 2006-10-03 14:26:11 +02:00
opt_range.h Fix for bug#20670 "UPDATE using key and invoking trigger that modifies 2006-09-21 11:35:38 +04:00
opt_sum.cc Merge macbook.gmz:/Users/kgeorge/mysql/work/B16792-4.1-opt 2006-09-05 17:09:12 +03:00
parse_file.cc Fix for BUG#15921: DROP TRIGGER - can't be drop trigger created 2006-03-28 01:01:51 +04:00
parse_file.h Fix for BUG#15921: DROP TRIGGER - can't be drop trigger created 2006-03-28 01:01:51 +04:00
password.c Merge mysql.com:/opt/local/work/mysql-4.1-root 2006-01-11 17:49:56 +03:00
procedure.cc
procedure.h
protocol.cc Bug#8153 (Stored procedure with subquery and continue handler, wrong result) 2006-08-22 18:58:14 -07:00
protocol.h Fixes to embedded server to be able to run tests with it 2006-02-24 18:34:15 +02:00
records.cc Merge ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1 2005-10-27 23:43:20 +03:00
repl_failsafe.cc Bug #18607: LOAD DATA FROM MASTER fails because of INFORMATION_SCHEMA database 2006-04-21 18:26:39 -07:00
repl_failsafe.h pthread_handler_decl() changed to be ctags-friendly 2005-10-08 16:39:55 +02:00
set_var.cc Merge bk-internal:/home/bk/mysql-5.0 2006-10-03 20:28:59 +02:00
set_var.h A post-merge fix. 2006-07-08 04:07:43 +04:00
slave.cc Merge rama.(none):/home/jimw/my/mysql-4.1-clean 2006-09-28 18:09:10 -07:00
slave.h Merge bk-internal:/home/bk/mysql-5.0-maint 2006-09-28 20:17:17 -07:00
sp.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-09-29 10:55:03 +04:00
sp.h A fix and a test case for 2006-06-27 00:47:52 +04:00
sp_cache.cc Fix use of "%*s" *printf() specifiers that were really meant to be 2005-10-06 17:37:24 -07:00
sp_cache.h BUG#12228: Post review fixes: Added test case, code cleanup. 2005-08-10 21:17:02 +00:00
sp_head.cc Bug#19194 (Right recursion in parser for CASE causes excessive stack usage, 2006-11-17 12:14:29 -07:00
sp_head.h Bug#19194 (Right recursion in parser for CASE causes excessive stack usage, 2006-11-17 12:14:29 -07:00
sp_pcontext.cc Fixed BUG#18949: Test case sp-goto is disabled 2006-04-18 11:07:34 +02:00
sp_pcontext.h Fixed BUG#18949: Test case sp-goto is disabled 2006-04-18 11:07:34 +02:00
sp_rcontext.cc Bug#8153 (Stored procedure with subquery and continue handler, wrong result) 2006-08-02 22:18:49 -07:00
sp_rcontext.h Bug#8153 (Stored procedure with subquery and continue handler, wrong result) 2006-08-02 22:18:49 -07:00
spatial.cc Merge sanja.is.com.ua:/home/bell/mysql/bk/work-bug1-5.0 2005-11-21 21:15:48 +02:00
spatial.h gcc 4.1 linux warning fixes backported from 5.0. 2006-06-28 16:28:29 +03:00
sql_acl.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-09-29 10:55:03 +04:00
sql_acl.h Reapply fix for bug#16372 (Server crashes when test 'conc_sys' is running) 2006-05-06 11:25:59 +04:00
sql_analyse.cc Merge rolltop.ignatz42.dyndns.org:/mnt/storeage/bug20305/my41-bug20305 2006-09-28 14:32:30 -04:00
sql_analyse.h
sql_array.h Fix for BUG#12335 (SP replication) : New binlogging strategy for stored PROCEDUREs/FUNCTIONs. 2005-08-25 17:34:34 +04:00
sql_base.cc Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0 2006-10-10 16:44:59 +04:00
sql_bitmap.h Bug#10932 - Building server with key limit of 128, makes test cases fail 2005-07-19 14:13:56 +02:00
sql_cache.cc BUG#21051: RESET QUERY CACHE very slow when query_cache_type=0 2006-08-22 11:47:52 +04:00
sql_cache.h BUG#21051: RESET QUERY CACHE very slow when query_cache_type=0 2006-08-22 11:47:52 +04:00
sql_class.cc Fix for the patch for bug#21726: Incorrect result with multiple 2006-10-03 13:38:16 +04:00
sql_class.h Merge bk-internal:/home/bk/mysql-5.0 2006-10-03 20:28:59 +02:00
sql_client.cc
sql_crypt.cc
sql_crypt.h
sql_cursor.cc Fixed BUG#15758: "Holding adaptive search latch in 2006-04-07 23:58:17 +04:00
sql_cursor.h A fix and a test case for Bug#6513 "Test Suite: Values inserted by using 2005-09-22 02:11:21 +04:00
sql_db.cc Fix for BUG#16211: Stored function return type for strings is ignored. 2006-07-27 17:57:43 +04:00
sql_delete.cc Fixed bug #21493: crash for the second execution of a function 2006-09-16 09:50:48 -07:00
sql_derived.cc support of view underlying tables and SP functions security check added (BUG#9505) (WL#2787) 2005-10-28 00:18:23 +03:00
sql_do.cc Name resolution context added (BUG#6443) 2005-07-01 07:05:42 +03:00
sql_error.cc Bug#8153 (Stored procedure with subquery and continue handler, wrong result) 2006-08-02 22:18:49 -07:00
sql_error.h
sql_handler.cc Bug#16986 - Deadlock condition with MyISAM tables 2006-06-26 19:14:35 +02:00
sql_help.cc many warnings (practically safe but annoying) corrected 2006-01-03 17:54:54 +01:00
sql_insert.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-10-02 17:00:39 +04:00
sql_lex.cc Bug#19194 (Right recursion in parser for CASE causes excessive stack usage, 2006-11-17 12:14:29 -07:00
sql_lex.h Bug#19194 (Right recursion in parser for CASE causes excessive stack usage, 2006-11-17 12:14:29 -07:00
sql_list.cc
sql_list.h Fixed bug #16081: row equalities were not taken into 2006-09-01 04:23:04 -07:00
sql_load.cc BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID 2006-10-02 14:28:23 +04:00
sql_locale.cc Fix compile errors in VC++ 7.0 2006-08-21 16:21:48 +04:00
sql_manager.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2005-10-12 00:59:52 +03:00
sql_manager.h
sql_map.cc
sql_map.h
sql_olap.cc Implementation of WL#2486 - 2005-08-12 17:57:19 +03:00
sql_parse.cc Fix for the patch for bug#21726: Incorrect result with multiple 2006-10-03 13:38:16 +04:00
sql_prepare.cc Bug#21813 An attacker has the opportunity to bypass query logging, part2 2006-08-30 17:11:00 +02:00
sql_rename.cc Fix for bug #13525 "Rename table does not keep info of triggers". 2006-02-24 23:50:36 +03:00
sql_repl.cc Merge perch.ndb.mysql.com:/home/jonas/src/41-work 2006-09-04 13:46:56 +02:00
sql_repl.h after merge fix 2006-09-27 19:21:29 +05:00
sql_select.cc Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2006-10-03 17:21:28 +04:00
sql_select.h gcc 4.1 linux warning fixes backported from 5.0. 2006-06-28 16:28:29 +03:00
sql_show.cc Bug#20862 truncated result with show variables like 'innodb_data_file_path' 2006-09-11 17:27:35 +05:00
sql_sort.h
sql_state.c
sql_string.cc Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver. 2006-09-04 09:13:40 +02:00
sql_string.h Bug#19006: 4.0 valgrind problems (in test func_str) 2006-07-01 14:31:52 -04:00
sql_table.cc Merge mockturtle.local:/home/dlenev/src/mysql-4.1-bg22338-2 2006-09-29 12:36:12 +04:00
sql_test.cc Post-review changes. 2006-05-03 21:35:27 -07:00
sql_trigger.cc Fix for bug#20670 "UPDATE using key and invoking trigger that modifies 2006-09-21 11:35:38 +04:00
sql_trigger.h Fix for bug#20670 "UPDATE using key and invoking trigger that modifies 2006-09-21 11:35:38 +04:00
sql_udf.cc Merge bk-internal:/home/bk/mysql-5.0-maint 2006-07-18 09:32:49 +02:00
sql_udf.h Fix compiler warnings in sql_udf.h: ISO C++ forbids casting 2006-07-09 13:03:51 +04:00
sql_union.cc Post merge fixes 2006-04-21 08:19:38 -07:00
sql_update.cc Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0 2006-10-08 15:14:53 +05:00
sql_view.cc Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0 2006-10-12 18:33:07 +04:00
sql_view.h sql_base.cc, unireg.h, sql_lex.h, table.cc, sql_view.h, sql_view.cc: 2006-08-09 00:05:42 +04:00
sql_yacc.yy Bug#19194 (Right recursion in parser for CASE causes excessive stack usage, 2006-11-17 12:14:29 -07:00
stacktrace.c Bug #21449 How to Resolve Stack Trace URL in MySQLD error log is incorrect. 2006-09-28 13:58:53 -04:00
stacktrace.h Merge maint1.mysql.com:/data/localhome/tsmith/bk/bfx/my41-bfx 2006-09-07 00:59:08 +02:00
strfunc.cc
structs.h Manually merged 2006-06-14 23:54:08 +04:00
table.cc Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1 2006-10-02 14:42:12 +05:00
table.h Merge bk-internal.mysql.com:/data0/bk/mysql-5.0 2006-08-03 16:54:06 +02:00
thr_malloc.cc
time.cc Bug#20729: Bad date_format() call makes mysql server crash 2006-07-11 13:06:29 -04:00
tzfile.h
tztime.cc A fix and a test case for 2006-06-27 00:47:52 +04:00
tztime.h Fix for bug#11081 "Using a CONVERT_TZ function in a stored function or 2006-04-24 18:57:00 +04:00
udf_example.c Fix for bug #19121: Windows incompatible udf_example 2006-09-22 14:42:43 +02:00
udf_example.def Fix for bug #19121: Windows incompatible udf_example 2006-09-22 14:42:43 +02:00
uniques.cc many warnings (practically safe but annoying) corrected 2006-01-03 17:54:54 +01:00
unireg.cc Merge rurik.mysql.com:/home/igor/mysql-4.1-opt 2006-09-20 09:47:36 -07:00
unireg.h sql_base.cc, unireg.h, sql_lex.h, table.cc, sql_view.h, sql_view.cc: 2006-08-09 00:05:42 +04:00
watchdog_mysqld