Manual merge from mysql-5.1-bugteam into mysql-5.5-bugteam.
conflicts: conflict dbug/dbug.c conflict sql/sql_load.cc
This commit is contained in:
commit
49e715258f
@ -496,6 +496,7 @@ int DbugParse(CODE_STATE *cs, const char *control)
|
||||
rel= control[0] == '+' || control[0] == '-';
|
||||
if ((!rel || (!stack->out_file && !stack->next)))
|
||||
{
|
||||
/* Free memory associated with the state before resetting its members */
|
||||
FreeState(cs, stack, 0);
|
||||
stack->flags= 0;
|
||||
stack->delay= 0;
|
||||
@ -1608,7 +1609,7 @@ static void PushState(CODE_STATE *cs)
|
||||
struct settings *new_malloc;
|
||||
|
||||
new_malloc= (struct settings *) DbugMalloc(sizeof(struct settings));
|
||||
bzero(new_malloc, sizeof(*new_malloc));
|
||||
bzero(new_malloc, sizeof(struct settings));
|
||||
new_malloc->next= cs->stack;
|
||||
cs->stack= new_malloc;
|
||||
}
|
||||
@ -2088,7 +2089,7 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
|
||||
|
||||
static void DBUGCloseFile(CODE_STATE *cs, FILE *fp)
|
||||
{
|
||||
if (fp && fp != stderr && fp != stdout && fclose(fp) == EOF)
|
||||
if (fp != NULL && fp != stderr && fp != stdout && fclose(fp) == EOF)
|
||||
{
|
||||
pthread_mutex_lock(&THR_LOCK_dbug);
|
||||
(void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
|
||||
|
@ -1196,4 +1196,14 @@ PARTITION p VALUES LESS THAN (1219089600),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
DROP TABLE old;
|
||||
#
|
||||
# Bug #56709: Memory leaks at running the 5.1 test suite
|
||||
#
|
||||
CREATE TABLE t1 (a TIMESTAMP NOT NULL PRIMARY KEY);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
|
||||
PARTITION p VALUES LESS THAN (18),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -31,6 +31,19 @@ SELECT @@global.debug;
|
||||
@@global.debug
|
||||
|
||||
SET GLOBAL debug=@old_debug;
|
||||
#
|
||||
# Bug #56709: Memory leaks at running the 5.1 test suite
|
||||
#
|
||||
SET @old_local_debug = @@debug;
|
||||
SET @@debug='d,foo';
|
||||
SELECT @@debug;
|
||||
@@debug
|
||||
d,foo
|
||||
SET @@debug='';
|
||||
SELECT @@debug;
|
||||
@@debug
|
||||
|
||||
SET @@debug = @old_local_debug;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#46165 server crash in dbug
|
||||
|
@ -1381,4 +1381,18 @@ PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
|
||||
DROP TABLE old;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #56709: Memory leaks at running the 5.1 test suite
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a TIMESTAMP NOT NULL PRIMARY KEY);
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
ALTER TABLE t1
|
||||
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
|
||||
PARTITION p VALUES LESS THAN (18),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -35,6 +35,19 @@ SELECT @@global.debug;
|
||||
|
||||
SET GLOBAL debug=@old_debug;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #56709: Memory leaks at running the 5.1 test suite
|
||||
--echo #
|
||||
|
||||
SET @old_local_debug = @@debug;
|
||||
|
||||
SET @@debug='d,foo';
|
||||
SELECT @@debug;
|
||||
SET @@debug='';
|
||||
SELECT @@debug;
|
||||
|
||||
SET @@debug = @old_local_debug;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
|
@ -2338,8 +2338,6 @@ void Item_extract::print(String *str, enum_query_type query_type)
|
||||
|
||||
void Item_extract::fix_length_and_dec()
|
||||
{
|
||||
value.alloc(32); // alloc buffer
|
||||
|
||||
maybe_null=1; // If wrong date
|
||||
switch (int_type) {
|
||||
case INTERVAL_YEAR: max_length=4; date_value=1; break;
|
||||
@ -2382,6 +2380,8 @@ longlong Item_extract::val_int()
|
||||
}
|
||||
else
|
||||
{
|
||||
char buf[40];
|
||||
String value(buf, sizeof(buf), &my_charset_bin);;
|
||||
String *res= args[0]->val_str(&value);
|
||||
if (!res ||
|
||||
str_to_time_with_warn(res->charset(), res->ptr(), res->length(),
|
||||
|
@ -733,7 +733,6 @@ public:
|
||||
|
||||
class Item_extract :public Item_int_func
|
||||
{
|
||||
String value;
|
||||
bool date_value;
|
||||
public:
|
||||
const interval_type int_type; // keep it public
|
||||
|
@ -1345,6 +1345,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
|
||||
MYF(MY_WME)))
|
||||
{
|
||||
my_free(buffer); /* purecov: inspected */
|
||||
buffer= NULL;
|
||||
error=1;
|
||||
}
|
||||
else
|
||||
@ -1371,13 +1372,11 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
|
||||
|
||||
READ_INFO::~READ_INFO()
|
||||
{
|
||||
if (!error)
|
||||
{
|
||||
if (need_end_io_cache)
|
||||
::end_io_cache(&cache);
|
||||
if (!error && need_end_io_cache)
|
||||
::end_io_cache(&cache);
|
||||
|
||||
if (buffer != NULL)
|
||||
my_free(buffer);
|
||||
error=1;
|
||||
}
|
||||
List_iterator<XML_TAG> xmlit(taglist);
|
||||
XML_TAG *t;
|
||||
while ((t= xmlit++))
|
||||
|
Loading…
x
Reference in New Issue
Block a user