[CONC-407] mysql_stmt_fetch: required buffer for zerofil integer is 1 more than reported length Created: 2019-03-05  Updated: 2021-05-05

Status: Open
Project: MariaDB Connector/C
Component/s: None
Affects Version/s: 3.0.9
Fix Version/s: 3.1

Type: Bug Priority: Major
Reporter: Daniël van Eeden Assignee: Georg Richter
Resolution: Unresolved Votes: 0
Labels: None

Attachments: File mariadb103_prepare_zerofil.c     File test.sh    
Issue Links:
Relates
relates to MDEV-18143 mysql_stmt_fetch return code is wrong... Closed

 Description   

mysql_fetch_fields() says a "smallint(5) unsigned zerofill" has a (max)length of 5.

However If I use mysql_stmt_fetch() with a MYSQL_BIND with buffer_length of 5 I get return code 101 (MYSQL_DATA_TRUNCATED).

With a buffer of 6 it works fine.

With 10.3.11 a buffer of 5 was working fine.

Related: https://github.com/perl5-dbi/DBD-mysql/issues/304



 Comments   
Comment by Daniël van Eeden [ 2019-03-05 ]

Output of attached testcase:

Client compile version: 100311
Client runtime version: 10.3.11
Server version: 100311
Field 0 length: 5
Field 0 max_length: 5
Result: 00001
 
Buffer length: 1
mysql_stmt_fetch result: 0
Result: 1�/E (prepared statement)
 
Buffer length: 2
mysql_stmt_fetch result: 101
Result: 00/E (prepared statement)
 
Buffer length: 3
mysql_stmt_fetch result: 101
Result: 000E (prepared statement)
 
Buffer length: 4
mysql_stmt_fetch result: 101
Result: 0000 (prepared statement)
 
Buffer length: 5
mysql_stmt_fetch result: 0
Result: 00001 (prepared statement)
 
Buffer length: 6
mysql_stmt_fetch result: 0
Result: 00001 (prepared statement)
Client compile version: 100313
Client runtime version: 10.3.13
Server version: 100313
Field 0 length: 5
Field 0 max_length: 5
Result: 00001
 
Buffer length: 1
mysql_stmt_fetch result: 101
Result: 1 (prepared statement)
 
Buffer length: 2
mysql_stmt_fetch result: 101
Result: 1 (prepared statement)
 
Buffer length: 3
mysql_stmt_fetch result: 101
Result: 1 (prepared statement)
 
Buffer length: 4
mysql_stmt_fetch result: 101
Result: 1 (prepared statement)
 
Buffer length: 5
mysql_stmt_fetch result: 101
Result: 1 (prepared statement)
 
Buffer length: 6
mysql_stmt_fetch result: 0
Result: 00001 (prepared statement)

Generated at Thu Feb 08 03:05:06 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.