mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge 5.1 => 5.5
This commit is contained in:
@ -21,6 +21,15 @@ typedef enum
|
||||
decimal_round_mode;
|
||||
typedef int32 decimal_digit_t;
|
||||
|
||||
/**
|
||||
intg is the number of *decimal* digits (NOT number of decimal_digit_t's !)
|
||||
before the point
|
||||
frac is the number of decimal digits after the point
|
||||
len is the length of buf (length of allocated space) in decimal_digit_t's,
|
||||
not in bytes
|
||||
sign false means positive, true means negative
|
||||
buf is an array of decimal_digit_t's
|
||||
*/
|
||||
typedef struct st_decimal_t {
|
||||
int intg, frac, len;
|
||||
my_bool sign;
|
||||
|
@ -1934,3 +1934,14 @@ f1
|
||||
0.000000000000000000000000
|
||||
DROP TABLE IF EXISTS t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# BUG#12911710 - VALGRIND FAILURE IN
|
||||
# ROW-DEBUG:PERFSCHEMA.SOCKET_SUMMARY_BY_INSTANCE_FUNC
|
||||
#
|
||||
CREATE TABLE t1(d1 DECIMAL(60,0) NOT NULL,
|
||||
d2 DECIMAL(60,0) NOT NULL);
|
||||
INSERT INTO t1 (d1, d2) VALUES(0.0, 0.0);
|
||||
SELECT d1 * d2 FROM t1;
|
||||
d1 * d2
|
||||
0
|
||||
DROP TABLE t1;
|
||||
|
@ -1535,3 +1535,17 @@ DROP TABLE IF EXISTS t1;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # BUG#12911710 - VALGRIND FAILURE IN
|
||||
--echo # ROW-DEBUG:PERFSCHEMA.SOCKET_SUMMARY_BY_INSTANCE_FUNC
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(d1 DECIMAL(60,0) NOT NULL,
|
||||
d2 DECIMAL(60,0) NOT NULL);
|
||||
|
||||
INSERT INTO t1 (d1, d2) VALUES(0.0, 0.0);
|
||||
SELECT d1 * d2 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -124,12 +124,8 @@ public:
|
||||
{
|
||||
len= DECIMAL_BUFF_LENGTH;
|
||||
buf= buffer;
|
||||
#if !defined (HAVE_purify) && !defined(DBUG_OFF)
|
||||
/* Set buffer to 'random' value to find wrong buffer usage */
|
||||
for (uint i= 0; i < DECIMAL_BUFF_LENGTH; i++)
|
||||
buffer[i]= i;
|
||||
#endif
|
||||
}
|
||||
|
||||
my_decimal()
|
||||
{
|
||||
init();
|
||||
|
@ -1403,11 +1403,18 @@ int bin2decimal(const uchar *from, decimal_t *to, int precision, int scale)
|
||||
buf++;
|
||||
}
|
||||
my_afree(d_copy);
|
||||
|
||||
/*
|
||||
No digits? We have read the number zero, of unspecified precision.
|
||||
Make it a proper zero, with non-zero precision.
|
||||
*/
|
||||
if (to->intg == 0 && to->frac == 0)
|
||||
decimal_make_zero(to);
|
||||
return error;
|
||||
|
||||
err:
|
||||
my_afree(d_copy);
|
||||
decimal_make_zero(((decimal_t*) to));
|
||||
decimal_make_zero(to);
|
||||
return(E_DEC_BAD_NUM);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user