Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/include/gis_generic.inc:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/archive_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/bdb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/innodb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/ndb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
into mysql.com:/home/ram/work/b26359/b26359.5.0
mysql-test/r/strict.result:
Auto merged
mysql-test/t/strict.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
Problems:
1. storing a string to an integer field we don't check
if strntoull10rnd() returns MY_ERRNO_EDOM error.
Fix: check for MY_ERRNO_EDOM.
2. storing a string to an year field we use my_strntol() function.
Fix: use strntoull10rnd() instead.
mysql-test/r/strict.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/r/type_date.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/r/type_year.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/t/strict.test:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test case.
mysql-test/t/type_year.test:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
sql/field.cc:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- Field_num::get_int() method introduced. It converts a string to integer
then check errors and bounds.
- similar Field_tiny::store(const char...), Field_short::store(const char...),
Field_medium::store(const char...), Field_long::store(const char...)
rewritten, now they just call Field_num::get_int() then store value returned.
- Field_num::check_int() simplified.
- Field_year::store(const char...) now uses strntoull10rnd() and properly checks
errors returned.
sql/field.h:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- check_int() moved to Field_num.
- get_int() introduced.
mysql-test/r/archive_gis.result:
update test result
mysql-test/r/bdb_gis.result:
update test result
mysql-test/r/innodb_gis.result:
update test result
mysql-test/r/ndb_gis.result:
update test result
- Add primary key to test table, so NDB with binlog doesn't complain
- Add extra results for bdb_gis.result
mysql-test/include/gis_generic.inc:
Update test for bug #24563 (MBROverlaps does not seem to function propertly.):
- Add primary key to test table, so NDB with binlog doesn't complain
mysql-test/r/archive_gis.result:
update test results
mysql-test/r/bdb_gis.result:
update test results
mysql-test/r/innodb_gis.result:
update test results
mysql-test/r/ndb_gis.result:
update test results
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
mysql-test/r/func_str.result:
Auto merged
mysql-test/t/func_str.test:
Auto merged
sql/item_strfunc.cc:
Auto merged
- Add extra test case from bug#27073
- Change "if" to be optimized for count > 0
mysql-test/r/func_str.result:
Add test case from bug#27073
mysql-test/t/func_str.test:
Add test case from bug#27073
sql/item_strfunc.cc:
Change the if statemnet to be optimized for the normal case where count > 0
opt_complete_insert was improperly used by accident.
Use complete_insert flag instead.
client/mysqldump.c:
Fix for bug #25993: mysqldump crashes with merge table and -c option
- use complete_insert instead of opt_complete_insert.
mysql-test/r/mysqldump.result:
Fix for bug #25993: mysqldump crashes with merge table and -c option
- test result.
mysql-test/t/mysqldump.test:
Fix for bug #25993: mysqldump crashes with merge table and -c option
- test case.
Fix is to rewrite the MBR::overlaps() function, to compute the dimension of both
arguments, and the dimension of the intersection; test that all three dimensions are the
same (e.g., all are Polygons).
Add tests for all MBR* functions for various combinations of shapes, lines and points.
mysql-test/include/gis_generic.inc:
Add tests & checks for bug #24563 and bug #24588 - some GIS functions missing in
5.1; many GIS functions not tested; Overlaps() function was incorrect when MBR shifted
only along one axis; Overlaps() needs to take dimension of shape into account.
mysql-test/r/archive_gis.result:
Update test results.
mysql-test/r/bdb_gis.result:
Update test results.
mysql-test/r/gis.result:
Update test results.
mysql-test/r/innodb_gis.result:
Update test results.
mysql-test/r/ndb_gis.result:
Update test results.
mysql-test/t/gis.test:
Add tests & checks for bug #24563 and bug #24588 - some GIS functions missing in
5.1; many GIS functions not tested; Overlaps() function was incorrect when MBR shifted
only along one axis; Overlaps() needs to take dimension of shape into account.
sql/spatial.h:
Add MBR::dimension() (map MBR to integral dimension: point -> 0, line -> 1,
polygon -> 2, invalid -> -1)
Fix MBR::overlaps() to handle MBRs which are shifted on one dimension only, and to
take MBR dimension into account. Also, test both within() and contains() predicates (so
that overlaps(a, b) == overlaps(b, a)).
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Fixes:
- Bug #21409: Incorrect result returned when in READ-COMMITTED with query_cache ON
At low transaction isolation levels we let each consistent read set
its own snapshot.
- Bug #23666: strange Innodb_row_lock_time_% values in show status; also millisecs wrong
On Windows ut_usectime returns secs and usecs relative to the UNIX
epoch (which is Jan, 1 1970).
- Bug #25494: LATEST DEADLOCK INFORMATION is not always cleared
lock_deadlock_recursive(): When the search depth or length is exceeded,
rewind lock_latest_err_file and display the two transactions at the
point of aborting the search.
- Bug #25927: Foreign key with ON DELETE SET NULL on NOT NULL can crash server
Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns for which
there is a foreign key constraint ON ... SET NULL.
- Bug #26835: Repeatable corruption of utf8-enabled tables inside InnoDB
The bug could be reproduced as follows:
Define a table so that the first column of the clustered index is
a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
of differing length are considered equivalent.
Insert and delete a record. Before the delete-marked record is
purged, insert another record whose first column is of different
length but equivalent to the first record. Under certain conditions,
the insertion can be incorrectly performed as update-in-place.
Likewise, an operation that could be done as update-in-place can
unnecessarily be performed as delete and insert, but that would not
cause corruption but merely degraded performance.
innobase/dict/dict0dict.c:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1317:
branches/5.0: Port r1316 from trunk:
Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns for which
there is a foreign key constraint ON ... SET NULL. (Bug #25927)
dict_foreign_find_index(): Add paramettter check_null.
dict_foreign_add_to_cache(): Do not allow ON DELETE SET NULL
or ON UPDATE SET NULL if any of the referencing columns are declared NOT NULL.
innobase/include/rem0rec.ic:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1339:
branches/5.0: Merge r1338 from trunk:
rec_offs_nth_size(): Treat n==0 as a special case. (Bug #26835)
innobase/include/sync0sync.ic:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1293:
branches/5.0: Fixed inline asm code, it didn't work with GCC > ver 3.x.
innobase/lock/lock0lock.c:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1331:
branches/5.0: Merge r1330 from trunk:
lock_deadlock_recursive(): When the search depth or length is exceeded,
rewind lock_latest_err_file and display the two transactions at the
point of aborting the search. (Bug #25494)
Revision r1333:
branches/5.0: Merge r1332 from trunk:
lock_deadlock_recursive(): When aborting the search, display a note
regardless of start->undo_no. Otherwise, aborted searches may show
up as genuine deadlocks. This mistake was made in r1330.
innobase/srv/srv0srv.c:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1261:
branches/5.0: Fix for Bug# 23666. On Windows ut_usectime returns secs
and usecs relative to the UNIX epoch (which is Jan, 1 1970).
innobase/ut/ut0ut.c:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1261:
branches/5.0: Fix for Bug# 23666. On Windows ut_usectime returns secs
and usecs relative to the UNIX epoch (which is Jan, 1 1970).
mysql-test/r/innodb.result:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1319:
branches/5.0: Port r1318 from trunk:
Add a test case for r1316 (Bug #25927).
Revision r1328:
branches/5.0: mysql-test: Merge changes from MySQL AB.
Revision r1341:
branches/5.0: Merge r1340 from trunk:
innodb.test, innodb.result: Add test case for Bug #26835.
The bug could be reproduced as follows:
Define a table so that the first column of the clustered index is
a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
of differing length are considered equivalent.
Insert and delete a record. Before the delete-marked record is
purged, insert another record whose first column is of different
length but equivalent to the first record. Under certain conditions,
the insertion can be incorrectly performed as update-in-place.
Likewise, an operation that could be done as update-in-place can
unnecessarily be performed as delete and insert, but that would not
cause corruption but merely degraded performance.
Revision r1284:
Merge changes from MySQL AB:
ChangeSet
2007/01/24 14:49:36+04:00 holyfoot@mysql.com
bug #22682 Test fails --without-geometry
geometry dependent parts moved to proper .test files
mysql-test/r/innodb.result
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -2
result fixed
mysql-test/r/innodb_gis.result
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +2 -0
result fixed
mysql-test/t/innodb.test
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -6
HAVE_GEOMETRY dependent part moved to innodb_gis.test
mysql-test/t/innodb_gis.test
2007/01/24 14:49:35+04:00 holyfoot@mysql.com +6 -0
HAVE_GEOMETRY dependent part moved here from innodb.test
Revision r1186:
dict_load_foreign(): Use a local variable instead of the 10-bit field
foreign->n_fields in order to preserve ON UPDATE CASCADE and
ON DELETE CASCADE flags. For some reason, gcc does not warn about
shifting a 10-bit field to right by 24 bits. (Bug #24741)
This bug was introduced while reducing the memory footprint of the
InnoDB data dictionary (Bug #20877).
innodb.test, innodb.result: Add a test case.
Revision r1318:
Add a test case for r1316 (Bug #25927).
Revision r1340:
innodb.test, innodb.result: Add test case for Bug #26835.
The bug could be reproduced as follows:
Define a table so that the first column of the clustered index is
a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
of differing length are considered equivalent.
Insert and delete a record. Before the delete-marked record is
purged, insert another record whose first column is of different
length but equivalent to the first record. Under certain conditions,
the insertion can be incorrectly performed as update-in-place.
Likewise, an operation that could be done as update-in-place can
unnecessarily be performed as delete and insert, but that would not
cause corruption but merely degraded performance.
mysql-test/t/innodb.test:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1279:
branches/5.0: Merge changes from MySQL AB:
ChangeSet
2006/11/20 22:42:06+02:00 monty@mysql.com
Remove compiler warnings
(Mostly in DBUG_PRINT() and unused arguments)
Fixed bug in query cache when used with traceing (--with-debug)
Fixed memory leak in mysqldump
Removed warnings from mysqltest scripts (replaced -- with #)
mysql-test/t/innodb.test
2006/11/20 22:41:41+02:00 monty@mysql.com +1 -1
Remove mysqltest warnings
sql/ha_innodb.cc
2006/11/20 22:41:51+02:00 monty@mysql.com +2 -2
Fixed compiler warning
Revision r1319:
branches/5.0: Port r1318 from trunk:
Add a test case for r1316 (Bug #25927).
Revision r1328:
branches/5.0: mysql-test: Merge changes from MySQL AB.
Revision r1341:
branches/5.0: Merge r1340 from trunk:
innodb.test, innodb.result: Add test case for Bug #26835.
The bug could be reproduced as follows:
Define a table so that the first column of the clustered index is
a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
of differing length are considered equivalent.
Insert and delete a record. Before the delete-marked record is
purged, insert another record whose first column is of different
length but equivalent to the first record. Under certain conditions,
the insertion can be incorrectly performed as update-in-place.
Likewise, an operation that could be done as update-in-place can
unnecessarily be performed as delete and insert, but that would not
cause corruption but merely degraded performance.
Revision r1284:
Merge changes from MySQL AB:
ChangeSet
2007/01/24 14:49:36+04:00 holyfoot@mysql.com
bug #22682 Test fails --without-geometry
geometry dependent parts moved to proper .test files
mysql-test/r/innodb.result
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -2
result fixed
mysql-test/r/innodb_gis.result
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +2 -0
result fixed
mysql-test/t/innodb.test
2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -6
HAVE_GEOMETRY dependent part moved to innodb_gis.test
mysql-test/t/innodb_gis.test
2007/01/24 14:49:35+04:00 holyfoot@mysql.com +6 -0
HAVE_GEOMETRY dependent part moved here from innodb.test
Revision r1283:
Merge changes from MySQL AB:
ChangeSet
2007/01/22 18:42:52+02:00 monty@mysql.com
Give warnings for unused objects
Changed error message to be compatible with old error file
Added new error message for new DUP_ENTRY syntax
mysql-test/t/innodb.test
2007/01/22 18:42:49+02:00 monty@mysql.com +14 -14
Changed to use new error message
Revision r1186:
dict_load_foreign(): Use a local variable instead of the 10-bit field
foreign->n_fields in order to preserve ON UPDATE CASCADE and
ON DELETE CASCADE flags. For some reason, gcc does not warn about
shifting a 10-bit field to right by 24 bits. (Bug #24741)
This bug was introduced while reducing the memory footprint of the
InnoDB data dictionary (Bug #20877).
innodb.test, innodb.result: Add a test case.
Revision r1318:
Add a test case for r1316 (Bug #25927).
Revision r1329:
Merge changes from MySQL AB to mysql-test directives.
The results are not affected.
Revision r1340:
innodb.test, innodb.result: Add test case for Bug #26835.
The bug could be reproduced as follows:
Define a table so that the first column of the clustered index is
a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes
of differing length are considered equivalent.
Insert and delete a record. Before the delete-marked record is
purged, insert another record whose first column is of different
length but equivalent to the first record. Under certain conditions,
the insertion can be incorrectly performed as update-in-place.
Likewise, an operation that could be done as update-in-place can
unnecessarily be performed as delete and insert, but that would not
cause corruption but merely degraded performance.
sql/ha_innodb.cc:
NULL MERGE this to 5.1
Apply the following InnoDB snapshots:
innodb-5.0-ss1319
innodb-5.0-ss1331
innodb-5.0-ss1333
innodb-5.0-ss1341
Revision r1279:
branches/5.0: Merge changes from MySQL AB:
ChangeSet
2006/11/20 22:42:06+02:00 monty@mysql.com
Remove compiler warnings
(Mostly in DBUG_PRINT() and unused arguments)
Fixed bug in query cache when used with traceing (--with-debug)
Fixed memory leak in mysqldump
Removed warnings from mysqltest scripts (replaced -- with #)
mysql-test/t/innodb.test
2006/11/20 22:41:41+02:00 monty@mysql.com +1 -1
Remove mysqltest warnings
sql/ha_innodb.cc
2006/11/20 22:41:51+02:00 monty@mysql.com +2 -2
Fixed compiler warning
Revision r1280:
branches/5.0: Merge a change from MySQL AB:
ChangeSet
2006/11/30 18:25:05+02:00 monty@mysql.com
Fixed portability issue in my_thr_init.c (was added in my last push)
Fixed compiler warnings (detected by VC++):
- Removed not used variables
- Added casts
- Fixed wrong assignments to bool
- Fixed wrong calls with bool arguments
- Added missing argument to store(longlong), which caused wrong store
method to be called.
sql/ha_innodb.cc
2006/11/30 18:24:53+02:00 monty@mysql.com +0 -1
Removed not used variable
Revision r1260:
branches/5.0: Fix for Bug# 21409. At low transaction isolation levels
we let each consistent read set its own snapshot.
Revision r1326:
branches/5.0: Merge code from MySQL AB:
ChangeSet@1.2417.3.1 2007-02-22 16:59:57+02:00 monty@mysql.fi
Fixed compiler warnings (for linux and win32 and win64)
Fixes to buffer overlows from long command line args, and unchecked dyn_str return codes. Also light refactoring.
client/mysqldump.c:
Bug#26346 stack + buffer overrun in mysqldump
mysql-test/r/mysqldump.result:
Bug#26346 stack + buffer overrun in mysqldump
mysql-test/t/mysqldump.test:
Bug#26346 stack + buffer overrun in mysqldump
mysql-test/r/delayed.result:
result fixed
mysql-test/r/merge.result:
result fixed
mysql-test/t/delayed.test:
moved here from merge.test
mysql-test/t/init_connect.test:
test fixed as it created users, then stopped without deletion, what caused
problems in consequent tests
mysql-test/t/merge.test:
moved to delayed.test
mysql-test/t/mysqlbinlog-cp932.test:
disabled in embedded server
Removed wrong fix for the bug#27006.
The bug was added by the fix for the bug#19978 and fixed by Monty on 2007/02/21.
trigger.test, trigger.result:
Corrected test case for the bug#27006.
sql/sql_insert.cc:
Removed wrong fix for the bug#27006.
The bug was added by the fix for the bug#19978 and fixed by Monty on 2007/02/21.
mysql-test/t/trigger.test:
Corrected test case for the bug#27006.
mysql-test/r/trigger.result:
Corrected test case for the bug#27006.
into bodhi.local:/opt/local/work/mysql-5.0-runtime
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/sp.result:
SCCS merged
mysql-test/t/sp.test:
SCCS merged
mysql-test/r/loaddata.result:
Fix bug#27212: Do not try to read a file which is not contained in a binary distribution,
because it will be missing when the tests are run during release build or by a customer.
mysql-test/t/loaddata.test:
Fix bug#27212: Do not try to read a file which is not contained in a binary distribution,
because it will be missing when the tests are run during release build or by a customer.
Problem: to handle a situation when the size of event on the master is greater than max_allowed_packet on slave, we checked for the wrong constant (ER_NET_PACKET_TOO_LARGE instead of CR_NET_PACKET_TOO_LARGE).
Solution: test for the client "packet too large" error code instead of the server one in slave I/O thread.
mysql-test/r/rpl_packet.result:
Added test case for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits"
mysql-test/t/rpl_packet.test:
Added test case for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits"
sql/slave.cc:
Test for the client "packet too large" error code instead of the server one in slave I/O thread.
UPDATE if the row wasn't actually changed.
This bug was caused by fix for bug#19978. It causes AFTER UPDATE triggers
not firing if a row wasn't actually changed by the update part of the
INSERT .. ON DUPLICATE KEY UPDATE.
Now triggers are always fired if a row is touched by the INSERT ... ON
DUPLICATE KEY UPDATE.
sql/sql_insert.cc:
Bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
UPDATE if the row wasn't actually changed.
Now triggers are always fired if a row is touched by the INSERT ... ON
DUPLICATE KEY UPDATE.
mysql-test/r/trigger.result:
Added a test case for the bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
UPDATE if the row wasn't actually changed.
mysql-test/t/trigger.test:
Added a test case for the bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
UPDATE if the row wasn't actually changed.
into magare.gmz:/home/kgeorge/mysql/autopush/B26261-5.0-opt
sql/mysql_priv.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
mysql-test/r/insert_update.result:
SCCS merged
mysql-test/t/insert_update.test:
SCCS merged
INSERT uses query_id to verify what fields are
mentioned in the fields list of the INSERT command.
However the check for that is made after the
ON DUPLICATE KEY is processed. This causes all
the fields mentioned in ON DUPLICATE KEY to be
considered as mentioned in the fields list of
INSERT.
Moved the check up, right after processing the
fields list.
mysql-test/r/insert_update.result:
Bug #26261: test case
mysql-test/t/insert_update.test:
Bug #26261: test case
sql/mysql_priv.h:
Bug #26261: moved the check inside mysql_prepare_insert
sql/sql_insert.cc:
Bug #26261: move the check inside mysql_prepare_insert
before setting up the ON DUPLICATE KEY part
sql/sql_prepare.cc:
Bug #26261: moved the check inside mysql_prepare_insert
The crash happens when 'skip-grant-tables' is enabled.
We skip the filling of I_S privilege tables
if acl_cache is not initialized.
mysql-test/r/skip_grants.result:
test result
mysql-test/t/skip_grants.test:
test case
sql/sql_acl.cc:
skip filling of I_S privilege tables
if acl_cache is not initialized
touched but not actually changed.
The LAST_INSERT_ID() is reset to 0 if no rows were inserted or changed.
This is the case when an INSERT ... ON DUPLICATE KEY UPDATE updates a row
with the same values as the row contains.
Now the LAST_INSERT_ID() values is reset to 0 only if there were no rows
successfully inserted or touched.
The new 'touched' field is added to the COPY_INFO structure. It holds the
number of rows that were touched no matter whether they were actually
changed or not.
sql/sql_class.h:
Bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
touched but not actually changed.
The new 'touched' field is added to the COPY_INFO structure. It holds the
number of rows that were touched no matter whether they were actually
changed or not.
mysql-test/r/insert_update.result:
Added a test case for the bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
touched but not actually changed.
mysql-test/t/insert_update.test:
Added a test case for the bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
touched but not actually changed.
sql/sql_insert.cc:
Bug#27033: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE if rows were
touched but not actually changed.
Now the LAST_INSERT_ID() values is reset to 0 only if there were no rows
successfully inserted or touched.
Altering to a decimal field we get double value then store it
that may cause data loss.
Fix: use store_decimal() instead.
mysql-test/r/type_newdecimal.result:
Fix for bug #24558: Increasing decimal column length causes data loss
- test result.
mysql-test/t/type_newdecimal.test:
Fix for bug #24558: Increasing decimal column length causes data loss
- test case.
sql/field_conv.cc:
Fix for bug #24558: Increasing decimal column length causes data loss
- if target field's result type is DECIMAL_RESULT
use store_decimal(val_decimal()) in order not to loss data.
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.
mysql-test/r/sp-error.result:
SQL Exception handlers define a parsing context for label resolution.
mysql-test/r/sp.result:
SQL Exception handlers define a parsing context for label resolution.
mysql-test/t/sp-error.test:
SQL Exception handlers define a parsing context for label resolution.
mysql-test/t/sp.test:
SQL Exception handlers define a parsing context for label resolution.
sql/sp_head.cc:
Minor cleanup
sql/sp_head.h:
Minor cleanup
sql/sp_pcontext.cc:
SQL Exception handlers define a parsing context for label resolution.
sql/sp_pcontext.h:
SQL Exception handlers define a parsing context for label resolution.
sql/sql_yacc.yy:
SQL Exception handlers define a parsing context for label resolution.
Different set of conditions is used to verify
the validity of index definitions over a GEOMETRY
column in ALTER TABLE and CREATE TABLE.
The difference was on how sub-keys notion validity
is checked.
Fixed by extending the CREATE TABLE condition to
support the cases allowed in ALTER TABLE.
Made the SHOW CREATE TABLE not to display spatial
indexes using the sub-key notion.
mysql-test/r/alter_table.result:
Bug #26794: test case
mysql-test/r/gis-rtree.result:
Bug #26794: fixed SHOW CREATE TABLE output.
mysql-test/t/alter_table.test:
Bug #26794: test case
sql/field.cc:
Bug #26794: Allow sub-keys for GEOMETRY
sql/sql_show.cc:
Bug #26794: Don't show sub-key notion
in SHOW CREATE TABLE for SPATIAL indexes.
sql/sql_table.cc:
Bug #26794: Allow sub-keys for GEOMETRY
into mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines
myisam/mi_create.c:
Auto merged
mysql-test/t/merge.test:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/sql_parse.cc:
Use local.
mysql-test/r/merge.result:
SCCS merged
differences in tables
Certain merge tables were wrongly reported as having incorrect definition:
- Some fields that are 1 byte long (e.g. TINYINT, CHAR(1)), might
be internally casted (in certain cases) to a different type on a
storage engine layer. (affects 4.1 and up)
- If tables in a merge (and a MERGE table itself) had short VARCHAR column (less
than 4 bytes) and at least one (but not all) tables were ALTER'ed (even to an
identical table: ALTER TABLE xxx ENGINE=yyy), table definitions went ouf of
sync. (affects 4.1 only)
This is fixed by relaxing a check for underlying conformance and setting
field type to FIELD_TYPE_STRING in case varchar is shorter than 4
when a table is created.
myisam/mi_create.c:
Added a comment.
mysql-test/r/merge.result:
A test case for bug#26881.
mysql-test/t/merge.test:
A test case for bug#26881.
sql/ha_myisam.cc:
Relaxed some checks performed by check_definition():
As comparing of fulltext keys (and key segments) is not yet implemented,
only return an error in case one of keys is fulltext and other is not.
Otherwise, if both keys are fulltext, accept them as is.
As comparing of spatial keys (and key segments) is not yet implemented,
only return an error in case one of keys is spatial and other is not.
Otherwise, if both keys are spatial, accept them as is.
A workaround to handle situation when field is casted from FIELD_SKIP_ZERO
to FIELD_NORMAL. This could happen only in case field length is 1 and row
format is fixed.
sql/sql_parse.cc:
When a table that has varchar field shorter than 4 is created, field type is
set to FIELD_TYPE_VAR_STRING. Later, when a table is modified using alter
table, field type is changed to FIELD_TYPE_STRING (see Field_string::type).
That means HA_OPTION_PACK_RECORD flag might be lost and thus null_bit might
be shifted by alter table, in other words alter table doesn't create 100%
equal table definition.
This is usually not a problem, since when a table is created/altered,
definition on a storage engine layer is based on one that is passed from
sql layer. But it is a problem for merge engine - null_bit is shifted when
a table (merge or underlying) is altered.
Set field type to FIELD_TYPE_STRING in case FIELD_TYPE_VAR_STRING is shorter
than 4 when a table is created as it is done in Field::type.
when the column is to be read from a derived table column which
was specified as a concatenation of string literals.
The bug happened because the Item_string::append did not adjust the
value of Item_string::max_length. As a result of it the temporary
table column defined to store the concatenation of literals was
not wide enough to hold the whole value.
mysql-test/r/subselect.result:
Added a test case for bug #26738.
mysql-test/t/subselect.test:
Added a test case for bug #26738.
after single-row table substitution could lead to a wrong result set.
The bug happened because the function Item_field::replace_equal_field
erroniously assumed that any field included in a multiple equality
with a constant has been already substituted for this constant.
This not true for fields becoming constant after row substitutions
for constant tables.
mysql-test/r/select.result:
Added a test case for bug #26963.
mysql-test/t/select.test:
Added a test case for bug #26963.
sql/item.cc:
Fixed bug #26963: invalid optimization of the pushdown conditions
after single-row table substitution could lead to a wrong result set.
The bug happened because the function Item_field::replace_equal_field
erroneously assumed that any field included in a multiple equality
with a constant has been already substituted for this constant.
This not true for fields becoming constant after row substitutions
for constant tables.