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;
|
decimal_round_mode;
|
||||||
typedef int32 decimal_digit_t;
|
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 {
|
typedef struct st_decimal_t {
|
||||||
int intg, frac, len;
|
int intg, frac, len;
|
||||||
my_bool sign;
|
my_bool sign;
|
||||||
|
@ -1934,3 +1934,14 @@ f1
|
|||||||
0.000000000000000000000000
|
0.000000000000000000000000
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
End of 5.1 tests
|
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 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;
|
len= DECIMAL_BUFF_LENGTH;
|
||||||
buf= buffer;
|
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()
|
my_decimal()
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
@ -1403,11 +1403,18 @@ int bin2decimal(const uchar *from, decimal_t *to, int precision, int scale)
|
|||||||
buf++;
|
buf++;
|
||||||
}
|
}
|
||||||
my_afree(d_copy);
|
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;
|
return error;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
my_afree(d_copy);
|
my_afree(d_copy);
|
||||||
decimal_make_zero(((decimal_t*) to));
|
decimal_make_zero(to);
|
||||||
return(E_DEC_BAD_NUM);
|
return(E_DEC_BAD_NUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user