@@ -38,6 +38,7 @@ var should = require('should');
38
38
var async = require ( 'async' ) ;
39
39
var dbConfig = require ( './dbconfig.js' ) ;
40
40
var fs = require ( 'fs' ) ;
41
+ var random = require ( './random.js' ) ;
41
42
42
43
describe ( '75.blobPlsqlBindAsBuffer.js' , function ( ) {
43
44
var connection = null ;
@@ -289,15 +290,6 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
289
290
) ;
290
291
} ;
291
292
292
- var getRandomString = function ( length , specialStr ) {
293
- var str = '' ;
294
- var strLength = length - specialStr . length * 2 ;
295
- for ( ; str . length < strLength ; str += Math . random ( ) . toString ( 36 ) . slice ( 2 ) ) ;
296
- str = str . substr ( 0 , strLength ) ;
297
- str = specialStr + str + specialStr ;
298
- return str ;
299
- } ;
300
-
301
293
describe ( '75.1 BLOB, PLSQL, BIND_IN' , function ( ) {
302
294
var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_in_751 (blob_id IN NUMBER, blob_in IN BLOB)\n" +
303
295
"AS \n" +
@@ -321,7 +313,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
321
313
var size = 32768 ;
322
314
var sequence = 1 ;
323
315
var specialStr = "75.1.1" ;
324
- var bigStr = getRandomString ( size , specialStr ) ;
316
+ var bigStr = random . getRandomString ( size , specialStr ) ;
325
317
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
326
318
var bindVar = {
327
319
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -355,7 +347,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
355
347
var size = 65535 ;
356
348
var sequence = 2 ;
357
349
var specialStr = "75.1.2" ;
358
- var bigStr = getRandomString ( size , specialStr ) ;
350
+ var bigStr = random . getRandomString ( size , specialStr ) ;
359
351
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
360
352
var bindVar = {
361
353
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -524,7 +516,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
524
516
var size = 50000 ;
525
517
var sequence = 6 ;
526
518
var specialStr = "75.1.9" ;
527
- var bigStr = getRandomString ( size , specialStr ) ;
519
+ var bigStr = random . getRandomString ( size , specialStr ) ;
528
520
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
529
521
var bindVar = [ sequence , { val : bufferStr , type : oracledb . BUFFER , dir : oracledb . BIND_IN , maxSize : size } ] ;
530
522
@@ -551,7 +543,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
551
543
var size = 65535 ;
552
544
var sequence = 7 ;
553
545
var specialStr = "75.1.10" ;
554
- var bigStr = getRandomString ( size , specialStr ) ;
546
+ var bigStr = random . getRandomString ( size , specialStr ) ;
555
547
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
556
548
var bindVar = {
557
549
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -622,7 +614,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
622
614
var size = 32768 ;
623
615
var sequence = 11 ;
624
616
var specialStr = "75.2.1" ;
625
- var bigStr = getRandomString ( size , specialStr ) ;
617
+ var bigStr = random . getRandomString ( size , specialStr ) ;
626
618
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
627
619
var bindVar = {
628
620
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -664,7 +656,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
664
656
var size = 65535 ;
665
657
var sequence = 12 ;
666
658
var specialStr = "75.2.2" ;
667
- var bigStr = getRandomString ( size , specialStr ) ;
659
+ var bigStr = random . getRandomString ( size , specialStr ) ;
668
660
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
669
661
var bindVar = {
670
662
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -778,7 +770,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
778
770
var size = 50000 ;
779
771
var sequence = 16 ;
780
772
var specialStr = "75.2.6" ;
781
- var bigStr = getRandomString ( size , specialStr ) ;
773
+ var bigStr = random . getRandomString ( size , specialStr ) ;
782
774
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
783
775
var bindVar = [ sequence , { type : oracledb . BUFFER , dir : oracledb . BIND_OUT , maxSize : size } ] ;
784
776
@@ -813,7 +805,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
813
805
var size = 50000 ;
814
806
var sequence = 17 ;
815
807
var specialStr = "75.2.7" ;
816
- var bigStr = getRandomString ( size , specialStr ) ;
808
+ var bigStr = random . getRandomString ( size , specialStr ) ;
817
809
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
818
810
var bindVar = [ sequence , { type : oracledb . BUFFER , dir : oracledb . BIND_OUT , maxSize : size - 1 } ] ;
819
811
@@ -844,7 +836,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
844
836
var size = 50000 ;
845
837
var sequence = 18 ;
846
838
var specialStr = "75.2.8" ;
847
- var bigStr = getRandomString ( size , specialStr ) ;
839
+ var bigStr = random . getRandomString ( size , specialStr ) ;
848
840
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
849
841
var bindVar = {
850
842
i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
@@ -885,6 +877,14 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
885
877
"END nodb_blob_in_out_753;" ;
886
878
var sqlRun = "begin nodb_blob_in_out_753(lob_in_out => :lob_in_out); end;" ;
887
879
var proc_drop = "DROP PROCEDURE nodb_blob_in_out_753" ;
880
+ var blob_proc_inout_7531 = "CREATE OR REPLACE PROCEDURE nodb_blob_in_out_7531 (lob_id IN NUMBER, lob_in_out IN OUT RAW) \n" +
881
+ "AS \n" +
882
+ "BEGIN \n" +
883
+ " insert into nodb_tab_blob_in (id, blob_1) values (lob_id, lob_in_out); \n" +
884
+ " select blob_1 into lob_in_out from nodb_tab_blob_in where id = lob_id; \n" +
885
+ "END nodb_blob_in_out_7531;" ;
886
+ var sqlRun_7531 = "begin nodb_blob_in_out_7531(:i, :io); end;" ;
887
+ var proc_drop_7531 = "DROP PROCEDURE nodb_blob_in_out_7531" ;
888
888
889
889
before ( function ( done ) {
890
890
executeSQL ( blob_proc_inout , done ) ;
@@ -897,7 +897,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
897
897
it ( '75.3.1 PLSQL, BIND_INOUT with Buffer size 32K' , function ( done ) {
898
898
var size = 32768 ;
899
899
var specialStr = "75.3.1" ;
900
- var bigStr = getRandomString ( size , specialStr ) ;
900
+ var bigStr = random . getRandomString ( size , specialStr ) ;
901
901
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
902
902
var bindVar = {
903
903
lob_in_out : { dir : oracledb . BIND_INOUT , type : oracledb . BUFFER , val : bufferStr , maxSize : size }
@@ -921,7 +921,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
921
921
it ( '75.3.2 PLSQL, BIND_INOUT with Buffer size 32K - 1' , function ( done ) {
922
922
var size = 32767 ;
923
923
var specialStr = "75.3.2" ;
924
- var bigStr = getRandomString ( size , specialStr ) ;
924
+ var bigStr = random . getRandomString ( size , specialStr ) ;
925
925
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
926
926
var bindVar = {
927
927
lob_in_out : { dir : oracledb . BIND_INOUT , type : oracledb . BUFFER , val : bufferStr , maxSize : size }
@@ -945,7 +945,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
945
945
it ( '75.3.3 PLSQL, BIND_INOUT with Buffer size 64K - 1' , function ( done ) {
946
946
var size = 65535 ;
947
947
var specialStr = "75.3.3" ;
948
- var bigStr = getRandomString ( size , specialStr ) ;
948
+ var bigStr = random . getRandomString ( size , specialStr ) ;
949
949
var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
950
950
var bindVar = {
951
951
lob_in_out : { dir : oracledb . BIND_INOUT , type : oracledb . BUFFER , val : bufferStr , maxSize : size }
@@ -966,7 +966,98 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
966
966
) ;
967
967
} ) ; // 75.3.3
968
968
969
- } ) ;
969
+ it ( '75.3.4 PLSQL, BIND_INOUT with OUT data > maxSize' , function ( done ) {
970
+ var specialStr = "75.3.4" ;
971
+ var len = 65535 ;
972
+ var bigStr = random . getRandomString ( len , specialStr ) ;
973
+ var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
974
+ var bindVar = {
975
+ lob_in_out : { dir : oracledb . BIND_INOUT , type : oracledb . BUFFER , val : bufferStr , maxSize : len - 1 }
976
+ } ;
977
+
978
+ connection . execute (
979
+ sqlRun ,
980
+ bindVar ,
981
+ function ( err ) {
982
+ should . exist ( err ) ;
983
+ // NJS-016: buffer is too small for OUT binds
984
+ ( err . message ) . should . startWith ( 'NJS-016' ) ;
985
+ done ( ) ;
986
+ }
987
+ ) ;
988
+ } ) ; // 75.3.4
989
+
990
+ it ( '75.3.5 PLSQL, bind out to varchar2 with OUT data < maxSize' , function ( done ) {
991
+ var sequence = 30 ;
992
+ var specialStr = "75.3.5" ;
993
+ var len = 300 ;
994
+ var bigStr = random . getRandomString ( len , specialStr ) ;
995
+ var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
996
+
997
+ async . series ( [
998
+ function ( cb ) {
999
+ executeSQL ( blob_proc_inout_7531 , cb ) ;
1000
+ } ,
1001
+ function ( cb ) {
1002
+ var bindVar_7531 = {
1003
+ i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
1004
+ io : { val :bufferStr , type : oracledb . BUFFER , dir : oracledb . BIND_INOUT , maxSize : len }
1005
+ } ;
1006
+ connection . execute (
1007
+ sqlRun_7531 ,
1008
+ bindVar_7531 ,
1009
+ function ( err , result ) {
1010
+ should . not . exist ( err ) ;
1011
+ var resultVal = result . outBinds . io . toString ( 'utf8' ) ;
1012
+ var resultLength = resultVal . length ;
1013
+ var specStrLength = specialStr . length ;
1014
+ should . strictEqual ( resultLength , len ) ;
1015
+ should . strictEqual ( resultVal . substring ( 0 , specStrLength ) , specialStr ) ;
1016
+ should . strictEqual ( resultVal . substring ( resultLength - specStrLength , resultLength ) , specialStr ) ;
1017
+ cb ( ) ;
1018
+ }
1019
+ ) ;
1020
+ } ,
1021
+ function ( cb ) {
1022
+ executeSQL ( proc_drop_7531 , cb ) ;
1023
+ }
1024
+ ] , done ) ;
1025
+ } ) ; // 75.3.5
1026
+
1027
+ it ( '75.3.6 PLSQL, bind out to varchar2 with OUT data > maxSize' , function ( done ) {
1028
+ var sequence = 30 ;
1029
+ var specialStr = "75.3.6" ;
1030
+ var len = 300 ;
1031
+ var bigStr = random . getRandomString ( len , specialStr ) ;
1032
+ var bufferStr = node6plus ? Buffer . from ( bigStr , "utf-8" ) : new Buffer ( bigStr , "utf-8" ) ;
1033
+
1034
+ async . series ( [
1035
+ function ( cb ) {
1036
+ executeSQL ( blob_proc_inout_7531 , cb ) ;
1037
+ } ,
1038
+ function ( cb ) {
1039
+ var bindVar_7531 = {
1040
+ i : { val : sequence , type : oracledb . NUMBER , dir : oracledb . BIND_IN } ,
1041
+ io : { val :bufferStr , type : oracledb . BUFFER , dir : oracledb . BIND_INOUT , maxSize : len - 1 }
1042
+ } ;
1043
+ connection . execute (
1044
+ sqlRun_7531 ,
1045
+ bindVar_7531 ,
1046
+ function ( err ) {
1047
+ should . exist ( err ) ;
1048
+ // ORA-01460: unimplemented or unreasonable conversion requested
1049
+ ( err . message ) . should . startWith ( 'ORA-01460' ) ;
1050
+ cb ( ) ;
1051
+ }
1052
+ ) ;
1053
+ } ,
1054
+ function ( cb ) {
1055
+ executeSQL ( proc_drop_7531 , cb ) ;
1056
+ }
1057
+ ] , done ) ;
1058
+ } ) ; // 75.3.6
1059
+
1060
+ } ) ; // 75.3
970
1061
971
1062
describe ( '75.4 Multiple BLOBs, BIND_IN' , function ( ) {
972
1063
var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_in_754 (blob_id IN NUMBER, blob_1 IN BLOB, blob_2 IN BLOB)\n" +
@@ -989,8 +1080,8 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
989
1080
var size_1 = 32768 ;
990
1081
var size_2 = 50000 ;
991
1082
var specialStr = "75.4.1" ;
992
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
993
- var bigStr_2 = getRandomString ( size_2 , specialStr ) ;
1083
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1084
+ var bigStr_2 = random . getRandomString ( size_2 , specialStr ) ;
994
1085
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
995
1086
var bufferStr_2 = node6plus ? Buffer . from ( bigStr_2 , "utf-8" ) : new Buffer ( bigStr_2 , "utf-8" ) ;
996
1087
var sequence = 51 ;
@@ -1028,7 +1119,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
1028
1119
var preparedCLOBID = 301 ;
1029
1120
var sequence = 52 ;
1030
1121
var size_1 = 32768 ;
1031
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
1122
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1032
1123
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
1033
1124
1034
1125
async . series ( [
@@ -1115,8 +1206,8 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
1115
1206
var size_1 = 32768 ;
1116
1207
var size_2 = 50000 ;
1117
1208
var sequence = 111 ;
1118
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
1119
- var bigStr_2 = getRandomString ( size_2 , specialStr ) ;
1209
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1210
+ var bigStr_2 = random . getRandomString ( size_2 , specialStr ) ;
1120
1211
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
1121
1212
var bufferStr_2 = node6plus ? Buffer . from ( bigStr_2 , "utf-8" ) : new Buffer ( bigStr_2 , "utf-8" ) ;
1122
1213
var bindVar = {
@@ -1163,7 +1254,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
1163
1254
it ( '75.5.2 PLSQL, BIND_OUT, bind a JPG file and a Buffer' , function ( done ) {
1164
1255
var specialStr = "75.5.2" ;
1165
1256
var size_1 = 32768 ;
1166
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
1257
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1167
1258
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
1168
1259
var sequence = 112 ;
1169
1260
var bindVar = {
@@ -1264,7 +1355,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
1264
1355
var preparedCLOBID = 500 ;
1265
1356
var size_1 = 32768 ;
1266
1357
var specialStr = "75.6.1" ;
1267
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
1358
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1268
1359
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
1269
1360
1270
1361
async . series ( [
@@ -1326,7 +1417,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
1326
1417
var preparedCLOBID = 501 ;
1327
1418
var size_1 = 65535 ;
1328
1419
var specialStr = "75.6.2" ;
1329
- var bigStr_1 = getRandomString ( size_1 , specialStr ) ;
1420
+ var bigStr_1 = random . getRandomString ( size_1 , specialStr ) ;
1330
1421
var bufferStr_1 = node6plus ? Buffer . from ( bigStr_1 , "utf-8" ) : new Buffer ( bigStr_1 , "utf-8" ) ;
1331
1422
1332
1423
async . series ( [
0 commit comments