Commit graph

2029 commits

Author SHA1 Message Date
malff/marcsql@weblab.(none)
fa807c509d Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-21513
2007-04-30 11:41:51 -06:00
malff/marcsql@weblab.(none)
012f841fd4 Bug#21513 (SP having body starting with quoted label rendered unusable)
Before this fix, the parser would sometime change where a token starts by
altering Lex_input_string::tok_start, which later confused the code in
sql_yacc.yy that needs to capture the source code of a SQL statement,
like to represent the body of a stored procedure.

This line of code in sql_lex.cc :

case MY_LEX_USER_VARIABLE_DELIMITER:
  lip->tok_start= lip->ptr; // Skip first `

would <skip the first back quote> ... and cause the bug reported.

In general, the responsibility of sql_lex.cc is to *find* where token are
in the SQL text, but is *not* to make up fake or incomplete tokens.
With a quoted label like `my_label`, the token starts on the first quote.
Extracting the token value should not change that (it did).

With this fix, the lexical analysis has been cleaned up to not change
lip->tok_start (in the case found for this bug).

The functions get_token() and get_quoted_token() now have an extra
parameters, used when some characters from the beginning of the token need
to be skipped when extracting a token value, like when extracting 'AB' from
'0xAB', for example, for a HEX_NUM token.

This exposed a bad assumption in Item_hex_string and Item_bin_string,
which has been fixed:

The assumption was that the string given, 'AB', was in fact preceded in
memory by '0x', which might be false (it can be preceded by "x'" and
followed by "'" -- or not be preceded by valid memory at all)

If a name is needed for Item_hex_string or Item_bin_string, the name is
taken from the original and true source code ('0xAB'), and assigned in
the select_item rule, instead of relying on assumptions related to how
memory is used.
2007-04-27 17:14:25 -06:00
malff/marcsql@weblab.(none)
62fd6aa696 manual merge 5.0-runtime -> 5.1->runtime, with 25411 part I 2007-04-25 21:38:12 -06:00
malff/marcsql@weblab.(none)
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
gkodinov/kgeorge@magare.gmz
429371f9d5 - addendum of the fix for bug 27786:
applied the new function is_union() to places
  in the code that check the same condition.
- 5.0->5.1 merge fixes
2007-04-23 14:16:49 +03:00
serg@janus.mylan
00479a441d wl#2936 post-merge fixes 2007-04-16 18:16:17 +02:00
serg@sergbook.mysql.com
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
holyfoot/hf@hfmain.(none)
ce426dd622 Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/d2/hf/mrg/mysql-5.1-opt
2007-04-07 14:59:53 +05:00
kostja@vajra.(none)
cef9331d7d Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  vajra.(none):/opt/local/work/mysql-5.1-c1
2007-04-05 20:50:28 +04:00
kostja@vajra.(none)
00b85c49da Post-merge and post-review fixes for the patch for
Bug#23631 "Events: SHOW VARIABLES doesn't work when mysql.event 
is damaged:
2007-04-05 20:47:22 +04:00
mikron@mikael-ronstr-ms-dator.local
3662119dcf Merge mronstrom@bk-internal.mysql.com:/home/bk/mysql-5.1
into  mikael-ronstr-ms-dator.local:/Users/mikron/mysql_clones/bug18198
2007-04-04 16:50:14 +02:00
mikron@mikael-ronstr-ms-dator.local
8161ab0b53 Reapplied patch for bug18198 2007-04-04 16:26:32 +02:00
tsmith@quadxeon.mysql.com
2117193783 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg04/51
2007-04-04 11:05:22 +02:00
gluh@mysql.com/eagle.(none)
2d47f0cb1b Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte 2007-04-03 16:13:27 +05:00
kostja@bodhi.local
93d0316f45 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime
2007-04-03 14:34:37 +04:00
msvensson@pilot.blaudden
fc904eaead Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.1
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint
2007-04-02 11:15:09 +02:00
msvensson@pilot.blaudden
bb9a601829 Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-04-02 10:50:39 +02:00
cbell/Chuck@mysql_cab_desk.
73ded84c0a WL#3629 - Replication of Invocation and Invoked Features
This patch removes the SLAVESIDE_DISABLED token from the event status clause
and adds the ability to mark an event as status = SLAVESIDE_DISABLED by using
the syntax DISABLE ON SLAVE instead.

The patch also adds tests to rpl_events to check the new syntax.
2007-03-30 11:08:19 -04:00
iggy@recycle.(none)
6a9811b594 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  recycle.(none):/src/bug23491/my50-bug23491
2007-03-29 12:20:13 -04:00
iggy@recycle.(none)
c90400c538 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new-maint
into  recycle.(none):/src/bug23491/my51-bug23491
2007-03-29 12:13:42 -04:00
iggy@recycle.(none)
d41cffc09a Bug #23491 MySQLDump prefix function call in a view by database name
- 5.0 merged to 5.1 differences.
2007-03-29 11:12:12 -04:00
iggy@recycle.(none)
4f498dec3a Merge recycle.(none):/src/bug23491/my50-bug23491
into  recycle.(none):/src/bug23491/my51-bug23491
2007-03-29 10:42:03 -04:00
cbell/Chuck@mysql_cab_desk.
a591514a67 Merge cbell@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl
2007-03-29 09:54:59 -04:00
msvensson@pilot.blaudden
9f2bee02d2 Merge pilot.blaudden:/home/msvensson/mysql/bug19991/my51-bug19991
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint
2007-03-29 15:29:26 +02:00
msvensson@pilot.blaudden
f865bd1da4 Bug#19991 CHANGE MASTER need option ssl-verify-server-cert
- Add MASTER_SSL_VERIFY_SERVER_CERT option to CHANGE MASTER TO
 - Add Master_Ssl_Serify_Server_Cert to SHOW SLAVE STATUS
 - Save and restore ssl_verify_server_cert  to master info file
   setting it to disabled as default.
2007-03-29 15:09:57 +02:00
msvensson@pilot.blaudden
62c63239d0 Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint
2007-03-29 14:35:03 +02:00
msvensson@pilot.blaudden
f9c5bb36b0 Merge pilot.blaudden:/home/msvensson/mysql/bug25482/my41-bug25482-alt2
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-03-29 14:16:28 +02:00
msvensson@pilot.blaudden
a71d195183 Bug#25482 GRANT statements are not replicated if you use "replicate-ignore-table"
- GRANT and REVOKE statments didn't have the "updating" flag set and
   thus statements with a table specified would not replicate if
   slave filtering rules where turned on.
   For example "GRANT ... ON test.t1 TO ..." would not replicate.
2007-03-29 14:12:32 +02:00
kostja@bodhi.local
c392623bf9 Fix spelling (recursivity -> recursion) 2007-03-27 22:15:51 +04:00
kostja@bodhi.local
b42b416400 Remove unnecessary casts to uchar. The casts are stemming from
the lexer API which internally uses  unsigned char variables to
address its state map. The implementation of the lexer should be
internal to the lexer, and not influence the rest of the code.
2007-03-27 21:09:56 +04:00
iggy@recycle.(none)
bbc38df090 Bug#23491 MySQLDump prefix function call in a view by database name
- mysqldump executes a SHOW CREATE VIEW statement to generate the text
that it outputs.  When the function name is retrieved it's database 
name is unconditionally prepended.  This change causes the function's 
database name to be prepended only when it was used to define the 
function.
2007-03-27 12:31:44 -04:00
cbell/Chuck@mysql_cab_desk.
71c4bd1f0a Merge mysql_cab_desk.:C:/source/c++/mysql-5.1-new-rpl
into  mysql_cab_desk.:C:/source/c++/mysql-5.1_WL_3629
2007-03-26 09:57:16 -04:00
gkodinov/kgeorge@magare.gmz
ce9cc47a73 WL3527: 5.0 part:
enabled the optional FOR JOIN to all the three
clauses : USE, FORCE and IGNORE
2007-03-26 16:52:52 +03:00
holyfoot/hf@hfmain.(none)
09d4529457 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 23:49:44 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
1f9fd51c6d Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
2007-03-22 12:21:06 +04:00
holyfoot/hf@hfmain.(none)
59bcb87766 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:20:51 +04:00
holyfoot/hf@hfmain.(none)
d24fb40374 Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 11:43:23 +04:00
tsmith@quadxeon.mysql.com
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
evgen@moonbone.local
72bf9b4847 Bug#23345: Wrongly allowed INTO in a non-last select of a UNION.
INTO clause can be specified only for the last select of a UNION and it
receives the result of the whole query. But it was wrongly allowed in
non-last selects of a UNION which leads to a confusing query result.

Now INTO allowed only in the last select of a UNION.
2007-03-21 21:54:38 +03:00
kostja@bodhi.local
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
kostja@bodhi.local
a9065201d5 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime
2007-03-19 23:59:53 +03:00
df@pippilotta.erinye.com
eb0ddb2184 BUG#27270 Can't compile latest 5.1-main 2007-03-19 20:44:46 +01:00
cbell/Chuck@mysql_cab_desk.
3e44599c11 WL#3629 - Replication of Invocation and Invoked Features
This changeset adds replication of events and user-defined functions. 
There are several bug reports involved in this change:

BUG#16421, BUG#17857, BUG#20384:
This patch modifies the mysql.events table to permit the addition of
another enum value for the status column. The column now has values
of ('DISABLED','SLAVESIDE_DISABLED','ENABLED'). A status of
SLAVESIDE_DISABLED is set on the slave during replication of events.
This enables users to determine which events werereplicated from the 
master and to later enable them if they promote the slave to a master.
The CREATE, ALTER, and DROP statements are binlogged.
A new test was added for replication of events (rpl_events).

BUG#17671:
This patch modifies the code to permit logging of user-defined functions.
Note: this is the CREATE FUNCTION ... SONAME variety. A more friendly error 
message to be displayed should a replicated user-defined function not be
found in the loadable library or if the library is missing from the
slave.The CREATE andDROP statements are binlogged. A new test was added 
for replication of user-defined functions (rpl_udf). 

The patch also adds a new column to the mysql.event table named
'originator' that is used to store the server_id of the server that
the event originated on. This enables users to promote a slave to a 
master and later return the promoted slave to a slave and disable the
replicated events.
2007-03-16 09:56:57 -04:00
malff/marcsql@weblab.(none)
62247621b0 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-26503-merge
2007-03-14 15:36:11 -06:00
malff/marcsql@weblab.(none)
bef323b1d6 Bug#26503 (Illegal SQL exception handler code causes the server to crash)
Before this fix, the parser would accept illegal code in SQL exceptions
handlers, that later causes the runtime to crash when executing the code,
due to memory violations in the exception handler stack.

The root cause of the problem is instructions within an exception handler
that jumps to code located outside of the handler. This is illegal according
to the SQL 2003 standard, since labels located outside the handler are not
supposed to be visible (they are "out of scope"), so any instruction that
jumps to these labels, like ITERATE or LEAVE, should not parse.

The section of the standard that is relevant for this is :
  SQL:2003 SQL/PSM (ISO/IEC 9075-4:2003)
  section 13.1 <compound statement>,
  syntax rule 4
<quote>
  The scope of the <beginning label> is CS excluding every <SQL schema
  statement> contained in CS and excluding every
  <local handler declaration list> contained in CS. <beginning label> shall
  not be equivalent to any other <beginning label>s within that scope.
</quote>

With this fix, the C++ class sp_pcontext, which represent the "parsing
context" tree (a.k.a symbol table) of a stored procedure, has been changed
as follows:
- constructors have been cleaned up, so that only building a root node for
the tree is public; building nodes inside a tree is not public.
- a new member, m_label_scope, indicates if a given syntactic context
belongs to a DECLARE HANDLER block,
- label resolution, in the method find_label(), has been changed to
implement the restriction of scope regarding labels used in a compound
statement.

The actions in the parser, when parsing the body of a SQL exception handler,
have been changed as follows:
- the implementation of an exception handler (DECLARE HANDLER) now creates
explicitly a new sp_pcontext, to isolate the code inside the handler from
the containing compound statement context.
- registering exception handlers as a result occurs in the parent context,
see the rule sp_hcond_element
- the code in sp_hcond_list has been cleaned up, to avoid code duplication

In addition, the flags IN_SIMPLE_CASE and IN_HANDLER, declared in sp_head.h
have been removed, since they are unused and broken by design (as seen with
Bug 19194 (Right recursion in parser for CASE causes excessive stack usage,
limitation), representing a stack in a single flag is not possible.

Tests in sp-error have been added to show that illegal constructs are now
rejected.

Tests in sp have been added for code coverage, to show that ITERATE or LEAVE
statements are legal when jumping to a label in scope, inside the body of
an exception handler.
2007-03-14 12:02:32 -06:00
gkodinov/kgeorge@magare.gmz
a474f33494 WL3527: post-merge updates
sql_yacc.yy:
  WL3527: updated the diff to use correct parser words
table.cc:
  WL3527: exteneded the fix for bug #20604 to fit the new variables
sql_select.cc:
  WL3527: renamed used_keys to covering_keys
2007-03-11 14:31:43 +02:00
kroki/tomash@moonlight.home
09d89e9cdd Merge moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1
into  moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-bug16425
2007-03-09 23:25:36 +03:00
gkodinov/kgeorge@magare.gmz
c03a483c51 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/WL3527-5.1-opt
2007-03-09 17:54:13 +02:00
gkodinov/kgeorge@magare.gmz
7acdb67643 Merge bk-internal:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/WL3527-5.0-opt-merge
2007-03-09 16:30:44 +02:00
gkodinov/kgeorge@macbook.gmz
6bea442d26 WL#3527: Extend IGNORE INDEX so places where index is ignored can
be specified
 5.0 part of the fix. Implements IGNORE INDEX FOR JOIN as a synonym
 of IGNORE INDEX for backward compatibility with the 5.1 fix.
2007-03-09 15:20:06 +02:00