Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/njsConnection.c
Original file line number Diff line number Diff line change
Expand Up @@ -1073,6 +1073,12 @@ static bool njsConnection_getBindInfoFromValue(njsBaton *baton,
return true;
}

// booleans
if (valueType == napi_boolean) {
*bindType = NJS_DATATYPE_BOOLEAN;
return true;
}

// dates, LOBs, buffers and arrays are all objects
if (valueType == napi_object) {

Expand Down
11 changes: 11 additions & 0 deletions src/njsDbObject.c
Original file line number Diff line number Diff line change
Expand Up @@ -825,6 +825,10 @@ static bool njsDbObject_transformFromOracle(njsDbObject *obj, napi_env env,
if (dpiLob_addRef(data->value.asLOB) < 0)
return njsUtils_throwErrorDPI(env, obj->type->oracleDb);
return true;
case DPI_ORACLE_TYPE_BOOLEAN:
NJS_CHECK_NAPI(env, napi_get_boolean(env, data->value.asBoolean,
value))
return true;
case DPI_ORACLE_TYPE_OBJECT:
return njsDbObject_new(typeInfo->objectType, data->value.asObject,
env, value);
Expand Down Expand Up @@ -886,6 +890,13 @@ static bool njsDbObject_transformToOracle(njsDbObject *obj, napi_env env,
*nativeTypeNum = DPI_NATIVE_TYPE_DOUBLE;
}
return true;

// handle booleans
case napi_boolean:
NJS_CHECK_NAPI(env, napi_get_value_bool(env, value,
(bool*) &data->value.asBoolean))
*nativeTypeNum = DPI_NATIVE_TYPE_BOOLEAN;
return true;

// several types of objects are supported
case napi_object:
Expand Down
1 change: 1 addition & 0 deletions src/njsModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
#define NJS_DATATYPE_BUFFER DPI_ORACLE_TYPE_RAW
#define NJS_DATATYPE_CLOB DPI_ORACLE_TYPE_CLOB
#define NJS_DATATYPE_BLOB DPI_ORACLE_TYPE_BLOB
#define NJS_DATATYPE_BOOLEAN DPI_ORACLE_TYPE_BOOLEAN
#define NJS_DATATYPE_OBJECT DPI_ORACLE_TYPE_OBJECT

// error messages used within the driver
Expand Down
18 changes: 18 additions & 0 deletions src/njsVariable.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,10 @@ bool njsVariable_createBuffer(njsVariable *var, njsConnection *conn,
var->varTypeNum = DPI_ORACLE_TYPE_BLOB;
var->nativeTypeNum = DPI_NATIVE_TYPE_LOB;
break;
case NJS_DATATYPE_BOOLEAN:
var->varTypeNum = DPI_ORACLE_TYPE_BOOLEAN;
var->nativeTypeNum = DPI_NATIVE_TYPE_BOOLEAN;
break;
case NJS_DATATYPE_OBJECT:
var->varTypeNum = DPI_ORACLE_TYPE_OBJECT;
var->nativeTypeNum = DPI_NATIVE_TYPE_OBJECT;
Expand Down Expand Up @@ -421,6 +425,11 @@ bool njsVariable_getScalarValue(njsVariable *var, njsVariableBuffer *buffer,
NJS_CHECK_NAPI(env, napi_create_string_utf8(env, rowidValue,
rowidValueLength, value))
break;
case DPI_NATIVE_TYPE_BOOLEAN:
NJS_CHECK_NAPI(env, napi_get_boolean(env,
data->value.asBoolean,
value))
break;
case DPI_NATIVE_TYPE_OBJECT:
if (!njsDbObject_new(var->objectType, data->value.asObject,
env, value))
Expand Down Expand Up @@ -939,6 +948,15 @@ bool njsVariable_setScalarValue(njsVariable *var, uint32_t pos, napi_env env,
return true;
}

// handle binding booleans
if (valueType == napi_boolean) {
if (var->varTypeNum != DPI_ORACLE_TYPE_BOOLEAN)
return njsVariable_setInvalidBind(var, pos, baton);
NJS_CHECK_NAPI(env, napi_get_value_bool(env, value,
(bool*) &data->value.asBoolean))
return true;
}

// handle binding objects
if (valueType == napi_object) {

Expand Down