I would like to head word or two from apr-lib mantainers about this patch. Thanks.
On Fri, Oct 2, 2009 at 10:51 AM, Kevac Marko <[email protected]> wrote: > https://issues.apache.org/bugzilla/show_bug.cgi?id=47932 > > On Thu, Oct 1, 2009 at 2:20 PM, Kevac Marko <[email protected]> wrote: >> Without this attribute set, max_length field is not filled for >> prepared statements. >> >> This is from http://dev.mysql.com/doc/refman/5.0/en/c-api-datatypes.html : >> >> If you are using prepared statements, max_length is not set by default >> because for the binary protocol the lengths of the values depend on >> the types of the values in the result set. (See Section 20.9.5, “C API >> Prepared Statement Data types”.) If you want the max_length values >> anyway, enable the STMT_ATTR_UPDATE_MAX_LENGTH option with >> mysql_stmt_attr_set() and the lengths will be set when you call >> mysql_stmt_store_result(). (See Section 20.9.7.3, >> “mysql_stmt_attr_set()”, and Section 20.9.7.27, >> “mysql_stmt_store_result()”.) >> >> diff --git a/dbd/apr_dbd_mysql.c b/dbd/apr_dbd_mysql.c >> index 01afed2..0d206ac 100644 >> --- a/dbd/apr_dbd_mysql.c >> +++ b/dbd/apr_dbd_mysql.c >> @@ -581,8 +581,14 @@ static int dbd_mysql_prepare(apr_pool_t *pool, >> apr_dbd_t *sql, >> (*statement)->stmt = mysql_stmt_init(sql->conn); >> >> if ((*statement)->stmt) { >> + my_bool update_max_length = 1; >> + >> apr_pool_cleanup_register(pool, (*statement)->stmt, >> stmt_close, apr_pool_cleanup_null); >> + >> + mysql_stmt_attr_set((*statement)->stmt, STMT_ATTR_UPDATE_MAX_LENGTH, >> + &update_max_length); >> + >> ret = mysql_stmt_prepare((*statement)->stmt, query, strlen(query)); >> >> if (ret != 0) { >> >> >> -- >> Marko Kevac >> Sent from Moscow, Mow, Russia >> > > > > -- > Marko Kevac > Sent from Moscow, Mow, Russia > -- Marko Kevac Sent from Moscow, Mow, Russia
