[CONC-176] missing leading zeros (zerofill) when fetching from numeric value into string Created: 2016-05-11  Updated: 2016-05-11

Status: Open
Project: MariaDB Connector/C
Component/s: None
Affects Version/s: 3.0.0, 2.2.0
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Georg Richter Assignee: Georg Richter
Resolution: Unresolved Votes: 0
Labels: None
Environment:

All platforms



 Description   

When using binary protocol (prepared statements) numeric values with zerofill flag will not be converted correctly.

How to repeat

static int test_zerofill(MYSQL *mysql)
{
  MYSQL_STMT *stmt;
  MYSQL_BIND bind;
  char buffer[9];
 
  int rc;
 
  rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql, "CREATE TABLE t1 (a int(8) zerofill)");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1)");
  check_mysql_rc(rc, mysql);
 
  stmt= mysql_stmt_init(mysql);
  rc= mysql_stmt_prepare(stmt, "SELECT a FROM t1", -1);
  check_stmt_rc(rc, stmt);
  rc= mysql_stmt_execute(stmt);
 
  memset(&bind, 0, sizeof(MYSQL_BIND));
  bind.buffer= buffer;
  bind.buffer_type= MYSQL_TYPE_STRING;
  bind.buffer_length= 9;
  rc= mysql_stmt_bind_result(stmt, &bind);
  check_stmt_rc(rc, stmt);
 
  rc= mysql_stmt_fetch(stmt);
  diag("Buffer: %s", buffer);
  FAIL_IF(strlen(buffer) == 1, "Expected zerofilled string");
  rc= mysql_stmt_close(stmt);
  return OK;
}


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