Commit graph

36 commits

Author SHA1 Message Date
sergefp@mysql.com
cfce3d823b Merge 2006-01-26 00:06:20 +03:00
sergefp@mysql.com
5d0e8d81ee BUG#15935: In mysql_update, don't use full index scan when we could have used quick select scan. 2006-01-25 23:25:23 +03:00
evgen@moonbone.local
baed6da5bc Manually merged 2006-01-24 22:10:39 +03:00
evgen@moonbone.local
b1967ad723 Fixed bug #16510: Updating field named like '*name' caused server crash.
When setup_fields() function finds field named '*' it expands it to the list
of all table fields. It does so by checking that the first char of
field_name is '*', but it doesn't checks that the '* is the only char.
Due to this, when updating table with a field named like '*name', such field
is wrongly treated as '*' and expanded. This leads to making list of fields
to update being longer than list of the new values. Later, the fill_record() 
function crashes by dereferencing null when there is left fields to update,
but no more values.

Added check in the setup_fields() function which ensures that the field
expanding will be done only when '*' is the only char in the field name.
2006-01-23 21:51:32 +03:00
evgen@moonbone.local
3f72e7645f Fix bug#15028 Multitable update returns different numbers of matched rows
depending on table order

multi_update::send_data() was counting updates, not updated rows. Thus if one 
record have several updates it will be counted several times in 'rows matched'
but updated only once.

multi_update::send_data() now counts only unique rows.
2005-12-01 23:22:20 +03:00
evgen@moonbone.local
77723c2438 Fix bug#14186 select datefield is null not updated
Date field was declared as not null, thus expression 'datefield is null'
was always false. For SELECT special handling of such cases is used. 
There 'datefield is null' converted to 'datefield eq "0000-00-00"'.

In mysql_update() before creation of select added remove_eq_conds() call.
It makes some optimization of conds and in particular performs conversion
from 'is null' to 'eq'. 
Also remove_eq_conds() makes some evaluation of conds and if it founds that
conds is always false then update statement is not processed further.
All this allows to perform some update statements process faster due to
optimized conds, and not wasting resources if conds known to be false.
2005-10-28 01:24:11 +04:00
monty@mysql.com
3e653fb922 Added more tests for new UPDATE ... ORDER BY ... LIMIT optimization 2005-10-25 02:27:40 +03:00
sergefp@mysql.com
e9f2f9437a BUG#12915: Added single-table UPDATE/DELTE ... ORDER BY ... LIMIT
optimization: now can use index to find records to update/delete
when there is no WHERE clause.
2005-09-30 15:21:37 +04:00
evgen@moonbone.local
b7e8c8b112 Fix bug #13180 thd->allow_sum_funcs wasn't reset before query processing.
thd->allow_sum_func was left 'true' after previous statement thus allowing
sum funcs to be present in conditions.

thd->allow_sum_func should be set to 0 for each query and each prepared
statement reinitialization. This is done in lex_start() and 
reset_stmt_for_execute().
2005-09-22 01:38:39 +04:00
monty@mysql.com
3c12d0ae54 Added end marker for tests to make future merges easier 2005-07-28 03:22:47 +03:00
evgen@moonbone.local
81d93df1ae Fix bug#11868 NOT NULL ref optimization in subquery used in update must be
disabled if ref is built with a key from the updated table

Problem was in add_not_null_conds() optimization function.
It contains following code:
JOIN_TAB *referred_tab= not_null_item->field->table->reginfo.join_tab;
...
add_cond_and_fix(&referred_tab->select_cond, notnull);
For UPDATE described in bug report referred_tab is 0 and dereferencing it
crashes the server.
2005-07-16 05:31:16 +04:00
sergefp@mysql.com
a76ecc5bc7 Fix for BUG#9103:
Don't produce data truncation warnings from within cp_buffer_from_ref(). This function
is only used to make index search tuples and data truncation that occurs here has no
relation with truncated values being saved into tables.
2005-04-18 05:21:44 +04:00
ramil@mysql.com
261105a007 Merge 2005-03-17 10:59:25 +04:00
ramil@mysql.com
a773916238 A fix (bug #8942: SUBSTRING_INDEX in UPDATE causes internal loop). 2005-03-17 10:24:50 +04:00
acurtis@pcgem.rdg.cyberkinetica.com
b8ceaa4a1f Bug#8057
Fix crash with LAST_INSERT_ID() in UPDATE,
  Tests included,
2005-02-03 21:11:12 +00:00
timour@mysql.com
410086b347 Test for BUG#6054. The bug itsel is fixed by the fix for #5837. 2004-12-16 18:46:38 +02:00
timour@mysql.com
cc6a30214c Moved drop table statement to the end. 2004-12-16 18:44:39 +02:00
timour@mysql.com
53a9af8f1d Test for BUG#6054. The bug itsel is fixed by the fix for #5837. 2004-12-16 18:04:51 +02:00
monty@mysql.com
62f3cd6a31 Merge with 4.0 for 4.1 release
Noteworthy:
- New HANDLER code
- New multi-update-grant-check code
- Table lock code in ha_innodb.cc was not applied
2004-10-06 19:14:33 +03:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
0b6dc49388 Bug#5553 - Multi table UPDATE IGNORE fails on dup key
We don't want the update to abort when IGNORE is specified
2004-09-17 12:07:59 +01:00
monty@mysql.com
e0e0314d60 Merge with 4.0 2004-03-25 23:29:45 +02:00
Sinisa@sinisa.nasamreza.org
8c4b59b72c update.test:
a fix for a test with latest change
2004-03-15 19:17:18 +02:00
bell@sanja.is.com.ua
2a55a7684f for multy-delete command used same algorithm of table reference (alias) 2004-01-20 19:16:18 +02:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
fcf96dbb18 WorkLog#1323
Deprecate the use of TYPE=... Preferred syntax is ENGINE=
2003-12-10 04:31:42 +00:00
monty@narttu.mysql.fi
dd2b7918cd Merge with 4.0.13 2003-05-19 16:35:49 +03:00
monty@narttu.mysql.fi
3e72b423e3 Fix for MacOSX and symlinks
Fix for USE_FRM and crashed index file
2003-05-14 01:27:26 +03:00
monty@narttu.mysql.fi
41d2103e26 Fixed 'Unknown error' when using 'UPDATE ... LIMIT'. Bug 373 2003-05-13 20:07:43 +03:00
monty@narttu.mysql.fi
f6a43bd567 Fixes for valgrind
Added optimzation for clustered index
Fixed bug in UPDATE ... ORDER BY
Fixed handling of UPDATE ... LIMIT
2003-04-23 21:52:16 +03:00
monty@mashka.mysql.fi
3bed7a6131 Merge with 4.0.13 2003-03-26 18:37:38 +02:00
jani@hynda.(none)
a7f632d7a8 Changed some tests to pass with new auto_increment handling,
e.g. default value is not accepted with auto_increment anymore.
2003-03-22 20:34:20 +02:00
monty@mashka.mysql.fi
1f6ecc0cd3 Changed mysql-test to print warnings for not existing table to DROP TABLE
Cleaned up test; Removed wrong DROP TABLE commands and use standard table and database names.
changed store_warning() -> push_warning_print()
2003-01-06 01:48:59 +02:00
Sinisa@sinisa.nasamreza.org
672a695f8f bug fixes and tests ... 2002-12-25 15:07:36 +02:00
monty@hundin.mysql.fi
7a45e7f266 Fixed bug in UPDATE .. ORDER BY 2001-11-08 22:30:27 +02:00
monty@tik.mysql.fi
3099c54d94 Test case for bug when updating on key
Fixed bug in CONCAT_WS()
Print the default ISOLATION level.
Change lock type for CREATE ... SELECT and INSERT/REPLACE ... SELECT
2001-03-23 20:38:42 +02:00
monty@donna.mysql.com
d218ebcc51 Added locks needed for Innobase
Fixed mutex problem when doing automatic repair of MyISAM tables
2001-02-18 00:03:37 +02:00
monty@donna.mysql.com
c0f40d14cc Added support for hex strings to mysqlimport
A lot of new tests to mysqltest
Fixed bug with BDB tables and autocommit
2000-12-28 03:56:38 +02:00