Explorar el Código

db_oracle: fix NULL values binding

Ovidiu Sas hace 8 años
padre
commit
af18ebc1b5
Se han modificado 1 ficheros con 31 adiciones y 3 borrados
  1. 31 3
      src/modules/db_oracle/val.c

+ 31 - 3
src/modules/db_oracle/val.c

@@ -58,7 +58,35 @@ int db_oracle_val2bind(bmap_t* _m, const db_val_t* _v, OCIDate* _o)
 	if (VAL_NULL(_v)) {
 		_m->addr = NULL;
 		_m->size = 0;
-		_m->type = SQLT_NON;
+		switch (VAL_TYPE(_v)) {
+		case DB1_INT:
+			_m->type = SQLT_INT;
+			break;
+		case DB1_BIGINT:
+			LM_ERR("BIGINT not supported");
+			return -1;
+		case DB1_BITMAP:
+			_m->type = SQLT_UIN;
+			break;
+		case DB1_DOUBLE:
+			_m->type = SQLT_FLT;
+			break;
+		case DB1_STRING:
+			_m->type = SQLT_STR;
+			break;
+		case DB1_STR:
+			_m->type = SQLT_CHR;
+			break;
+		case DB1_DATETIME:
+			_m->type = SQLT_ODT;
+			break;
+		case DB1_BLOB:
+			_m->type = SQLT_CLOB;
+			break;
+		default:
+			LM_ERR("unknown data type\n");
+			return -1;
+		}
 		return 0;
 	}
 
@@ -130,8 +158,8 @@ int db_oracle_val2bind(bmap_t* _m, const db_val_t* _v, OCIDate* _o)
 		break;
 
 	default:
-	    LM_ERR("unknown data type\n");
-	    return -1;
+		LM_ERR("unknown data type\n");
+		return -1;
 	}
 	return 0;
 }