@@ -83,30 +83,30 @@ njsVariable::~njsVariable()
83
83
njsDataType njsVariable::DataType ()
84
84
{
85
85
switch (varTypeNum) {
86
- case DPI_ORACLE_VARTYPE_VARCHAR:
87
- case DPI_ORACLE_VARTYPE_NVARCHAR:
88
- case DPI_ORACLE_VARTYPE_CHAR:
89
- case DPI_ORACLE_VARTYPE_NCHAR:
90
- case DPI_ORACLE_VARTYPE_ROWID:
91
- case DPI_ORACLE_VARTYPE_RAW:
92
- case DPI_ORACLE_VARTYPE_LONG_VARCHAR:
93
- case DPI_ORACLE_VARTYPE_LONG_NVARCHAR:
94
- case DPI_ORACLE_VARTYPE_LONG_RAW:
86
+ case DPI_ORACLE_TYPE_VARCHAR:
87
+ case DPI_ORACLE_TYPE_NVARCHAR:
88
+ case DPI_ORACLE_TYPE_CHAR:
89
+ case DPI_ORACLE_TYPE_NCHAR:
90
+ case DPI_ORACLE_TYPE_ROWID:
91
+ case DPI_ORACLE_TYPE_LONG_VARCHAR:
95
92
return NJS_DATATYPE_STR;
96
- case DPI_ORACLE_VARTYPE_NATIVE_FLOAT:
97
- case DPI_ORACLE_VARTYPE_NATIVE_DOUBLE:
98
- case DPI_ORACLE_VARTYPE_NATIVE_INT:
99
- case DPI_ORACLE_VARTYPE_NUMBER:
93
+ case DPI_ORACLE_TYPE_RAW:
94
+ case DPI_ORACLE_TYPE_LONG_RAW:
95
+ return NJS_DATATYPE_BUFFER;
96
+ case DPI_ORACLE_TYPE_NATIVE_FLOAT:
97
+ case DPI_ORACLE_TYPE_NATIVE_DOUBLE:
98
+ case DPI_ORACLE_TYPE_NATIVE_INT:
99
+ case DPI_ORACLE_TYPE_NUMBER:
100
100
return NJS_DATATYPE_NUM;
101
- case DPI_ORACLE_VARTYPE_DATE :
102
- case DPI_ORACLE_VARTYPE_TIMESTAMP :
103
- case DPI_ORACLE_VARTYPE_TIMESTAMP_TZ :
104
- case DPI_ORACLE_VARTYPE_TIMESTAMP_LTZ :
101
+ case DPI_ORACLE_TYPE_DATE :
102
+ case DPI_ORACLE_TYPE_TIMESTAMP :
103
+ case DPI_ORACLE_TYPE_TIMESTAMP_TZ :
104
+ case DPI_ORACLE_TYPE_TIMESTAMP_LTZ :
105
105
return NJS_DATATYPE_DATE;
106
- case DPI_ORACLE_VARTYPE_CLOB :
107
- case DPI_ORACLE_VARTYPE_NCLOB :
106
+ case DPI_ORACLE_TYPE_CLOB :
107
+ case DPI_ORACLE_TYPE_NCLOB :
108
108
return NJS_DATATYPE_CLOB;
109
- case DPI_ORACLE_VARTYPE_BLOB :
109
+ case DPI_ORACLE_TYPE_BLOB :
110
110
return NJS_DATATYPE_BLOB;
111
111
default :
112
112
break ;
@@ -195,6 +195,10 @@ njsBaton::~njsBaton()
195
195
delete [] bindVars;
196
196
bindVars = NULL ;
197
197
}
198
+ if (protoILob) {
199
+ delete protoILob;
200
+ protoILob = NULL ;
201
+ }
198
202
if (!keepQueryInfo) {
199
203
if (queryVars) {
200
204
delete [] queryVars;
@@ -208,6 +212,10 @@ njsBaton::~njsBaton()
208
212
delete [] fetchAsStringTypes;
209
213
fetchAsStringTypes = NULL ;
210
214
}
215
+ if (fetchAsBufferTypes) {
216
+ delete [] fetchAsBufferTypes;
217
+ fetchAsBufferTypes = NULL ;
218
+ }
211
219
}
212
220
}
213
221
@@ -267,7 +275,7 @@ void njsBaton::AsyncAfterWorkCallback(uv_work_t *req, int status)
267
275
// reset all remaining parameters as undefined
268
276
if (!baton->error .empty ()) {
269
277
callbackArgs[0 ] = v8::Exception::Error (Nan::New<v8::String>(
270
- baton->error . c_str () ).ToLocalChecked ());
278
+ baton->error ).ToLocalChecked ());
271
279
for (i = 1 ; i < numCallbackArgs; i++)
272
280
callbackArgs[i] = Nan::Undefined ();
273
281
}
@@ -395,6 +403,36 @@ bool njsBaton::GetBoolFromJSON(Local<Object> obj, const char *key, int index,
395
403
}
396
404
397
405
406
+ // -----------------------------------------------------------------------------
407
+ // njsBaton::GetIntFromJSON()
408
+ // Gets a signed integer value from the JSON object for the given key, if
409
+ // possible. If undefined, leave value alone and do not set error; otherwise,
410
+ // set error. Index is the argument index in the caller.
411
+ // -----------------------------------------------------------------------------
412
+ bool njsBaton::GetIntFromJSON (Local<Object> obj, const char *key,
413
+ int index, int32_t *value)
414
+ {
415
+ Nan::HandleScope scope;
416
+ Local<Value> jsValue;
417
+
418
+ if (!error.empty ())
419
+ return false ;
420
+ jsValue = obj->Get (Nan::New<v8::String>(key).ToLocalChecked ());
421
+ if (jsValue->IsInt32 ()) {
422
+ *value = Nan::To<int32_t >(jsValue).FromJust ();
423
+ return true ;
424
+ } else if (jsValue->IsUndefined () || jsValue->IsNull ()) {
425
+ return true ;
426
+ } else if (jsValue->IsNumber ()) {
427
+ error = njsMessages::Get (errInvalidPropertyValueInParam, key,
428
+ index + 1 );
429
+ return false ;
430
+ }
431
+ error = njsMessages::Get (errInvalidPropertyTypeInParam, key, index + 1 );
432
+ return false ;
433
+ }
434
+
435
+
398
436
// -----------------------------------------------------------------------------
399
437
// njsBaton::GetStringFromJSON()
400
438
// Gets a string value from the JSON object for the given key, if possible.
@@ -555,6 +593,42 @@ bool njsCommon::GetUnsignedIntArg(Nan::NAN_METHOD_ARGS_TYPE args,
555
593
}
556
594
557
595
596
+ // -----------------------------------------------------------------------------
597
+ // njsCommon::SetPropBool()
598
+ // Sets a property to a boolean value. If the value is not a boolean, an
599
+ // error is raised and false is returned.
600
+ // -----------------------------------------------------------------------------
601
+ bool njsCommon::SetPropBool (Local<Value> value, bool *valuePtr,
602
+ const char *name)
603
+ {
604
+ if (!value->IsBoolean ()) {
605
+ string errMsg = njsMessages::Get (errInvalidPropertyValue, name);
606
+ Nan::ThrowError (errMsg.c_str ());
607
+ return false ;
608
+ }
609
+ *valuePtr = value->ToBoolean ()->Value ();
610
+ return true ;
611
+ }
612
+
613
+
614
+ // -----------------------------------------------------------------------------
615
+ // njsCommon::SetPropInt()
616
+ // Sets a property to an integer value. If the value is not an integer, an
617
+ // error is raised and false is returned.
618
+ // -----------------------------------------------------------------------------
619
+ bool njsCommon::SetPropInt (Local<Value> value, int32_t *valuePtr,
620
+ const char *name)
621
+ {
622
+ if (!value->IsInt32 ()) {
623
+ string errMsg = njsMessages::Get (errInvalidPropertyValue, name);
624
+ Nan::ThrowError (errMsg.c_str ());
625
+ return false ;
626
+ }
627
+ *valuePtr = Nan::To<int32_t >(value).FromJust ();
628
+ return true ;
629
+ }
630
+
631
+
558
632
// -----------------------------------------------------------------------------
559
633
// njsCommon::SetPropString()
560
634
// Sets a property to a string value. If the value is not a string, an error
@@ -683,22 +757,3 @@ void njsCommon::PropertyIsReadOnly(const char *name)
683
757
Nan::ThrowError (errMsg.c_str ());
684
758
}
685
759
686
- // -----------------------------------------------------------------------------
687
- // njsCommon::SetPropBool()
688
- // Sets a property to a boolean value. If the value is not a boolean, an
689
- // error is raised and false is returned.
690
- // -----------------------------------------------------------------------------
691
- bool njsCommon::SetPropBool (Local<Value> value, bool *valuePtr,
692
- const char *name)
693
- {
694
- if (!value->IsBoolean ()) {
695
- string errMsg = njsMessages::Get (errInvalidPropertyValue, name);
696
- Nan::ThrowError (errMsg.c_str ());
697
- return false ;
698
- }
699
- *valuePtr = value->ToBoolean ()->Value ();
700
- return true ;
701
- }
702
-
703
-
704
- // -----------------------------------------------------------------------------
0 commit comments