Commit graph

17006 commits

Author SHA1 Message Date
unknown
9c89dd654e Bug #24484:
To correctly decide which predicates can be evaluated with a given table
the optimizer must know the exact set of tables that a predicate depends 
on. If that mask is too wide (refer to non-existing tables) the optimizer
can erroneously skip a predicate.
One such case of wrong table usage mask were the aggregate functions.
The have a all-1 mask (meaning depend on all tables, including non-existent
ones).
Fixed by making a real used_tables mask for the aggregates. The mask is
constructed in the following way :
1. OR the table dependency masks of all the arguments of the aggregate.
2. If all the arguments of the function are from the local name resolution 
  context and it is evaluated in the same name resolution
  context where it is referenced all the tables from that name resolution 
  context are OR-ed to the dependency mask. This is to denote that an
  aggregate function depends on the number of rows it processes.
3. Handle correctly the case of an aggregate function optimization (such that
  the aggregate function can be pre-calculated and made a constant).

Made sure that an aggregate function is never a constant (unless subject of a 
specific optimization and pre-calculation).  

One other flaw was revealed and fixed in the process : references were 
not calling the recalculation method for used_tables of their targets.


mysql-test/r/subselect3.result:
  Bug #24484: test case
mysql-test/t/subselect3.test:
  Bug #24484: test case
sql/item.h:
  Bug #24484: Item_ref must update the used tables.
sql/item_sum.cc:
  Bug #24484: correct calculation of used_tables for aggregates.
sql/item_sum.h:
  Bug #24484: correct calculation of used_tables for aggregates.
sql/opt_range.cc:
  Bug #24484: fixed ref resolution in loose index scan
sql/sql_base.cc:
  Bug #24484: moved counting of leaf tables inside 
  setup_tables_and_check_access.
sql/sql_class.h:
  Bug #24484: changed table count to more narrow type.
sql/sql_insert.cc:
  Bug #24484: moved counting of leaf tables inside 
  setup_tables_and_check_access. Substract the first
  table (and its subtables) of an INSERT statement
  from leaf_count.
sql/sql_select.cc:
  Bug #24484: correct check for aggregates
2007-03-20 19:46:02 +02:00
unknown
5578506302 Merge mysql.com:/home/kent/bk/tmp/mysql-5.0-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.1-build


BitKeeper/etc/ignore:
  auto-union
BitKeeper/deleted/.del-comp_err.vcproj~45c167ae5ddd5a96:
  Auto merged
BitKeeper/deleted/.del-gen_lex_hash.vcproj~544be6b6:
  Auto merged
BitKeeper/deleted/.del-heap.vcproj~4382203ba03f4038:
  Auto merged
BitKeeper/deleted/.del-myTest.vcproj~dba5adc4fad3c06:
  Auto merged
BitKeeper/deleted/.del-my_print_defaults.vcproj~c8aa2bd86e13c3f9:
  Auto merged
BitKeeper/deleted/.del-myisam_ftdump.vcproj~409c19b0274b7f8e:
  Auto merged
BitKeeper/deleted/.del-myisamchk.vcproj~982ebe5673e58fb6:
  Auto merged
BitKeeper/deleted/.del-myisamlog.vcproj~daa6596ea386e5a7:
  Auto merged
BitKeeper/deleted/.del-myisampack.vcproj~3f7d4ec0cb56a9a0:
  Auto merged
BitKeeper/deleted/.del-mysql.vcproj~f7bfe13a8836eea0:
  Auto merged
BitKeeper/deleted/.del-mysql_client_test.vcproj~22188dcd372bc9de:
  Auto merged
BitKeeper/deleted/.del-mysql_upgrade.vcproj~54815b7265120589:
  Auto merged
BitKeeper/deleted/.del-mysqladmin.vcproj~178fa55cba442d50:
  Auto merged
BitKeeper/deleted/.del-mysqlbinlog.vcproj~b2a5b1868f5d6596:
  Auto merged
BitKeeper/deleted/.del-mysqlcheck.vcproj~7022581c8b8a7ea2:
  Auto merged
BitKeeper/deleted/.del-mysqlclient.vcproj~e78a73e31368a44a:
  Auto merged
BitKeeper/deleted/.del-mysqlimport.vcproj~5a30228ef641c081:
  Auto merged
BitKeeper/deleted/.del-mysqlshow.vcproj~797d4fa322faa148:
  Auto merged
BitKeeper/deleted/.del-mysqltest.vcproj~21878840704179ef:
  Auto merged
BitKeeper/deleted/.del-perror.vcproj~86ad9dc660a048ad:
  Auto merged
BitKeeper/deleted/.del-regex.vcproj~9dea9caafa801b26:
  Auto merged
BitKeeper/deleted/.del-replace.vcproj~9620b1ced86e527a:
  Auto merged
BitKeeper/deleted/.del-strings.vcproj~6d1126ae59e4bf82:
  Auto merged
BitKeeper/deleted/.del-test1.vcproj~c474b4614c67e2d2:
  Auto merged
BitKeeper/deleted/.del-test_libmysqld.vcproj~fb301d42d5c4e6f4:
  Auto merged
BitKeeper/deleted/.del-thr_test.vcproj~fc0e15c1e6880160:
  Auto merged
BitKeeper/deleted/.del-vio.vcproj~b7c21b4e2d6a9b85:
  Auto merged
BitKeeper/deleted/.del-zlib.vcproj~9b1a681d56dae190:
  Auto merged
extra/yassl/taocrypt/taocrypt.vcproj:
  Auto merged
extra/yassl/yassl.vcproj:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/delayed.result:
  Auto merged
mysql-test/r/loaddata.result:
  Auto merged
mysql-test/r/merge.result:
  Auto merged
mysql-test/t/delayed.test:
  Auto merged
mysql-test/t/init_connect.test:
  Auto merged
mysql-test/t/loaddata.test:
  Auto merged
mysql-test/t/merge.test:
  Auto merged
netware/Makefile.am:
  Auto merged
scripts/make_binary_distribution.sh:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.vcproj:
  Auto merged
mysql-test/install_test_db.sh:
  SCCS merged
2007-03-20 17:58:30 +01:00
unknown
4890ea8af1 enabled test case
+ some fixes to do the enable


mysql-test/r/rpl_ndb_sync.result:
  enabled test case
mysql-test/t/disabled.def:
  enabled test case
sql/ha_ndbcluster.cc:
  enabled test case
sql/ha_ndbcluster_tables.h:
  add defines for old sys table
storage/ndb/tools/restore/Restore.cpp:
  add check for old sys table
2007-03-20 17:07:53 +01:00
unknown
da8e832a05 Merge polly.local:/tmp/maint/bug23775/my50-bug23775
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint


sql/slave.cc:
  Auto merged
2007-03-20 17:27:49 +03:00
unknown
089fca6bb6 tests fixed to work in embedded server
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
2007-03-20 17:53:55 +04:00
unknown
ffb3b096c9 Merge polly.local:/tmp/maint/bug23775/my51-bug23775
into  polly.local:/tmp/maint/mysql-5.1-maint


sql/slave.cc:
  Auto merged
2007-03-20 15:48:25 +03:00
unknown
256727d79f Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint
2007-03-20 11:23:17 +01:00
unknown
6bdf1d0772 Bug#27070 server logs are created unrequested and in wrong directory
- Avoid defaault log file names looking like <hostname>.pid.slow.log
  by using the FN_REPLACE_EXT flag to 'fn_format'
 - Remove the default log files generated by log_state.test before
   test completes


mysql-test/t/log_state.test:
  Tess sets location of log files to default location ie. they will be
  created in var/run form which the mysqld was started. Remove the
  files when test are completed
sql/log.cc:
  Replace the extension formatting the default log file name
  from "pidfile_name" which already contains an extension
2007-03-20 11:21:27 +01:00
unknown
83f639eee7 Update test reulst after setting logging to be sent both to file and tables 2007-03-20 11:17:07 +01:00
unknown
60b7cfaf6e Bug#27070 server logs are created unrequested and in wrong directory
- Setting up a A->B->A replication causes relay logs being written
  by the master, remove them when test is finished
 


mysql-test/t/rpl_dual_pos_advance.test:
  Cleanup files created by test case in var/run directory
2007-03-20 11:15:15 +01:00
unknown
0e0ca2a61c Bug #26079 max_binlog_size + innodb = not make new binlog and hang server
There was hanging at binlog_commit by a thread executing autocommit query.

The hang appeared to be due to an overly condtion for early return 
from binlog_commit introduced by bug#20265 fix.

Fixed with reverting the logic back to 5.0 version.


mysql-test/extra/binlog_tests/binlog.test:
  added a regression test
mysql-test/r/binlog_row_binlog.result:
  results changed
mysql-test/r/binlog_stm_binlog.result:
  results changed
sql/log.cc:
  Removing `all' conjuction arg from early return condition.
  There is nothing to execute by transaction if trx_data is empty.
  
  The work for rotate_and_purge is delayed till TC_LOG::unlog 
  (same as in 5.0 code)
sql/log.h:
  singed because there are assert on positiveness
2007-03-20 10:50:10 +02:00
unknown
509433d684 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-03-20 09:00:38 +01:00
unknown
a491b2c116 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-03-20 08:57:55 +01:00
unknown
6615666bc9 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51


BUILD/check-cpu:
  Auto merged
2007-03-19 23:36:38 +01:00
unknown
ca16e7038c Merge moonbone.local:/mnt/gentoo64/work/27006-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql


mysql-test/r/trigger.result:
  Auto merged
mysql-test/t/trigger.test:
  Auto merged
sql/sql_insert.cc:
  Manually merged.
2007-03-20 01:29:09 +03:00
unknown
168515a179 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-03-19 23:10:58 +01:00
unknown
3798a7d500 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.
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.
2007-03-20 00:46:19 +03:00
unknown
e9bb08ac0c Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime


include/my_global.h:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/events_scheduling.result:
  Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
  Auto merged
BitKeeper/deleted/.del-mysql_create_system_tables.sh:
  Auto merged
mysql-test/r/query_cache.result:
  Auto merged
mysql-test/r/view.result:
  Auto merged
mysql-test/t/events_scheduling.test:
  Auto merged
mysql-test/t/grant_cache.test:
  Auto merged
mysql-test/t/query_cache.test:
  Auto merged
mysql-test/t/view.test:
  Auto merged
scripts/mysql_system_tables_fix.sql:
  Auto merged
sql/event_db_repository.cc:
  Auto merged
sql/event_queue.cc:
  Auto merged
sql/field.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/handler.h:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/sql_base.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_help.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.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
sql/table.cc:
  Auto merged
sql/share/errmsg.txt:
  Auto merged
sql/tztime.cc:
  Auto merged
storage/innobase/handler/ha_innodb.cc:
  Auto merged
storage/myisam/ha_myisam.cc:
  Auto merged
storage/myisam/ha_myisam.h:
  Auto merged
mysql-test/r/skip_grants.result:
  Manualmerge.
mysql-test/r/sp.result:
  Manualmerge.
mysql-test/t/skip_grants.test:
  Manualmerge.
mysql-test/t/sp.test:
  Manualmerge.
sql/event_data_objects.cc:
  Manualmerge.
2007-03-20 00:42:11 +03:00
unknown
adf4f63513 Merge trift2.:/MySQL/M50/clone-5.0
into  trift2.:/MySQL/M50/push-5.0


sql/mysql_priv.h:
  Auto merged
2007-03-19 22:18:31 +01:00
unknown
14ab9bef52 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
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
2007-03-19 23:59:53 +03:00
unknown
db573e637c Bug#26996 - Update of a Field in a Memory Table ends with wrong result
Using a MEMORY table BTREE index for scanning for updatable rows
could lead to an infinite loop.

Everytime a key was inserted into a btree index, the position
in the index scan was cleared. The search started from the
beginning and found the same key again.

Now we do not clear the position on key insert an more.


heap/hp_write.c:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Removed the index-scan-breaking nulling of last_pos.
  The comment behind this line ("For heap_rnext/heap_rprev")
  was misleading. It should have been "Breaks heap_rnext/heap_rprev".
mysql-test/r/heap_btree.result:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Added test result.
mysql-test/t/heap_btree.test:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Added test.
2007-03-19 15:56:53 +01:00
unknown
e2fc9ab7af Merge poseidon.:/home/tomas/mysql-5.1
into  poseidon.:/home/tomas/mysql-5.1-new-ndb


sql/ha_ndbcluster.cc:
  Auto merged
2007-03-19 11:37:09 +01:00
unknown
f8a071d38d Merge poseidon.:/home/tomas/mysql-5.0
into  poseidon.:/home/tomas/mysql-5.0-ndb
2007-03-19 11:33:29 +01:00
unknown
be1fb16006 Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint


BitKeeper/etc/ignore:
  auto-union
mysql-test/mysql-test-run.pl:
  Auto merged
netware/Makefile.am:
  Auto merged
scripts/make_binary_distribution.sh:
  Auto merged
sql/mysql_priv.h:
  Auto merged
tests/Makefile.am:
  Auto merged
mysql-test/install_test_db.sh:
  Manual merge
sql/sql_acl.h:
  Manual merge
2007-03-19 11:15:59 +01:00
unknown
4717576173 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb
into  poseidon.:/home/tomas/mysql-5.1-new-ndb


storage/ndb/tools/restore/consumer_restore.cpp:
  Auto merged
storage/ndb/tools/restore/restore_main.cpp:
  Auto merged
2007-03-19 10:54:47 +01:00
unknown
307a5859e2 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  poseidon.:/home/tomas/mysql-5.0-ndb
2007-03-19 10:53:13 +01:00
unknown
56ce4907f1 Merge bk-internal:/home/bk/mysql-5.1-new-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint
2007-03-19 09:26:07 +01:00
unknown
febd0c08f2 Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  trift2.:/MySQL/M51/push-5.1
2007-03-17 19:25:07 +01:00
unknown
f7e30b0599 Merge baker@bk-internal.mysql.com:/home/bk/mysql-5.1-arch
into  zim.(none):/home/bk/mysql-5.1-arch
2007-03-16 15:26:02 -07:00
unknown
9055eaa1eb The pthread() support was not working. Once I fixed use-thread in a previous push I realized that the pthread/windows code was not working. I've replaced the fork/thread design with a pure pthread design using condition timers and broadcast.
Ramification, UNIX now uses thread, support for slaves had to be dropped and there is no need for the --use-threads flag.
Added --concurrency=0 option so that it will start at 1 and keep going up until something bad happens :)


client/client_priv.h:
  Dead option removed
client/mysqlslap.c:
  Removed lock code, replaced with posix thread code.
mysql-test/mysql-test-run.pl:
  Removed dead option
mysql-test/t/mysqlslap.test:
  Removed dead option
2007-03-16 15:20:22 -07:00
unknown
77fccd038f Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Build sql files for netware from the mysql_system_tables*.sq files
 - Fix comments about mysql_create_system_tables.sh
 - Use mysql_install_db.sh to create system tables for mysql_test-run-shell
 - Fix mysql-test-run.pl to also look in share/mysql for the msyql_system*.sql files

Changeset coded today by Magnus Svensson, just the application to 5.0.38 is by Joerg Bruehe.


BitKeeper/deleted/.del-init_db.sql~e2b8d0c8390e8023:
  Delete: netware/init_db.sql
BitKeeper/deleted/.del-test_db.sql:
  Delete: netware/test_db.sql
BitKeeper/etc/ignore:
  Added netware/init_db.sql netware/test_db.sql to the ignore list
mysql-test/install_test_db.sh:
  Use mysql_install_db from install_test_db(which is used by mysql-test-run-shell)
  to install the system tables
mysql-test/mysql-test-run.pl:
  Look for the mysql_system_tables*.sql also in share/mysql
netware/Makefile.am:
  Build netware/init_db.sql and netware/test_db.sql from
  the sources in scripts/msyql_system_tables*.sql
scripts/make_binary_distribution.sh:
  netware/init_db.sql and netware/test_db.sql are now built by the Makefiles
  from the scripts/mysql_system_tables*.sql files
sql/mysql_priv.h:
  Update comment remindging to update the MySQL system table definitions
  when adding a new SQL_MODE
sql/sql_acl.h:
  Update comment reminding to update the MySQL System tables
  when changing the ACL defines
2007-03-16 20:56:16 +01:00
unknown
f5ca94684a Merge moonbone.local:/mnt/gentoo64/work/27006-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql


mysql-test/r/trigger.result:
  Auto merged
mysql-test/t/trigger.test:
  Auto merged
sql/sql_insert.cc:
  Manually merged
2007-03-16 22:20:24 +03:00
unknown
e85784ba09 Merge trift2.:/MySQL/M50/clone-5.0
into  trift2.:/MySQL/M51/merge-5.1


mysql-test/r/loaddata.result:
  Auto merged
mysql-test/t/loaddata.test:
  Auto merged
2007-03-16 20:04:32 +01:00
unknown
92384c6744 Fix bug#27212, test case "loaddata": Take the file to read from the binary package.
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.
2007-03-16 19:56:16 +01:00
unknown
793c30612a Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt


mysql-test/r/insert_update.result:
  Auto merged
mysql-test/t/insert_update.test:
  Auto merged
mysql-test/t/skip_grants.test:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_acl.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_insert.cc:
  merging
2007-03-16 22:09:10 +04:00
unknown
0eec6c133a Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Build sql files for netware from the mysql_system_tables*.sq files
 - Fix comments about mysql_create_system_tables.sh
 - Use mysql_install_db.sh to create system tables for mysql_test-run-shell
 - Fix mysql-test-run.pl to also look in share/mysql for the msyql_system*.sql files


BitKeeper/deleted/.del-init_db.sql~e2b8d0c8390e8023:
  Rename: netware/init_db.sql -> BitKeeper/deleted/.del-init_db.sql~e2b8d0c8390e8023
BitKeeper/deleted/.del-test_db.sql:
  Rename: netware/test_db.sql -> BitKeeper/deleted/.del-test_db.sql
BitKeeper/etc/ignore:
  Added netware/init_db.sql netware/test_db.sql to the ignore list
mysql-test/install_test_db.sh:
  Use mysql_install_db from install_test_db(which is used bu mysql-test-run-shell)
  to install the system tables
mysql-test/mysql-test-run.pl:
  Look for the mysql_system_tables*.sql also in share/mysql
netware/Makefile.am:
  Build netware/init_db.sql and netware/test_db.sql from
  the sources in scripts/msyql_system_tables*.sql
scripts/make_binary_distribution.sh:
  netware/init_db.sql and netware/test_db.sql are now built by the Makefiles
  from the scripts/mysql_system_tables*.sql files
sql/mysql_priv.h:
  Update comment remindging to update the MySQL system table definitions
  when adding a new SQL_MODE
sql/sql_acl.h:
  Update comment reminding to update the MySQL System tables
  when changing the ACL defines
2007-03-16 17:28:32 +01:00
unknown
9343ee8aa5 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-03-16 17:28:16 +01:00
unknown
354e15f068 Merge moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1
into  moonlight.home:/home/tomash/src/mysql_ab/mysql-5.1-wl3698
2007-03-16 18:02:43 +03:00
unknown
bb9cd2d705 Merge polly.local:/tmp/maint/bug23775/my50-bug23775
into  polly.local:/tmp/maint/bug23775/my51-bug23775


sql/slave.cc:
  Manual merge.
2007-03-16 17:33:22 +03:00
unknown
086fba7627 BUG#16420: Events: timestamps become UTC
BUG#26429: SHOW CREATE EVENT is incorrect for an event that
           STARTS NOW()
BUG#26431: Impossible to re-create an event from backup if its
           STARTS clause is in the past
WL#3698: Events: execution in local time zone

The problem was that local times specified by the user in AT, STARTS
and ENDS of CREATE EVENT/ALTER EVENT statement were converted to UTC,
and the original time zone was forgotten.  This way, event scheduler
couldn't honor Daylight Saving Time shifts, and times shown to the
user were also in UTC.  Additionally, CREATE EVENT didn't allow times
in the past, thus preventing straightforward event restoration from
old backups.

This patch reworks event scheduler time computations, performing them
in the time zone associated with the event.  Also it allows times to
be in the past.

The patch adds time_zone column to mysql.event table.

NOTE: The patch is almost final, but the bug#9953 should be pushed
first.


client/mysqldump.c:
  Before every CREATE EVENT, output its time zone.
mysql-test/include/wait_condition.inc:
  Add optional $wait_timeout parameter.
mysql-test/lib/init_db.sql:
  Add time_zone column.
mysql-test/r/events.result:
  Update result.
mysql-test/r/events_bugs.result:
  Update result.
mysql-test/r/events_grant.result:
  Update result.
mysql-test/r/events_restart_phase1.result:
  Update result.
mysql-test/r/events_scheduling.result:
  Update result.
mysql-test/r/mysqldump.result:
  Update result.
mysql-test/r/ps.result:
  Update result.
mysql-test/r/system_mysql_db.result:
  Update result.
mysql-test/t/events.test:
  Remove STARTS from the result, as it depends on current time.
mysql-test/t/events_bugs.test:
  Time in the past is no longer an error.
mysql-test/t/events_restart_phase1.test:
  Fill new column 'time_zone' in mysql.event.
mysql-test/t/events_scheduling.test:
  Cleanup: disable event scheduler.
scripts/mysql_create_system_tables.sh:
  Add new column 'time_zone' to mysql.event.
scripts/mysql_fix_privilege_tables.sql:
  Add new column 'time_zone' to mysql.event.
sql/event_data_objects.cc:
  The essence of the change is the following:
   - for internal times use my_time_t instead of TIME.  Assignment and
     comparison is done now on plain numbers.
   - in init_execute_at(), init_starts(), init_ends() convert given time
     to number of seconds since Epoch (aka Unix time, in UTC).
   - handle time_zone field loading and storing.
   - in get_next_time(), Unix time is converted back to event time zone,
     interval is added, and the result is converted to UTC again.
   - fix Event_timed::get_create_event() to report STARTS and ENDS.
   - before executing the event body we set thread time zone to the
     event time zone.
sql/event_data_objects.h:
  Add time_zone member to Event_basic class.
  
  Store internal times in my_time_t (number of seconds since Epoch),
  rather than in broken down TIME structure.
sql/event_db_repository.cc:
  Add time_zone column handling.
  
  Give a warning and do not create an event if its execution time is in
  the past, and ON COMPLETION NOT PRESERVE is set, because such an event
  should be dropped by that time.  Also, do not allow ALTER EVENT to
  set execution time in the past when ON COMPLETION NOT PRESERVE is set.
sql/event_db_repository.h:
  Add enum member for new time zone column.
sql/event_queue.cc:
  Replace handling of broken down times with simple handling of
  my_time_t.
sql/event_queue.h:
  Store internal times in my_time_t (number of seconds since Epoch),
  rather than in broken down TIME structure.
sql/event_scheduler.cc:
  Add TODO comment.
sql/events.cc:
  Send time_zone column for SHOW CREATE EVENT.
sql/share/errmsg.txt:
  Update error message, and add two more errors.
sql/sql_show.cc:
  Add TIME_ZONE column to the output of SHOW EVENTS.
mysql-test/r/events_time_zone.result:
  BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/r/events_time_zone.result
mysql-test/t/events_time_zone.test:
  BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/t/events_time_zone.test
2007-03-16 17:31:07 +03:00
unknown
f7aa1930f4 Fix for bug #23775 "Replicated event larger that max_allowed_packet infinitely re-transmits".
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.
2007-03-16 17:25:20 +03:00
unknown
6d93f15039 Bug#27006: AFTER UPDATE triggers not fired with INSERT ... ON DUPLICATE KEY
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.
2007-03-16 17:23:26 +03:00
unknown
c259b5765c Merge kpdesk.mysql.com:/home/thek/dev/bug26807/my51-bug26807
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.1-runtime


sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
2007-03-16 15:03:43 +01:00
unknown
2b2fb67460 Bug#26807 "set global event_scheduler=1" and --skip-grant-tables crashes server
- Crash occured because Event engine is only initialized if
  ACLs are used but not properly marked as disabled.
- The patch is to mark the Event engine as DISABLED if no ACLs
  are used to avoid access of uninitialized variables.


mysql-test/r/skip_grants.result:
  Added test case
mysql-test/t/skip_grants.test:
  Added test case
2007-03-16 14:57:02 +01:00
unknown
8d1ab8b4b0 Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-03-16 14:29:18 +01:00
unknown
396f84aa82 Bug#26231 - select count(*) on myisam table returns wrong value
when index is used

When the table contained TEXT columns with empty contents
('', zero length, but not NULL) _and_ strings starting with
control characters like tabulator or newline, the empty values
were not found in a "records in range" estimate. Hence count(*)
missed these records.

The reason was a different set of search flags used for key
insert and key range estimation.

I decided to fix the set of flags used in range estimation.
Otherwise millions of databases around the world would require
a repair after an upgrade.

The consequence is that the manual must be fixed, which claims
that TEXT columns are compared with "end space padding". This
is true for CHAR/VARCHAR but wrong for TEXT. See also bug 21335.


myisam/mi_range.c:
  Bug#26231 - select count(*) on myisam table returns wrong value
              when index is used
  Added SEARCH_UPDATE to the search flags so that it compares
  like write/update/delete operations do. Only so it expects
  the keys at the place where they have been inserted.
myisam/mi_search.c:
  Bug#26231 - select count(*) on myisam table returns wrong value
              when index is used
  Added some comments to explain how _mi_get_binary_pack_key()
  works.
mysql-test/r/myisam.result:
  Bug#26231 - select count(*) on myisam table returns wrong value
              when index is used
  Added a test.
mysql-test/t/myisam.test:
  Bug#26231 - select count(*) on myisam table returns wrong value
              when index is used
  Added test result.
2007-03-16 10:28:48 +01:00
unknown
43b9ff1b21 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
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
2007-03-16 10:50:33 +02:00
unknown
2e8e78a42c Bug #26261:
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
2007-03-16 10:35:39 +02:00
unknown
a51b768600 Bug#26285 selecting information_schema crahes server
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
2007-03-16 12:15:51 +04:00
unknown
260e43e75d Correctly report load type.
Updated engine to also handle create options
Secondary indexes can now be generated (aka the test PeterZ thoughts!)


client/client_priv.h:
  Option for generating secondary indexes
client/mysqlslap.c:
  Option for generating secondary index operations. 
  Cleaned up memory allocation that was wasteful.
  Engine options are now possible
  Correctly report test type.
mysql-test/t/mysqlslap.test:
  Additional test for secondary indexes
sql/authors.h:
  Updated for Patrick
2007-03-15 23:39:07 -07:00