Projects
home:rottame:database
mariadb-connector-c
ead038d.patch
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ead038d.patch of Package mariadb-connector-c
From ead038dc8a2b3d7819f87af33e14f105325f8cf9 Mon Sep 17 00:00:00 2001 From: Georg Richter <georg@mariadb.com> Date: Thu, 3 Sep 2026 11:58:38 +0200 Subject: [PATCH] CONC-821: Avoid resetting length pointer for variable-length types in mysql_stmt_bind_result Prior fix for CONC-821 initialized the length pointer (*bind->length) to 0 during mysql_stmt_bind_result() for variable-length types (strings, blobs, etc.). This broke third-party drivers and applications (e.g. Perl DBD::MariaDB, Qt, and others) that perform a re-bind step after fetching data but prior to reading/copying the bind buffer, as re-binding zeroed out the fetched length prematurely. Fix this regression by leaving the length pointer untouched during result binding for non-fixed-sized types. --- libmariadb/mariadb_stmt.c | 10 ++-- unittest/libmariadb/ps_bugs.c | 106 ++++++++++++++++++++-------------- 2 files changed, 69 insertions(+), 47 deletions(-) Index: mariadb-connector-c-3.4.9-src/libmariadb/mariadb_stmt.c =================================================================== --- mariadb-connector-c-3.4.9-src.orig/libmariadb/mariadb_stmt.c +++ mariadb-connector-c-3.4.9-src/libmariadb/mariadb_stmt.c @@ -1442,7 +1442,9 @@ my_bool STDCALL mysql_stmt_bind_result(M { *stmt->bind[i].length= stmt->bind[i].length_value= mysql_ps_fetch_functions[stmt->bind[i].buffer_type].pack_len; } else { - *stmt->bind[i].length= stmt->bind[i].length_value= 0; + /* CONC-821: We don't initialize length for variable length types to avoid + problems with applications which rebind before storing/copying retrieved + values from bind buffer */ } /* set length values for numeric types */ Index: mariadb-connector-c-3.4.9-src/unittest/libmariadb/ps_bugs.c =================================================================== --- mariadb-connector-c-3.4.9-src.orig/unittest/libmariadb/ps_bugs.c +++ mariadb-connector-c-3.4.9-src/unittest/libmariadb/ps_bugs.c @@ -6035,7 +6035,7 @@ static int test_conc762(MYSQL *mysql) mysql_stmt_fetch(stmt); FAIL_IF(is_null[0]==0, "Expected NULL value"); FAIL_IF(is_null[1]==1, "Expected non-NULL value"); - FAIL_IF(length[0]!=0, "Expected length=0"); + FAIL_IF(length[0]!=1, "Expected length=1 (unchanged)"); FAIL_IF(length[1]!=3, "Expected length=3"); mysql_stmt_fetch(stmt); @@ -6063,7 +6063,8 @@ static int test_conc762(MYSQL *mysql) check_stmt_rc(rc, stmt); mysql_stmt_fetch(stmt); - FAIL_IF(length[0]!=0, "Expected length=0"); + FAIL_IF(length[0]==0, "Expected length>0 (untouched)"); + FAIL_IF(is_null[0]==0, "Expected null indicator"); mysql_stmt_close(stmt); return OK;
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.