Commit graph

44536 commits

Author SHA1 Message Date
stewart@mysql.com[stewart]
2d11a87978 [PATCH] WL#3704 mgmapi timeouts: Add MGMAPI tests to autotest daily run
Index: ndb-work/storage/ndb/test/run-test/daily-basic-tests.txt
===================================================================
2007-03-22 22:35:43 +11:00
stewart@mysql.com[stewart]
acb61e810c [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
===================================================================
2007-03-22 22:35:31 +11:00
stewart@mysql.com[stewart]
420e9ed86e [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
===================================================================
2007-03-22 22:35:19 +11:00
stewart@mysql.com[stewart]
c537c27796 [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
===================================================================
2007-03-22 22:35:07 +11:00
stewart@mysql.com[stewart]
298719def2 [PATCH] WL#3704 mgmapi timeouts: clarify multiple mgmd connect timeout semantics
Index: ndb-work/storage/ndb/include/mgmapi/mgmapi.h
===================================================================
2007-03-22 22:34:55 +11:00
stewart@mysql.com[stewart]
e77a4480ab [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
===================================================================
2007-03-22 22:34:43 +11:00
stewart@mysql.com[stewart]
450d89651c [PATCH] WL#3704 mgmapi timeouts: Test for structured events timeouts (with err injection).
Index: ndb-work/storage/ndb/test/ndbapi/testMgm.cpp
===================================================================
2007-03-22 22:34:31 +11:00
stewart@mysql.com[stewart]
6ce049dcb6 [PATCH] WL#3704 mgmapi timeouts: manipulate some things to get infrastructure for event timeouts
Index: ndb-work/storage/ndb/src/mgmsrv/MgmtSrvr.cpp
===================================================================
2007-03-22 22:34:19 +11:00
stewart@mysql.com[stewart]
398d97aae0 [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
===================================================================
2007-03-22 22:34:08 +11:00
stewart@mysql.com[stewart]
e8121e50e8 [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
===================================================================
2007-03-22 22:33:56 +11:00
stewart@mysql.com[stewart]
64361ee36f [PATCH] WL#3704 mgmapi timeouts: Add bool timeout flag to Streams
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================
2007-03-22 22:33:43 +11:00
stewart@mysql.com[stewart]
c2f0a25dc4 [PATCH] WL#3704 mgmapi timeouts: Rename inputstream timeout
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================
2007-03-22 22:33:31 +11:00
stewart@mysql.com[stewart]
36888199ac [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
===================================================================
2007-03-22 22:33:19 +11:00
stewart@mysql.com[stewart]
395a24409d [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
===================================================================
2007-03-22 22:33:07 +11:00
stewart@mysql.com[stewart]
272779e71e [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
===================================================================
2007-03-22 22:32:54 +11:00
kent@kent-amd64.(none)
ccc97686f0 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.1-build
2007-03-22 11:43:50 +01:00
jonas@perch.ndb.mysql.com
d645496ec5 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
jonas@perch.ndb.mysql.com
ca05bbf9d0 Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-ndb
2007-03-22 11:25:29 +01:00
jonas@perch.ndb.mysql.com
05a8790f0b 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
2007-03-22 11:23:47 +01:00
jonas@perch.ndb.mysql.com
4a1c8d296b Merge perch.ndb.mysql.com:/home/jonas/src/51-telco-gca
into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb
2007-03-22 11:21:26 +01:00
jonas@perch.ndb.mysql.com
155e3d1139 ndb -
fix testprg
2007-03-22 11:20:38 +01:00
jonas@perch.ndb.mysql.com
0e1974d2bf ndb - fix test prg 2007-03-22 11:17:57 +01:00
jonas@perch.ndb.mysql.com
b402e1240c 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
jonas@perch.ndb.mysql.com
702b5dad63 ndb -
fix test prg
2007-03-22 11:12:18 +01:00
mhansson/martin@linux-st28.site
749976ee5e Merge mhansson@bk-internal:/home/bk/mysql-5.0-opt
into  linux-st28.site:/home/martin/mysql/src/5.0o-bug24791
2007-03-22 10:58:16 +01:00
mhansson/martin@linux-st28.site
50077b6db9 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.
2007-03-22 10:56:47 +01:00
tomas@whalegate.ndb.mysql.com
47834f3933 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2007-03-22 10:36:26 +01:00
tomas@whalegate.ndb.mysql.com
8b964c2b12 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-03-22 10:34:46 +01:00
tomas@whalegate.ndb.mysql.com
753bc96eca Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2007-03-22 10:33:26 +01:00
holyfoot/hf@hfmain.(none)
08ff9d7132 Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:45:42 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
a016f71c45 bug #16546 (DATETIME+0 not always coerced the same way)
fix for cast( AS DATETIME)+0 in 5.0 and above versions.
  val_real now works using val_decimal for DATETIME Items
  Superfluous val_real() methods deleted
2007-03-22 12:44:38 +04:00
holyfoot/hf@hfmain.(none)
655d2a6bcc Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:28:21 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
da5769fe6a 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 12:26:32 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
e0f0507f99 bug #16546 (DATETIME + 0 not always coerced in the same way)
fix for cast( AS DATETIME) + 0 operation.
  I just implemented Item_datetime_typecast::val() method
  as it is usually done in other classes.
  Should be fixed more radically in 5.0
2007-03-22 12:24:56 +04:00
holyfoot/hf@hfmain.(none)
2864f7aa24 Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:22:17 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
1f9fd51c6d Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
2007-03-22 12:21:06 +04:00
holyfoot/hf@hfmain.(none)
59bcb87766 Merge bk@192.168.21.1:mysql-5.1
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:20:51 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
36e11d049e merging 2007-03-22 12:19:41 +04:00
holyfoot/hf@hfmain.(none)
4a01582faa Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:03:13 +04:00
holyfoot/hf@hfmain.(none)
2204ef2a14 Merge mysql.com:/home/hf/work/25492/my51-25492
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 12:02:43 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
e7040f3691 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 12:02:04 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
74b6ad7c7e Merge mysql.com:/home/hf/work/25492/my50-25492
into  mysql.com:/home/hf/work/mrg/mysql-5.0-opt
2007-03-22 12:01:40 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
55d9c2dd07 Merge mysql.com:/home/hf/work/25492/my41-25492
into  mysql.com:/home/hf/work/mrg/mysql-4.1-opt
2007-03-22 12:01:05 +04:00
holyfoot/hf@hfmain.(none)
06f4cd938c Merge mysql.com:/home/hf/work/25492/my50-25492
into  mysql.com:/home/hf/work/25492/my51-25492
2007-03-22 12:00:41 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
f602c08da8 Merge mysql.com:/home/hf/work/25492/my41-25492
into  mysql.com:/home/hf/work/25492/my50-25492
2007-03-22 11:59:45 +04:00
holyfoot/hf@hfmain.(none)
ecbf43a3f1 Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 11:50:24 +04:00
holyfoot/hf@hfmain.(none)
d24fb40374 Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt
into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt
2007-03-22 11:43:23 +04:00
igor@olga.mysql.com
03ae298ec3 Fixed bug #27362: crash at evaluation of IN predicate when one
of its argument happened to be a decimal expression returning
the NULL value.
The crash was due to the fact the function in_decimal::set did
not take into account that val_decimal() could return 0 if 
the decimal expression had been evaluated to NULL.
2007-03-22 00:05:36 -07:00
pekka@clam.(none)
2082a9e35b Merge clam.ndb.mysql.com:/export/space/pekka/ndb/version/my50-bug24028
into  clam.ndb.mysql.com:/export/space/pekka/ndb/version/my51-bug24028
2007-03-22 07:40:04 +01:00
tomas@whalegate.ndb.mysql.com
6e7528bd34 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2007-03-22 05:45:17 +01:00