unsigned int i;
ulong ret;
int lval;
+ unsigned int ulval;
double dval;
my_ulonglong llval;
if (!stmt->result.is_null[i]) {
switch (stmt->result.buf[i].type) {
case IS_LONG:
- memcpy(&lval, stmt->result.buf[i].val, sizeof(lval));
- ZVAL_LONG(stmt->result.vars[i], lval);
+ if ((sizeof(long) ==4) && (stmt->stmt->fields[i].type == MYSQL_TYPE_LONG)
+ && (stmt->stmt->fields[i].flags & UNSIGNED_FLAG))
+ {
+ /* unsigned int (11) */
+ char tmp[12];
+ memcpy (&ulval, stmt->result.buf[i].val, sizeof(lval));
+ if (ulval > INT_MAX) {
+ sprintf((char *)&tmp, "%u", ulval);
+ ZVAL_STRING(stmt->result.vars[i], tmp, 1);
+ } else {
+ memcpy(&lval, stmt->result.buf[i].val, sizeof(lval));
+ ZVAL_LONG(stmt->result.vars[i], lval);
+ }
+ } else {
+ memcpy(&lval, stmt->result.buf[i].val, sizeof(lval));
+ ZVAL_LONG(stmt->result.vars[i], lval);
+ }
break;
case IS_DOUBLE:
memcpy(&dval, stmt->result.buf[i].val, sizeof(dval));