mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge of mysql-5.1-bugteam into mysql-trunk-merge.
This commit is contained in:
@ -791,6 +791,19 @@ static void setup_one_conversion_function(THD *thd, Item_param *param,
|
||||
}
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
||||
/**
|
||||
Check whether this parameter data type is compatible with long data.
|
||||
Used to detect whether a long data stream has been supplied to a
|
||||
incompatible data type.
|
||||
*/
|
||||
inline bool is_param_long_data_type(Item_param *param)
|
||||
{
|
||||
return ((param->param_type >= MYSQL_TYPE_TINY_BLOB) &&
|
||||
(param->param_type <= MYSQL_TYPE_STRING));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Routines to assign parameters from data supplied by the client.
|
||||
|
||||
@ -860,6 +873,14 @@ static bool insert_params_with_log(Prepared_statement *stmt, uchar *null_array,
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
/*
|
||||
A long data stream was supplied for this parameter marker.
|
||||
This was done after prepare, prior to providing a placeholder
|
||||
type (the types are supplied at execute). Check that the
|
||||
supplied type of placeholder can accept a data stream.
|
||||
*/
|
||||
else if (!is_param_long_data_type(param))
|
||||
DBUG_RETURN(1);
|
||||
res= param->query_val_str(&str);
|
||||
if (param->convert_str_value(thd))
|
||||
DBUG_RETURN(1); /* out of memory */
|
||||
@ -898,6 +919,14 @@ static bool insert_params(Prepared_statement *stmt, uchar *null_array,
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
/*
|
||||
A long data stream was supplied for this parameter marker.
|
||||
This was done after prepare, prior to providing a placeholder
|
||||
type (the types are supplied at execute). Check that the
|
||||
supplied type of placeholder can accept a data stream.
|
||||
*/
|
||||
else if (is_param_long_data_type(param))
|
||||
DBUG_RETURN(1);
|
||||
if (param->convert_str_value(stmt->thd))
|
||||
DBUG_RETURN(1); /* out of memory */
|
||||
}
|
||||
|
Reference in New Issue
Block a user