Bug #4173 Some aggregate functions used in a prepared query fail on big endian platforms
Submitted: 16 Jun 2004 23:08 Modified: 18 Jun 2004 1:29
Reporter: Nathaniel Blanchard Email Updates:
Status: Closed Impact on me:
Category:MySQL Server Severity:S1 (Critical)
Version:4.1.2 OS:IBM AIX (AIX, OSX, Solaris (sparc), HP-UX)
Assigned to: Michael Widenius

[16 Jun 2004 23:08] Nathaniel Blanchard
Using a prepared query, some aggregate functions (tested with SUM and AVG so far) return their results in the wrong byte order when fetched, while on big endian hardware.

This sounds very similar to bug 3578.

I've confirmed the attached test plan returns incorrect values on the following platforms:

AIX 5.2
Solaris 8 (sparc) (x86 works fine since its a lowhigh machine)
Mac OS X (Darwin Kernel Version 6.8)

How to repeat:
  MYSQL_STMT *stmt;
  MYSQL_BIND bind_array[3];
  MYSQL *mysql = NULL;
  int id; /* input and output data of 'id' column */

  const char *stmt_text;
  int rc; /* to save return value of API calls */
  int i; /* loop counter */


  stmt= mysql_stmt_init(mysql);

  stmt_text= "INSERT INTO t1 (id) VALUES (?)";

  mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));

  memset(bind_array, 0, sizeof(bind_array));

  bind_array[0].buffer_type= MYSQL_TYPE_LONG;
  bind_array[0].buffer= (char*) &id;

  mysql_stmt_bind_param(stmt, bind_array);

  for (id= 1; id <= 3; ++id)

  stmt_text= "select sum(id) from t1";
  mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));

  mysql_stmt_bind_result(stmt, bind_array);

  while ((rc= mysql_stmt_fetch(stmt)) == 0)
    printf("result =  %d\n", id);


  return 0;
[18 Jun 2004 1:29] Michael Widenius
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at

Additional info:

Fix will be in 4.1.3