Commit graph

44493 commits

Author SHA1 Message Date
unknown
3a222d57ad Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt


sql/item_cmpfunc.cc:
  Auto merged
2007-03-22 23:51:09 +04:00
unknown
45b556666f Merge mysql.com:/home/hf/work/mrg/mysql-4.1-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
2007-03-22 23:50:33 +04:00
unknown
1cc700a741 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt


sql/item_cmpfunc.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-03-22 23:49:44 +04:00
unknown
96793a9698 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt


sql/item_cmpfunc.cc:
  Auto merged
2007-03-22 23:48:39 +04:00
unknown
55f991c24d Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/home/hf/work/mrg/mysql-4.1-opt
2007-03-22 23:45:37 +04:00
unknown
9558c66c2e Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/26813-bug-5.0-opt-mysql
2007-03-22 22:15:21 +03:00
unknown
9b774e8f8d Bug#26813: The SUPER privilege is wrongly required to alter a view created by
another user.

When the DEFINER clause isn't specified in the ALTER statement then it's loaded
from the view definition. If the definer differs from the current user then
the error is thrown because only a super-user can set other users as a definers.

Now if the DEFINER clause is omitted in the ALTER VIEW statement then the
definer from the original view is used without check.


mysql-test/t/view_grant.test:
  Added a test case for the bug#27006: The SUPER privilege is wrongly required
  to alter a view created by another user.
mysql-test/r/view_grant.result:
  Added a test case for the bug#27006: The SUPER privilege is wrongly required
  to alter a view created by another user.
sql/sql_view.cc:
  Bug#26813: The SUPER privilege is wrongly required to alter a view created by
  another user.
  Now if the DEFINER clause is omitted in the ALTER VIEW statement then the
  definer from the original view is used without check.
2007-03-22 22:05:19 +03:00
unknown
0b7ba9c2dc Merge siva.hindu.god:/home/tsmith/m/bk/maint/50
into  siva.hindu.god:/home/tsmith/m/bk/maint/51


storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Auto merged
storage/ndb/test/ndbapi/testNodeRestart.cpp:
  Manual merge (res.waitNodesStartPhase -> NdbSleep_SecSleep)
2007-03-22 11:48:49 -06:00
unknown
dc41a5ce46 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26207-5.0-opt


sql/sql_select.h:
  Auto merged
2007-03-22 18:49:47 +02:00
unknown
0a48cd93b4 Bug #26207: When making the key image to use
in index search MySQL was not explicitly
 suppressing warnings. And if the context 
 happens to enable warnings (e.g. INSERT ..
 SELECT) the warnings resulting from converting 
 the data the key is compared to are 
 reported to the client.
 Fixed by suppressing warnings when converting
 the data to the same type as the key parts.


mysql-test/r/insert_select.result:
  Bug #26207: test case
mysql-test/t/insert_select.test:
  Bug #26207: test case
sql/sql_select.h:
  Bug #26207: supress warnings when converting
    data of the same type to key buffer format.
2007-03-22 18:44:16 +02:00
unknown
33da0f3736 Bug#24791: Union with AVG-groups generates wrong results
Patch appled after doing a pull from the team tree. Additional tests had to be
fixed


mysql-test/r/union.result:
  Bug 24791
  
  The tests for temporary tables have been fixed. Since the call to 
  display_length(Item) was removed from the constructor for Item_type_holder, items 
  in temporary tables keep the original values of the items, rather than the magic
  numbers supplied by display_length.
2007-03-22 14:58:43 +01:00
unknown
a9df90a793 Merge mhansson@bk-internal:/home/bk/mysql-5.0-opt
into  linux-st28.site:/home/martin/mysql/src/5.0o-bug24791


sql/item.cc:
  Auto merged
2007-03-22 13:37:27 +01:00
unknown
9875df86fa Merge willster.(none):/home/stewart/Documents/MySQL/5.1/ndb
into  willster.(none):/home/stewart/Documents/MySQL/5.1/ndb-work
2007-03-22 23:20:43 +11:00
unknown
95b334506c Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb


sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Auto merged
storage/ndb/test/ndbapi/testNodeRestart.cpp:
  Auto merged
2007-03-22 13:20:42 +01:00
unknown
350029d139 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2007-03-22 13:17:40 +01:00
unknown
9a25b5a83f BUG#27044 bug fix of 27320 fixes this, added test case 2007-03-22 13:17:08 +01:00
unknown
f857ede931 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb


sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
2007-03-22 12:55:32 +01:00
unknown
ac3b8a79ef Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb


sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
2007-03-22 12:55:08 +01:00
unknown
4ffad2d8aa Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-telco-gca


sql/ha_ndbcluster.h:
  Auto merged
sql/ha_ndbcluster.cc:
  manual merge
2007-03-22 12:47:20 +01:00
unknown
22f8f391af Bug #27320 ndb handler does not reset extra flags on reset()
- make sure all extra flags are reset
2007-03-22 12:42:13 +01:00
unknown
6d7a573b29 [PATCH] WL#3704 mgmapi timeouts: Fix error insert to NOT_STARTED nodes
Turns out I broke it.

Index: ndb-work/storage/ndb/src/mgmsrv/MgmtSrvr.cpp
===================================================================


storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  WL#3704 mgmapi timeouts: Fix error insert to NOT_STARTED nodes
2007-03-22 22:36:43 +11:00
unknown
38b044d49d [PATCH] WL#3704 mgmapi timeouts: Print full error from mgmd in NdbRestarter errors
Turns out they can be useful in working out what's going wrong.

Index: ndb-work/storage/ndb/test/src/NdbRestarter.cpp
===================================================================


storage/ndb/test/src/NdbRestarter.cpp:
  WL#3704 mgmapi timeouts: Print full error from mgmd in NdbRestarter errors
2007-03-22 22:36:31 +11:00
unknown
fd4862cf23 [PATCH] WL#3704 mgmapi timeouts: Fix infinite (0) timeout for ndb_logevent_get_next
Index: ndb-work/storage/ndb/src/mgmapi/ndb_logevent.cpp
===================================================================


storage/ndb/src/mgmapi/ndb_logevent.cpp:
  WL#3704 mgmapi timeouts: Fix infinite (0) timeout for ndb_logevent_get_next
2007-03-22 22:36:19 +11:00
unknown
7e00600a40 [PATCH] WL#3704 mgmapi timeouts: For mgm server, have timeout per operation, not for entire connection (i.e. fix the bug)
for TransporterRegistry, keep connection to management server alive.


Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================


storage/ndb/include/util/InputStream.hpp:
  WL#3704 mgmapi timeouts: For mgm server, have timeout per operation, not for entire connection (i.e. fix the bug)
storage/ndb/include/util/OutputStream.hpp:
  WL#3704 mgmapi timeouts: For mgm server, have timeout per operation, not for entire connection (i.e. fix the bug)
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
  WL#3704 mgmapi timeouts: For mgm server, have timeout per operation, not for entire connection (i.e. fix the bug)
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: For mgm server, have timeout per operation, not for entire connection (i.e. fix the bug)
2007-03-22 22:36:07 +11:00
unknown
c4dd23f74a [PATCH] WL#3704 mgmapi timeouts: Correct cpc client usage of Socket Input/OutputStream for timeouts
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================


storage/ndb/include/util/InputStream.hpp:
  WL#3704 mgmapi timeouts: Correct cpc client usage of Socket Input/OutputStream for timeouts
storage/ndb/test/include/CpcClient.hpp:
  WL#3704 mgmapi timeouts: Correct cpc client usage of Socket Input/OutputStream for timeouts
storage/ndb/test/src/CpcClient.cpp:
  WL#3704 mgmapi timeouts: Correct cpc client usage of Socket Input/OutputStream for timeouts
2007-03-22 22:35:55 +11:00
unknown
5c529b6675 [PATCH] WL#3704 mgmapi timeouts: Add MGMAPI tests to autotest daily run
Index: ndb-work/storage/ndb/test/run-test/daily-basic-tests.txt
===================================================================


storage/ndb/test/run-test/daily-basic-tests.txt:
  WL#3704 mgmapi timeouts: Add MGMAPI tests to autotest daily run
2007-03-22 22:35:43 +11:00
unknown
09bbc26507 [PATCH] WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
Default timout of 30secs for ConfigRetriever

Default timout of 5sec for use by Transporter (ports etc).

And Ndb_cluster_connection::set_timeout() api for setting timeout from
NDBAPI applications. Should be called before connect. e.g.

c.set_timeout(4200);
c.connect();

Index: ndb-work/storage/ndb/include/mgmcommon/ConfigRetriever.hpp
===================================================================


storage/ndb/include/mgmcommon/ConfigRetriever.hpp:
  WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
storage/ndb/include/ndbapi/ndb_cluster_connection.hpp:
  WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
  WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp:
  WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
2007-03-22 22:35:31 +11:00
unknown
a69b2aa7d4 [PATCH] WL#3704 mgmapi timeouts: use timeouts in mgm client
as side effect - turbo accellerator patch for ndb_mgm - sholud make it quicker... so that 4mhz cpu will seem even faster.

Index: ndb-work/storage/ndb/src/mgmclient/CommandInterpreter.cpp
===================================================================


storage/ndb/src/mgmclient/CommandInterpreter.cpp:
  WL#3704 mgmapi timeouts: use timeouts in mgm client
2007-03-22 22:35:19 +11:00
unknown
aa8b15b70b [PATCH] WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
use portable method, getting milliseconds between calls - Linux would
let us do funky stuff by getting the timeout from select(2). Everywhere
else sucks and doesn't let us do that :(

Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================


storage/ndb/include/util/InputStream.hpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/include/util/OutputStream.hpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/include/util/socket_io.h:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/InputStream.cpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/OutputStream.cpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/socket_io.cpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
2007-03-22 22:35:07 +11:00
unknown
c59722ad83 [PATCH] WL#3704 mgmapi timeouts: clarify multiple mgmd connect timeout semantics
Index: ndb-work/storage/ndb/include/mgmapi/mgmapi.h
===================================================================


storage/ndb/include/mgmapi/mgmapi.h:
  WL#3704 mgmapi timeouts: clarify multiple mgmd connect timeout semantics
storage/ndb/src/mgmapi/mgmapi.cpp:
  WL#3704 mgmapi timeouts: clarify multiple mgmd connect timeout semantics
2007-03-22 22:34:55 +11:00
unknown
e26da089a0 [PATCH] WL#3704 mgmapi timeouts: consolidate NdbMgmHandle timeouts into one
Only one timeout value is needed. Also saves 8bytes per NdbMgmHandle :)

Index: ndb-work/storage/ndb/include/mgmapi/mgmapi.h
===================================================================


storage/ndb/include/mgmapi/mgmapi.h:
  WL#3704 mgmapi timeouts: consolidate NdbMgmHandle timeouts into one
storage/ndb/src/mgmapi/mgmapi.cpp:
  WL#3704 mgmapi timeouts: consolidate NdbMgmHandle timeouts into one
2007-03-22 22:34:43 +11:00
unknown
1ff37f9143 [PATCH] WL#3704 mgmapi timeouts: Test for structured events timeouts (with err injection).
Index: ndb-work/storage/ndb/test/ndbapi/testMgm.cpp
===================================================================


storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: Test for structured events timeouts (with err injection).
2007-03-22 22:34:31 +11:00
unknown
7652e96fff [PATCH] WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
Index: ndb-work/storage/ndb/src/mgmsrv/MgmtSrvr.cpp
===================================================================


storage/ndb/src/mgmsrv/ERROR_codes.txt:
  WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
2007-03-22 22:34:19 +11:00
unknown
80220f7060 [PATCH] WL#3704 mgmapi timeouts: renumber mgmd err insert to not have duplicates.
Also add an ERROR_codes.txt file for mgmd

Index: ndb-work/storage/ndb/src/mgmsrv/ERROR_codes.txt
===================================================================


storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: renumber mgmd err insert to not have duplicates.
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: renumber mgmd err insert to not have duplicates.
storage/ndb/src/mgmsrv/ERROR_codes.txt:
  WL#3704 mgmapi timeouts: renumber mgmd err insert to not have duplicates.
2007-03-22 22:34:08 +11:00
unknown
446e5b36d7 [PATCH] WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
In ndb_mgm_call, add checks for expired timeout in (Input|Output)Stream.
In case of timeout, we set NdbMgmHandle->last_error and return NULL.

In api calls not using ndb_mgm_call (or using it in conjunction with
own IO), they'll need to check for timeouts manually. Macros are provided
to do this.

Add ndb_mgm_disconnect_quiet(h) to disconnect without checking errors
(so we don't clobber NdbMgmHandle->last_error). This helps us provide
the *consistent* semantic that on timeout we leave the NdbMgmHandle
*disconnected*. We check for this in testMgm.

Change CHECK_REPLY in mgmapi to also check for set error in handle->last_error
This will pick up the ETIMEDOUT errors and return them to client (through
returning correct failure code for API call and setting NdbMgmHandle error).
Applications written to MGMAPI before this patch will behave as before,
and even hopefully check get_last_error and report the error back to the
end user!

Adding the last CHECK_TIMEDOUT_RET and delete in ndb_mgm_call() we
slightly change behaviour of mgmapi. Previously, if disconnect
midway through a reply, where there were only optional parameters left,
we'd get a Properties object from ndb_mgm_call() containing NULLs for
the optional parameters, leading to interesting error messages. This
enables the returning of the *real* message and actually improves the API
without breaking compatibility.

ndb_mgm_start_signallog
ndb_mgm_stop_signallog
ndb_mgm_log_signals
ndb_mgm_set_trace
ndb_mgm_insert_error
ndb_mgm_set_int64_parameter [1]
ndb_mgm_set_string_parameter [1]
ndb_mgm_purge_stale_sessions [2]
 - return error code on error during ndb_mgm_call

TODO:
ndb_mgm_report_event [2]

[1] marked for removal, unused.
[2] return codes incorrect in CHECK_HANDLE/CONNECTED. undocumented.


Server side:
 in Services (per session) add macro for injecting timeout error
 (just waiting 10 seconds before continuing... it does work!)

 We inject these errors in a number of critical places - including
 the tricky api functions that don't just use ndb_mgm_call but do
 their own thing (get_config, get_status and friends)

ATRT:
 Expand testMgm to add timout tests for API. Fully automated.
 *THEORETICALLY* timing dependent - an ultra-slow network will
 cause problems and "fake" failures... I welcome other solutions.

 Tests aren't exhaustive, but cover the generics and the tricky bits.
 Also test some calling semantics (incl disconnected on error).

 It is encouraged to add *more* mgmapi tests, not less :)

InputStream:
  Fix where timedout error is set


Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp
===================================================================


storage/ndb/src/common/util/InputStream.cpp:
  WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
storage/ndb/src/mgmapi/mgmapi.cpp:
  WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
storage/ndb/src/mgmapi/mgmapi_internal.h:
  WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: Return sane errors for timeout in mgmapi
2007-03-22 22:33:56 +11:00
unknown
8293b317d1 [PATCH] WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================


storage/ndb/include/util/InputStream.hpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
storage/ndb/include/util/OutputStream.hpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
storage/ndb/src/common/util/InputStream.cpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
storage/ndb/src/common/util/OutputStream.cpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
2007-03-22 22:33:43 +11:00
unknown
45f698c551 [PATCH] WL#3704 mgmapi timeouts: Rename inputstream timeout
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================


storage/ndb/include/util/InputStream.hpp:
  WL#3704 mgmapi timeouts: Rename inputstream timeout
storage/ndb/src/common/util/InputStream.cpp:
  WL#3704 mgmapi timeouts: Rename inputstream timeout
2007-03-22 22:33:31 +11:00
unknown
ef41a27c9b [PATCH] WL#3704 mgmapi timeouts: add ndb_mgm_set_timeout(h,ms)
Add not so neat set_timeout call to make testMgm work

Index: ndb-work/storage/ndb/include/mgmapi/mgmapi.h
===================================================================


storage/ndb/include/mgmapi/mgmapi.h:
  WL#3704 mgmapi timeouts: add ndb_mgm_set_timeout(h,ms)
storage/ndb/src/mgmapi/mgmapi.cpp:
  WL#3704 mgmapi timeouts: add ndb_mgm_set_timeout(h,ms)
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: add ndb_mgm_set_timeout(h,ms)
2007-03-22 22:33:19 +11:00
unknown
b3dd80dd59 [PATCH] WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
Add error injection either for this connection or for whole server.

Currently nothing for injecting errors into *another* connection... but that's
perhaps getting tricky-dicky for this point in time. Perhaps needed for events
if we don't do anything fancy.

Index: ndb-work/storage/ndb/src/mgmsrv/MgmtSrvr.cpp
===================================================================


storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
  WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
storage/ndb/src/mgmsrv/Services.cpp:
  WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
storage/ndb/src/mgmsrv/Services.hpp:
  WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
storage/ndb/test/ndbapi/testMgm.cpp:
  WL#3704 mgmapi timeouts: Add ndb_mgmd error injection
2007-03-22 22:33:07 +11:00
unknown
9f10e20f3f [PATCH] WL#3704 mgmapi timeouts: use NdbMgmHandle write_timeout
Start using the write_timeout we already have in NdbMgmHandle

Index: ndb-work/storage/ndb/src/mgmapi/mgmapi.cpp
===================================================================


storage/ndb/src/mgmapi/mgmapi.cpp:
  WL#3704 mgmapi timeouts: use NdbMgmHandle write_timeout
2007-03-22 22:32:54 +11:00
unknown
bdb9b4483e Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb
2007-03-22 11:26:18 +01:00
unknown
39e7b56050 Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb


ndb/test/ndbapi/testNodeRestart.cpp:
  Auto merged
2007-03-22 11:25:29 +01:00
unknown
582b0ba867 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb


storage/ndb/test/ndbapi/testNodeRestart.cpp:
  Auto merged
2007-03-22 11:23:47 +01:00
unknown
5118e111f5 Merge perch.ndb.mysql.com:/home/jonas/src/51-telco-gca
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb


storage/ndb/test/ndbapi/testNodeRestart.cpp:
  Auto merged
2007-03-22 11:21:26 +01:00
unknown
ec2639f4ec ndb -
fix testprg


storage/ndb/test/ndbapi/testNodeRestart.cpp:
  fix testprg
2007-03-22 11:20:38 +01:00
unknown
c2bb8446bc ndb - fix test prg 2007-03-22 11:17:57 +01:00
unknown
f9771a0ab3 Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into  perch.ndb.mysql.com:/home/jonas/src/51-telco-gca
2007-03-22 11:13:21 +01:00
unknown
4dee1e6a97 ndb -
fix test prg


ndb/test/ndbapi/testNodeRestart.cpp:
  fix test prg
2007-03-22 11:12:18 +01:00
unknown
5b86ad19da Merge mhansson@bk-internal:/home/bk/mysql-5.0-opt
into  linux-st28.site:/home/martin/mysql/src/5.0o-bug24791


sql/field.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
2007-03-22 10:58:16 +01:00
unknown
aa32336198 Bug #24791: Union with AVG-groups generates wrong results
The problem in this bug is when we create temporary tables. When
temporary tables are created for unions, there is some 
inferrence being carried out regarding the type of the column.
Whenever this column type is inferred to be REAL (i.e. FLOAT or
DOUBLE), MySQL will always try to maintain exact precision, and
if that is not possible (there are hardware limits, since FLOAT
and DOUBLE are stored as approximate values) will switch to
using approximate values. The problem here is that at this point
the information about number of significant digits is not 
available. Furthermore, the number of significant digits should
be increased for the AVG function, however, this was not properly 
handled. There are 4 parts to the problem:

#1: DOUBLE and FLOAT fields don't display their proper display 
lengths in max_display_length(). This is hard-coded as 53 for 
DOUBLE and 24 for FLOAT. Now changed to instead return the 
field_length.

#2: Type holders for temporary tables do not preserve the 
max_length of the Item's from which they are created, and is 
instead reverted to the 53 and 24 from above. This causes 
*all* fields to get non-fixed significant digits.

#3: AVG function does not update max_length (display length)
when updating number of decimals.

#4: The function that switches to non-fixed number of 
significant digits should use DBL_DIG + 2 or FLT_DIG + 2 as 
cut-off values (Since fixed precision does not use the 'e' 
notation)

Of these points, #1 is the controversial one, but this 
change is preferred and has been cleared with Monty. The 
function causes quite a few unit tests to blow up and they had
to b changed, but each one is annotated and motivated. We 
frequently see the magical 53 and 24 give way to more relevant
numbers.


mysql-test/r/create.result:
  bug#24791
  
  changed test result
  
  With the changes made for FLOAT and DOUBLE, the original display
  lengths are now preserved.
mysql-test/r/temp_table.result:
  bug#24791
  
  changed test resullt
  
  Test case added
mysql-test/r/type_float.result:
  bug#24791
  
  changed test result
  
  delta 1: field was originally declared as DOUBLE with no display
  length, so the hardware maximum is chosen rather than 53.
  
  delta 2: fields exceed the maximum precision and thus switch to
  non-fixed significant digits
  
  delta 3: Same as above, number of decmals and significant digits
  was not specified when t3 was created.
mysql-test/t/temp_table.test:
  bug#24791
  
  Test case
sql/field.h:
  bug#24791
  
  The method max_display_length is reimplemented as
  
  uint32 max_display_length() { return field_length; }
  
  in Field_double and Field_float. Since all subclasses of 
  Field_real now have the same implementation of this method, the
  implementation has been moved up the hierarchy to Field_real.
sql/item.cc:
  bug#24791
  
  We switch to a non-fixed number of significant digits
  (by setting decimals=NOT_FIXED_DECIMAL) if the calculated 
  display length is greater than the display length of a value 
  with the maximum precision. These values differ for double and 
  float, obviously.
sql/item_sum.cc:
  bug#24791
  
  We must increase the display length accordinly whenever we 
  change number of decimal places.
2007-03-22 10:56:47 +01:00