Commit graph

936 commits

Author SHA1 Message Date
gluh@mysql.com/eagle.(none)
466da4ccf1 Bug#28553 mysqld crash in "purge master log before(select time from information_schema)"
forbid the use of subselect in PURGE LOGS BEFORE command
2007-06-06 18:29:15 +05: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
malff/marcsql@weblab.(none)
436e1f591a Bug#24562 (ALTER TABLE ... ORDER BY ... with complex expression asserts)
WL#3681 (ALTER TABLE ORDER BY)

Before this fix, the ALTER TABLE statement implemented an ORDER BY option
with the following characteristics :

1) The order by clause accepts a list of criteria, with optional ASC or
DESC keywords

2) Each criteria can be a general expression, involving operators,
native functions, stored functions, user defined functions, subselects ...

With this fix :

1) has been left unchanged, since it's a de-facto existing feature,
that was already present in the code base and partially covered in the test
suite. Code coverage for ASC and DESC was missing and has been improved.

2) has been changed to limit the kind of criteria that are permissible:
now only a column name is valid.
2007-01-18 16:53:49 -07:00
kostja@bodhi.local
90072e69b3 A fix and test cases for
Bug#4968 "Stored procedure crash if cursor opened on altered table"
Bug#19733 "Repeated alter, or repeated create/drop, fails"
Bug#19182 "CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work from 
stored procedure."
Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
Bug#22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"

Test cases for bugs 4968, 19733, 6895 will be added in 5.0.

Re-execution of CREATE DATABASE, CREATE TABLE and ALTER TABLE 
statements in stored routines or as prepared statements caused
incorrect results (and crashes in versions prior to 5.0.25).
In 5.1 the problem occured only for CREATE DATABASE, CREATE TABLE
SELECT and CREATE TABLE with INDEX/DATA DIRECTOY options).

The problem of bugs 4968, 19733, 19282 and 6895 was that functions
mysql_prepare_table, mysql_create_table and mysql_alter_table were not
re-execution friendly: during their operation they used to modify contents
of LEX (members create_info, alter_info, key_list, create_list),
thus making the LEX unusable for the next execution.
In particular, these functions removed processed columns and keys from
create_list, key_list and drop_list. Search the code in sql_table.cc 
for drop_it.remove() and similar patterns to find evidence.

The fix is to supply to these functions a usable copy of each of the
above structures at every re-execution of an SQL statement. 

To simplify memory management, LEX::key_list and LEX::create_list
were added to LEX::alter_info, a fresh copy of which is created for
every execution.

The problem of crashing bug 22060 stemmed from the fact that the above 
metnioned functions were not only modifying HA_CREATE_INFO structure in 
LEX, but also were changing it to point to areas in volatile memory of 
the execution memory root.
 
The patch solves this problem by creating and using an on-stack
copy of HA_CREATE_INFO (note that code in 5.1 already creates and
uses a copy of this structure in mysql_create_table()/alter_table(),
but this approach didn't work well for CREATE TABLE SELECT statement).
2006-12-08 02:20:09 +03:00
lars/lthalmann@mysql.com/dl145j.mysql.com
0c03f9348d Merge mysql.com:/users/lthalmann/bkroot/mysql-4.1-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
2006-09-20 16:17:30 +02:00
gkodinov/kgeorge@rakia.(none)
68b9ae4d14 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rakia.(none):/home/kgeorge/mysql/autopush/B21392-4.1-opt
2006-09-05 13:12:30 +03:00
gkodinov/kgeorge@macbook.gmz
3758b975f8 Bug #21392: multi-table delete with alias table name fails with
1003: Incorrect table name
in multi-table DELETE the set of tables to delete from actually 
references then tables in the other list, e.g:
DELETE alias_of_t1 FROM t1 alias_of_t1 WHERE ....
is a valid statement.
So we must turn off table name syntactical validity check for alias_of_t1 
because it's not a table name (even if it looks like one).
In order to do that we add a special flag (TL_OPTION_ALIAS) to 
disable the name checking for the aliases in multi-table DELETE.
2006-09-04 18:40:30 +03:00
aelkin/elkin@dsl-hkigw8-feaaf900-177.dhcp.inet.fi
45568bbe11 BUG#18822 LOAD DATA FROM MASTER corrupts data
there is a bunch of dups. It has been decided to declare this feature as
deprecated.
2006-08-31 02:00:40 +03:00
ramil/ram@mysql.com/myoffice.izhnet.ru
6660f98b64 Fix for bug #20695: Charset introducer overrides charset definition for column.
- if there are two character set definitions in the column declaration,
    we replace the first one with the second one as we store both in the LEX->charset
    slot. Add a separate slot to the LEX structure to store underscore charset.
  - convert default values to the column charset of STRING, VARSTRING fields 
    if necessary as well.
2006-08-15 15:24:07 +05:00
igor@rurik.mysql.com
fc7514151f Fixed bug #18767.
The bug caused wrong result sets for union constructs of the form
(SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2.
For such queries order lists were concatenated and limit clause was
completely neglected.
2006-04-20 22:15:38 -07:00
serg@serg.mylan
0b2f4ac3be kill (subquery) - three years old bugfix that never worked 2006-03-06 18:26:39 +01:00
bar@mysql.com
a167ddc6e7 Bug#13233
select distinct char(column) fails with utf8
ctype_utf8.result, ctype_utf8.test:
  Adding test case
sql_yacc.yy:
  Adding new syntax.
item_strfunc.h:
  Fixing wrong max_length calculation.
  Also, adding CHAR(x USING charset),
  for easier migrating from 4.1 to 5.0,
  according to Monty's suggestion.
2005-10-21 14:41:56 +05:00
grog@mysql.com
c248a36e30 sql_yacc.yy:
Bug #10308: Parse 'purge master logs' with subselect correctly.
subselect.test:
  Bug #10308: Test for 'purge master logs' with subselect.
subselect.result:
  Bug #10308: Test result for 'purge master logs' with subselect.
2005-10-12 09:47:59 +02:00
ramil@mysql.com
92306dd089 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b11553
2005-09-22 11:46:54 +05:00
ramil@mysql.com
66929c9540 a fix (#11553: gives error if aggregate user-defined function in HAVING clause). 2005-09-22 11:45:16 +05:00
jonas@perch.ndb.mysql.com
8983e39070 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1-push
2005-09-20 09:50:10 +02:00
jonas@perch.ndb.mysql.com
668a192ce5 ndb - imlp. show engine ndb status;
that dump free list allocation per connection
2005-09-19 15:35:07 +02:00
sasha@asksasha.com
00eae49b5c fix for BUG#11139 (multi-delete with alias breaking replication if table rules are
present): the problem originally was that the tables in auxilliary_tables did not have 
the correct real_name, which caused problems in the second call to tables_ok(). 
The fix corrects the real_name problem, and also sets the updating flag properly, 
which makes the second call to tables_ok() unnecessary.
2005-09-14 06:31:38 -06:00
aivanov@mysql.com
fa51afedeb item_cmpfunc.h:
Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions.
   The classes Item_func_between, Item_func_if, Item_func_in are modified.
   Item_func_between/in objects can represent now [NOT]BETWEEN/IN expressions.
   The class Item_func_opt_neg is added to factor out the functionality
   common for the modified classes Item_func_between and Item_func_in.
item_cmpfunc.cc:
  Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions.
   Added Item_func_between::fix_fields(), Item_func_if::fix_fields(),
   Item_func_in::fix_fields(). They correct generic calculation of
   the not_null_tables attribute when it is needed.
   Modified Item_func_between::val_int(), Item_func_in::val_int().
opt_range.cc:
  Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions.
   The function get_mm_tree() is modified. There cannot be NOT before
   BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
   now [NOT]BETWEEN/IN expressions.
sql_yacc.yy:
  Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions.
   Item_func_between/in objects can represent now [NOT]BETWEEN/IN expresions.
join_outer.result:
  Fixed some testcases results (bugs #12101, #12102)
join_outer.test:
  Added testcases for bugs #12101, #12102
2005-09-06 18:03:08 +04:00
igor@rurik.mysql.com
54dd7e5ebf select.result, select.test:
Added a test case for bug #11745.
sql_select.cc:
  Fixed bug # 11745.
  Added support of where clause for queries with FROM DUAL.
sql_yacc.yy:
  Fixed bug # 11745.
  Added optional where clause for queries with FROM DUAL.
2005-07-17 09:46:14 -07:00
konstantin@mysql.com
a2b11ff266 A fix and a test case for Bug#11299 "prepared statement makes wrong SQL
syntax in binlog which stops replication":
disallow the use of parameter markers which can lead to generation
of malformed binlog queries.
2005-07-15 00:01:49 +04:00
monty@mishka.local
83f90e060e Better bug fix for:
#9728  'Decreased functionality in "on duplicate key update
#8147  'a column proclaimed ambigous in INSERT ... SELECT .. ON DUPLICATE'

This ensures fields are uniquely qualified and also that one can't update other tables in the ON DUPLICATE KEY UPDATE part
2005-06-27 16:46:41 +03:00
evgen@moonbone.local
2235ea9593 Fix bug #9728 decreased functionality in "on duplicate key update"
Remove changes made by bug fix #8147. They strips list of insert_table_list to
only insert table, which results in error reported in bug #9728.
Added flag to Item to resolve ambigous fields reported in bug #8147.
2005-06-22 07:18:42 +04:00
monty@mysql.com
29fd1f2fd9 Move USE_PRAGMA_IMPLEMENTATION to proper place
Ensure that 'null_value' is not accessed before val() is called in FIELD() functions
Fixed initialization of key maps. This fixes some problems with keys when you have more than 64 keys
Fixed that ROLLUP don't always create a temporary table. This fix ensures that func_gconcat.test results are now predictable
2005-06-03 23:46:03 +03:00
acurtis@xiphis.org
c4f37eda65 Bug#10413 - Invalid column name is not rejected
Stop ignoring name parts and check for validity
2005-05-31 18:06:54 +01:00
Sinisa@sinisa.nasamreza.org
78a1688351 Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.1
into sinisa.nasamreza.org:/mnt/work/mysql-4.1
2005-05-18 15:28:13 +03:00
igor@rurik.mysql.com
3199272e65 sql_yacc.yy:
Added missing ';'.
2005-05-18 04:17:13 -07:00
monty@mysql.com
b54d7d04bd Fixes during review 2005-05-13 14:04:32 +03:00
antony@ltantony.mysql.com
ddf6225def Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-4.1
into ltantony.mysql.com:/usr/home/antony/work2/p3-bug8733
2005-05-09 14:50:56 +01:00
antony@ltantony.mysql.com
cc3bfc6ff1 Bug#8733 - server accepts malformed query (multiply mentioned distinct)
Detect conflicting options in SELECT
2005-05-09 14:31:46 +01:00
antony@ltantony.mysql.com
1af671bf36 Bug#9666 - Can't use 'DEFAULT FALSE' for column of type bool
Fix bug by moving TRUE/FALSE in with other literals.
2005-05-07 13:51:29 +01:00
Sinisa@sinisa.nasamreza.org
edf2a16049 union.result:
Results for the above test case
union.test:
  A test case for bug #10032 involving UNION's and ORDER BY clause
sql_yacc.yy:
  Fix for a bug #10032 involving a parser bug with UNION's and ORDER BY
2005-04-26 21:27:06 +03:00
serg@serg.mylan
5fe52ffba4 merged 2005-04-16 00:10:35 +02:00
serg@serg.mylan
08ae28f4b8 BUG#9922 - INSERT SELECT with UNIONs allows concurrent INSERTs
don't set lex->lock_option=TL_READ in the parser for SELECT
2005-04-15 19:20:15 +02:00
gluh@mysql.com
decfc86fbb Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/gluh/MySQL/Bugs/mysql-4.1.9286
2005-04-06 14:14:13 +05:00
gluh@eagle.intranet.mysql.r18.ru
6f18d7d26f Fix for bug #9286: SESSION/GLOBAL should be disallowed for user variables 2005-04-06 14:13:06 +05:00
bar@mysql.com
0134a2b286 Adding a new parameter for well_formed_length to
return error. We'll use it for better warnign reporting.
2005-04-06 11:53:15 +05:00
mats@mysql.com
0ad02a920c Merge from 4.0 2005-02-18 14:19:08 +01:00
mats@mysql.com
d0f1b5f3fd Merge mysql.com:/home/bkroot/mysql-4.0
into mysql.com:/home/bk/b7879-mysql-4.0
2005-02-18 13:50:19 +01:00
mats@mysql.com
625f7f0d55 Bug#7879: Using TL_READ_NO_INSERT locks instead of TL_READ locks when
reading tables in "complex" SQL statements. If inserts happen in a
table being read, the statements have no serialization order and the
change can therefore not be reproduced on the slave.
2005-02-15 11:02:01 +01:00
acurtis@pcgem.rdg.cyberkinetica.com
4957c4850d Bug#2435
Alter handling for UNION syntax
  Tests for UNION and parentheses
2005-02-13 22:35:52 +00:00
timour@mysql.com
52e904c25c Fix for BUG#8023.
Allow LIMIT clause after DUAL.
2005-02-02 08:38:24 +02:00
igor@rurik.mysql.com
34fa69a194 order_by.result, order_by.test:
Added a test case for bug #7672.
sql_yacc.yy:
  Fixed bug #7672.
  Made queries of the form (SELECT ...) ORDER BY ... to
  be equivalent to SELECT ... ORDER BY ...
2005-01-25 14:30:38 -08:00
bell@sanja.is.com.ua
dcfdf011c6 backported from 5.0 patch initialization of main select for commands where subqueries are possible 2005-01-17 19:52:07 +02:00
dlenev@mysql.com
8be6787640 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/dlenev/src/mysql-4.1-dtbug
2005-01-14 10:09:01 +03:00
dlenev@brandersnatch.localdomain
2f32115092 Fix for bug #7418 "TIMESTAMP not always converted to DATETIME in MAXDB
mode".

Changed grammar rule for "type" token. Now we have one branch with 
optional length specification for TIMESTAMP type instead of two separate
branches.
2005-01-11 14:26:40 +03:00
monty@mysql.com
1bd22faa05 Remove DUP_IGNORE from enum_duplicates and instead use a separate ignore flag
This allows use to use INSERT IGNORE ... ON DUPLICATE ...
2004-12-31 12:04:35 +02:00
acurtis@pcgem.rdg.cyberkinetica.com
9818cadd1b WL#2274 - INSERT..SELECT..UPDATE
UPDATE clause conflicts with SELECT for use of item_list field.
  Alter UPDATE clause to use new lex field update_list
  Tests included
2004-12-13 12:26:28 +00:00
dlenev@mysql.com
62a6d9749b Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/dlenev/src/mysql-4.1-bg6765
2004-12-09 13:33:12 +03:00
dlenev@brandersnatch.localdomain
4b0882e0a6 Fix for bug #6765 "Implicit access to time zone description
tables requires privileges for them if some table or column level grants
present" (with after-review fixes).

We should set SELECT_ACL for implicitly opened tables in 
my_tz_check_n_skip_implicit_tables() to be able to bypass privilege
checking in check_grant(). Also we should exclude those tables from
privilege checking in multi-update.
2004-12-09 13:31:46 +03:00