When a view was used inside a trigger or a function, lock type for
tables used in a view was always set to READ (thus making the view
non-updatable), even if we were trying to update the view.
The solution is to set lock type properly.
mysql-test/r/view.result:
Add result for bug#17591: Updatable view not possible with trigger
or stored function.
mysql-test/t/view.test:
Add test case for bug#17591: Updatable view not possible with trigger
or stored function.
sql/sql_view.cc:
Move the code that sets requested lock type before the point where
we exit from mysql_make_view() when we process a placeholder for
prelocked table.
Add order by in rpl_(ndb)_multi_update3 to make result deterministic
mysql-test/extra/rpl_tests/rpl_multi_update3.test:
Add order by in rpl_(ndb)_multi_update3 to make result deterministic
mysql-test/r/rpl_multi_update3.result:
Add order by in rpl_(ndb)_multi_update3 to make result deterministic
mysql-test/r/rpl_ndb_multi_update3.result:
Add order by in rpl_(ndb)_multi_update3 to make result deterministic
into dator5.(none):/home/pappa/bug21388
sql/ha_partition.cc:
Auto merged
sql/ha_partition.h:
Auto merged
sql/item.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Auto merged
into zim.(none):/home/brian/mysql/arch-5.1
BUILD/compile-alpha-cxx:
Auto merged
BUILD/compile-alpha-debug:
Auto merged
BUILD/compile-dist:
Auto merged
BUILD/compile-ia64-debug-max:
Auto merged
CMakeLists.txt:
Auto merged
client/mysql.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
BUILD/FINISH.sh:
Innodbase config still needed.
Fixed "discover" in the handler API.
Fixed problem where handlerton was not zero'ed. I need to look around, I suspect this problem is more widespread.
sql/ha_innodb.h:
Unused variable
sql/ha_ndbcluster.cc:
Added "discover" to handlerton.
sql/handler.cc:
Added plugin loop and correctly now use handler API.
sql/handler.h:
Removed unused variable. Added discover to handler API
sql/mysqld.cc:
Removed unused variables.
sql/sql_plugin.cc:
Fixed DBUG Enter comment (obvious cut paste mistake)
storage/csv/ha_tina.cc:
Found that if we don't bzero handlerton, that things can go boom!
This probably needs to be fixed for all handlers
Adding condition to ensure that mutex are locked and unlocked
under same condition.
sql/ha_innodb.cc:
Adding condition to release and aquire mutex under same conditions.
erroneous check
Problem: Actually there were two problems in the server code. The check
for SQLCOM_FLUSH in SF/Triggers were not according to the existing
architecture which uses sp_get_flags_for_command() from sp_head.cc .
This function was also missing a check for SQLCOM_FLUSH which has a
problem combined with prelocking. This changeset fixes both of these
deficiencies as well as the erroneous check in
sp_head::is_not_allowed_in_function() which was a copy&paste error.
mysql-test/r/sp-error.result:
update result
mysql-test/r/trigger.result:
update result
mysql-test/t/sp-error.test:
FLUSH can create a problem with prelocking, hence it's disabled.
There is a better way to check this than a check in the parser.
Now we use sp_get_flags_for_command() and the error returned is
different.
mysql-test/t/trigger.test:
FLUSH can create a problem with prelocking, hence it's disabled.
There is a better way to check this than a check in the parser.
Now we use sp_get_flags_for_command() and the error returned is
different.
sql/sp_head.cc:
FLUSH and RESET are not allowed inside a SF/Trigger.
Because they don't imply a COMMIT sp_head::HAS_COMMIT_OR_ROLLBACK
cannot be used. Two new flags were introduced for that reason.
sql/sp_head.h:
Don't check m_type as this check is erroneous. This is probably
a copy and paste error when moving code from somewhere else. Another
fact which supports this was prefixing the enum value with the name
of class sp_head.
Adding two new flags HAS_SQLCOM_RESET and HAS_SQLCOM_FLUSH. The values
are 2048 and 4096 because in the 5.1 branch there are already new flags
which are with values up-to 1024.
sql/sql_parse.cc:
FLUSH can cause a problem with prelocking in SF/Trigger and
therefore is already disabled. RESET is also disabled because
is handled by the same code as FLUSH. We won't allow RESET inside
SF/Trigger at that stage without thorough analysis. The check for
them is already done in the parser by calling
is_not_allowed_in_function()
sql/sql_yacc.yy:
By listing SQLCOM_FLUSH as command which implies COMMIT
in sp_get_flags_for_command() the check in sql_yacc.yy is
obsolete.
const tables. This resulted in choosing extremely inefficient
execution plans in same cases when distribution of data in
joined were skewed (see the customer test case for the bug).
mysql-test/r/select.result:
Added a test case for bug #21390: wrong estimate of rows
after elimination of const tables.
Includded a test case that checks the code added by the patch
that handles outer joins with no matches after substitution of
a const table in an efficient way.
mysql-test/t/select.test:
Added a test case for bug #21390: wrong estimate of rows
after elimination of const tables.
Included a test case that checks the code added by the patch
that handles outer joins with no matches after substitution of
a const table in an efficient way.
sql/sql_select.cc:
Fixed bug #21390: wrong estimate of rows after elimination of
const tables. This resulted in choosing extremely inefficient
execution plans in same cases when distribution of data in
joined were skewed (see the customer test case for the bug).
Also added the code to handle outer joins with no matches after
substitution of a const table in an efficient way.
Corrected calculation of the null rejecting key conditions.
CMakeLists.txt:
add for federated
libmysqld/CMakeLists.txt:
ha_heap.cc and ha_myisam.cc are removed
add for federated
sql/CMakeLists.txt:
add for federated
sql/handler.cc:
fix for fussy compilers
storage/heap/CMakeLists.txt:
add ha_heap.cc
storage/myisammrg/CMakeLists.txt:
add ha_myisammrg.cc
The following procedure was not possible if max_sp_recursion_depth is 0
create procedure show_proc() show create procedure show_proc;
Actually there is no recursive call but the limit is checked.
Solved by temporarily increasing the thread's limit just before the fetch from cache
and decreasing after that.
mysql-test/r/sp.result:
update result
mysql-test/t/sp.test:
Test for bug #21416 SP: Recursion level higher than zero needed for non-recursive call
sql/sp.cc:
Increase the max_sp_recursion_depth temporarily for SHOW CREATE PROCEDURE call.
This call is in fact not recursive but is counted as such. Outcome, it will work
always but if max_sp_recursion_depth is reached we are going to cache one more
sp_head instance.
Must not use Item_direct_ref in HAVING because it points to
the new value (witch is not yet calculated for the first row).
mysql-test/r/subselect.result:
Bug #16255: Subquery in where
- test case
mysql-test/t/subselect.test:
Bug #16255: Subquery in where
- test case
sql/item_subselect.cc:
Bug #16255: Subquery in where
Must not use Item_direct_ref in HAVING because it points to
the new value (witch is not yet calculated for the first row).
Changed trigger-handling code so that there will be the one
place for generate statement string for replication log
and for trigger file.
sql/sql_trigger.cc:
Changed trigger-handling code so that there will be the one
place for generate statement string for replication log
and for trigger file.
sql/sql_trigger.h:
Changed trigger-handling code so that there will be the one
place for generate statement string for replication log
and for trigger file.
affects basically all replication tests
storage/ndb/include/kernel/signaldata/SumaImpl.hpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
1) Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
2) make sure to set NdbdNodeId on _TE_STOP
storage/ndb/src/ndbapi/NdbBlob.cpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/ndbapi/NdbEventOperation.cpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing
storage/ndb/src/ndbapi/Ndbif.cpp:
Fix signal data class SubTableData not to use Uint8 which can result in incorrect packing