}
break;
#ifdef SQL_INT64
- case SQL_INT64:
+ case SQL_INT64: {
+ ISC_INT64 n = *(ISC_INT64 *) data;
Z_TYPE_P(val) = IS_STRING;
- if (scale < 0 ){
- short j = 0;
- ISC_INT64 n, f = 1;
- n = (ISC_INT64) *(ISC_INT64 *) data;
- for (j = 0; j < -scale; j++) {
+
+ if (scale < 0) {
+ short j;
+ ISC_INT64 f = 1;
+
+ for (j = 0; j < -scale; ++j) {
f *= 10;
}
- if ( n >= 0){
- Z_STRLEN_P(val) = sprintf (string_data, "%" ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d",
- (ISC_INT64) n / f, -scale, (ISC_INT64) n % f );
- }else if ((n/f) != 0 ){
- Z_STRLEN_P(val) = sprintf (string_data, "%" ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d",
- (ISC_INT64) n / f, -scale, (ISC_INT64) -(n % f) );
- }else{
- Z_STRLEN_P(val) = sprintf (string_data, "%s.%0*" ISC_INT64_FORMAT "d",
- "-0", -scale, (ISC_INT64) -(n % f) );
+ if (n >= 0) {
+ Z_STRLEN_P(val) = sprintf (string_data,
+ "%" ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d", n / f, -scale, n % f);
+ } else if (n < -f) {
+ Z_STRLEN_P(val) = sprintf (string_data,
+ "%" ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d", n / f, -scale, -n % f);
+ } else {
+ Z_STRLEN_P(val) = sprintf (string_data,
+ "-0.%0*" ISC_INT64_FORMAT "d", -scale, -n % f);
}
} else {
- Z_STRLEN_P(val) =sprintf (string_data, "%.0" ISC_INT64_FORMAT "d",
- (ISC_INT64) *(ISC_INT64 *) data);
+ Z_STRLEN_P(val) = sprintf (string_data, "%" ISC_INT64_FORMAT "d", n);
}
Z_STRVAL_P(val) = estrdup(string_data);
break;
+ }
#endif
#ifndef SQL_TIMESTAMP
case SQL_DATE:
$v_decimal7_2 = rand_number(7,2);
$v_decimal7_0 = rand_number(7,0);
$v_numeric15_15 = rand_number(15,15);
- $v_numeric15_0 = rand_number(15,0);
+ $v_numeric15_0 = $iter ? rand_number(15,0) : 0;
$v_double = rand_number(18);
$v_float = rand_number(7);
$v_integer = rand_number(9,0);
echo " in: $v_numeric15_15\n";
echo " out: $row->V_NUMERIC15_15\n";
}
- if($row->V_NUMERIC15_0 != $v_numeric15_0){
+ if($row->V_NUMERIC15_0 != (string)$v_numeric15_0){
echo " NUMERIC15_0 fail\n";
echo " in: $v_numeric15_0\n";
echo " out: $row->V_NUMERIC15_0\n";