1
0
mirror of https://github.com/MariaDB/server.git synced 2025-06-13 13:01:51 +03:00
Commit Graph

917 Commits

Author SHA1 Message Date
fc809c70cc Bug#25411 (trigger code truncated), PART I
The issue found with bug 25411 is due to the function skip_rear_comments()
which damages the source code while implementing a work around.
The root cause of the problem is in the lexical analyser, which does not
process special comments properly.
For special comments like :
[1] aaa /*!50000 bbb */ ccc
since 5.0 is a version older that the current code, the parser is in lining
the content of the special comment, so that the query to process is
[2] aaa bbb ccc
However, the text of the query captured when processing a stored procedure,
stored function or trigger (or event in 5.1), can be after rebuilding it:
[3] aaa bbb */ ccc
which is wrong.

To fix bug 25411 properly, the lexical analyser needs to return [2] when
in lining special comments.
In order to implement this, some preliminary cleanup is required in the code,
which is implemented by this patch.

Before this change, the structure named LEX (or st_lex) contains attributes
that belong to lexical analysis, as well as attributes that represents the
abstract syntax tree (AST) of a statement.
Creating a new LEX structure for each statements (which makes sense for the
AST part) also re-initialized the lexical analysis phase each time, which
is conceptually wrong.

With this patch, the previous st_lex structure has been split in two:
- st_lex represents the Abstract Syntax Tree for a statement. The name "lex"
has not been changed to avoid a bigger impact in the code base.
- class lex_input_stream represents the internal state of the lexical
  analyser, which by definition should *not* be reinitialized when parsing
  multiple statements from the same input stream.

This change is a pre-requisite for bug 25411, since the implementation of
lex_input_stream will later improve to deal properly with special comments,
and this processing can not be done with the current implementation of
sp_head::reset_lex and sp_head::restore_lex, which interfere with the lexer.

This change set alone does not fix bug 25411.
2007-04-24 09:24:21 -06:00
2d6d8e2abe Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
2007-04-20 15:31:41 -06:00
875de0e571 Merge romeo.(none):/home/bkroot/mysql-5.1-rpl
into  romeo.(none):/home/bk/merge-mysql-5.1
2007-04-20 10:46:58 +02:00
f1caa9559c Merge romeo.(none):/home/bkroot/mysql-5.0-rpl
into  romeo.(none):/home/bk/merge-mysql-5.0
2007-04-20 10:35:27 +02:00
00479a441d wl#2936 post-merge fixes 2007-04-16 18:16:17 +02:00
6bc9bc92df Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  sergbook.mysql.com:/usr/home/serg/Abk/mysql-5.1-wl2936
2007-04-16 10:37:50 +02:00
c53037af36 more wl#2936 fixes: removed implicit ha_thd() calls (too error-prone),
fixed an assert crash
2007-04-15 15:47:27 +02:00
e0f0ba802f Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-04-14 18:31:43 -04:00
eccd5ae201 An attempt to fix a sporadic valgrind memory leak in Event Scheduler:
streamline the event worker thread work flow and try to eliminate
possibilities for memory corruptions that might have been
lurking in previous (complicated) code.
This patch: 
 * removes Event_job_data::compile that was never used
 * cleans up Event_job_data::execute to minimize juggling with
   thread context and eliminate unneded code paths
 * Implements Security_context::change/restore_security_context
   to be able to re-use these methods in all stored programs
This is to maybe fix Bug#27733 "Valgrind failures in 
remove_table_from_cache".
Review comments applied.
2007-04-13 16:35:56 -04:00
3ecbb5a443 wl#2936 - fixing problems 2007-04-13 19:23:02 +02:00
84ec7be2c7 WL#2735: Refactor replication
Factoring out pack_row() and unpack_row() into new files
rpl_record.{cc,h}.
2007-04-13 14:55:28 +02:00
6e8b72a6bb Added more descriptive error message of why statement was automaticly dropped
Print information if net_clear() skipped bytes (As this otherwise hides critical timeing bugs)
Added DBUG_ASSERT if we get packets out of order
mysql_change_user() could on error send multiple packets, which caused mysql_client_test to randomly fail
2007-04-13 01:56:22 +03:00
93860556e6 Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into  romeo.(none):/home/bk/b25688-mysql-5.1-rpl
2007-04-12 09:10:45 +02:00
11fc24ef24 BUG#25688 (RBR: circular replication may cause STMT_END_F flags to be
skipped):

By moving statement end actions from Rows_log_event::do_apply_event() to
Rows_log_event::do_update_pos() they will always be executed, even if
Rows_log_event::do_apply_event() is skipped because the event originated
at the same server. This because Rows_log_event::do_update_pos() is always
executed (unless Rows_log_event::do_apply_event() failed with an error,
in which case the slave stops with an error anyway). 

Adding test case.

Fixing logic to detect if inside a group. If a rotate event occured
when an initial prefix of events for a statement, but for which the
table did contain a key, last_event_start_time is set to zero, causing
rotate to end the group but without unlocking any tables. This left a
lock hanging around, which subsequently triggered an assertion when a
second attempt was made to lock the same sequence of tables.

In order to solve the above problem, a new flag was added to the relay
log info structure that is used to indicate that the replication thread
is currently executing a statement. Using this flag, the replication
thread is in a group if it is either in a statement or inside a trans-
action.

The patch also eliminates some gratuitous header file inclusions that
were not needed (and caused compile errors) and replaced them with
forward definitions.
2007-04-12 08:58:04 +02:00
1e5d279451 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-04-10 18:26:14 +02:00
b4ba815967 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-04-10 16:28:47 +03:00
220c453194 Merge mysql.com:/home/bar/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-5.1-new-rpl
2007-04-09 18:06:27 +05:00
4341df8cf6 Bug#22648 LC_TIME_NAMES: Setting GLOBAL has no effect
Problem: setting/displaying @@LC_TIME_NAMES didn't distinguish between
GLOBAL and SESSION variable types - always SESSION variable
was set/shonw.
Fix: set either global or session value.
Also, "mysqld --lc-time-names" was added to set "global default" value.
2007-04-09 17:58:56 +05:00
386ad0f1f7 Fixes for tests after merge from 5.0 2007-04-05 22:34:33 +03:00
5f4dfdd5fe Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-community
2007-04-03 09:20:22 -04:00
cbfd66e754 Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-marvel
2007-04-03 13:55:20 +02:00
e4fde44948 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1-marvel
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-04-03 14:51:32 +03:00
2d47f0cb1b Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte 2007-04-03 16:13:27 +05:00
48f3ec8570 WL#2936
"Plugin Server Variables"
  Post review cleanups.
2007-04-02 11:38:58 -07:00
44c32c0e26 Initialize thd->no_trans_update
(Fixes valgrind warnings)
2007-03-29 21:06:32 +03:00
1c7beca65e Merge ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-marvel
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-marvel
2007-03-29 17:27:42 +03:00
771e05d657 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
2007-03-29 13:49:10 +02:00
75668471d1 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-03-29 12:25:28 +02:00
3c3b0391f8 Merge ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1-main
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-marvel
2007-03-28 20:46:42 +03:00
90ab0fd252 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-4.1
into  ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-4.1-main
2007-03-26 10:56:33 +03:00
d4d37f113e WL#2936
"Server variables for plugins"
  Post review fixes.
2007-03-23 10:14:46 -07:00
5c542a4656 Fixed compiler warnings. 2007-03-22 20:32:07 +02:00
08bb33dbd7 Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into  romeo.(none):/home/bk/b22583-mysql-5.1-new-rpl
2007-03-22 17:34:25 +01:00
54e7bc8daa Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-03-22 01:04:39 +01:00
f0936e9441 Merge mysql_cab_desk.:C:/source/c++/mysql-5.0_BUG_25543
into  mysql_cab_desk.:C:/source/c++/mysql-5.1_BUG_25543
2007-03-21 10:56:43 -04:00
af19690659 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/51
2007-03-20 21:49:58 +01:00
cc4ea8bba8 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/41
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/maint/50
2007-03-20 21:35:11 +01:00
cbb90f443a Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/b27231/41
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/mar20/b27231/50
2007-03-20 19:10:24 +01:00
21ed11cda2 Bug #27231: Server crash when dumping into outfile with long FIELDS ENCLOSED BY option
- Problem: data separators were copied to a fixed-size buffer
  on the stack; memcpy was used, without bounds checking; a
  server crash could result if long FIELDS ENCLOSED BY, etc.,
  was given
- Fix: write the separators directly, instead of copying to
  a buffer first (in select_export::send_data())
2007-03-20 19:09:28 +01:00
b1f69b48ef BUG#26969:
Field_bit::pack() and Field_bit::unpack() does not work correctly

Fixing code for Field_bit packing and unpacking to work with arbitrary
pointers instead of requiring Field::ptr
2007-03-20 14:13:07 +01:00
6a01170299 Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into  romeo.(none):/home/bk/b22583-mysql-5.1-new-rpl
2007-03-20 09:35:56 +01:00
bdb10baec1 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime
2007-03-20 00:42:11 +03:00
825ad05e5f Merge mysql_cab_desk.:C:/source/c++/mysql-5.0-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.0_BUG_25543
2007-03-19 16:12:46 -04:00
d44eb9f0c9 Bug #25543 Replication of wrong values if using rand() in stored procedure
When rand() is called multiple times inside a stored procedure, the server does 
not binlog the correct random seed values.

This patch corrects the problem by resetting rand_used= 0 in 
THD::cleanup_after_query() allowing the system to save the random seeds if needed
for each command in a stored procedure body.

However, rand_used is not reset if executing in a stored function or trigger 
because these operations are binlogged by call and thus only the calling statement
need detect the call to rand() made by its substatements. These substatements must 
not set rand_used to 0 because it would remove the detection of rand() by the 
calling statement.
2007-03-09 12:18:28 -05:00
8efe1b1fae manual merge 2007-03-09 16:06:08 +01:00
ba22ad7019 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/51
2007-03-08 00:02:41 +01:00
c06499b210 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/50
2007-03-07 23:55:25 +01:00
c815ce1aeb Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into  romeo.(none):/home/bk/b22583-mysql-5.1-new-rpl
2007-03-07 12:22:10 +01:00
ae97896111 Merge bodhi.local:/opt/local/work/mysql-5.0-26750
into  bodhi.local:/opt/local/work/mysql-5.1-runtime
2007-03-07 13:02:14 +03:00
c2e0e5af09 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.local:/opt/local/work/mysql-5.0-26750
2007-03-07 12:28:16 +03:00