@@ -26,7 +26,7 @@ const TAOSFIELD = {
26
26
function convertTimestamp ( colHeadPtr , numOfRows , nBytes = 0 , offset = 0 , precision = 0 ) {
27
27
28
28
let res = [ ] ;
29
- let bitMapSize = Math . ceil ( numOfRows / 8.0 ) ;
29
+ let bitMapSize = ( numOfRows + ( ( 1 << 3 ) - 1 ) ) >> 3 ;
30
30
let bitMapBuf = ref . reinterpret ( colHeadPtr , bitMapSize , 0 ) ;
31
31
32
32
offset = bitMapSize ;
@@ -543,7 +543,7 @@ CTaosInterface.prototype.useResult = function useResult(result) {
543
543
CTaosInterface . prototype . fetchRawBlock = function fetchRawBlock ( taosRes ) {
544
544
var numOfRowPtr = ref . alloc ( 'int *' ) ;
545
545
var pDataPtr = ref . alloc ( 'void **' ) ;
546
-
546
+
547
547
let code = libtaos . taos_fetch_raw_block ( taosRes , numOfRowPtr , pDataPtr ) ;
548
548
549
549
if ( code == 0 ) {
@@ -561,18 +561,16 @@ CTaosInterface.prototype.fetchRawBlock = function fetchRawBlock(taosRes) {
561
561
blocks . fill ( null ) ;
562
562
563
563
// offset pData
564
- // pData + 12 + (4+2)*numOfFields;
565
- let offsetBeforeLengthArr = 12 + ( 4 + 2 ) * numOfFields ;
564
+ let offsetBeforeLengthArr = ( 4 * 5 ) + 8 + ( 4 + 1 ) * numOfFields ;
566
565
var lengthArraySize = 4 * numOfFields ;
567
566
let offsetForColData = offsetBeforeLengthArr + lengthArraySize ;
568
567
// read column after column
569
- if ( numOfRows > 0 )
570
- {
568
+ if ( numOfRows > 0 ) {
571
569
for ( let i = 0 ; i < numOfFields ; i ++ ) {
572
570
573
571
let lengthPtr = ref . reinterpret ( pData , ref . sizeof . int , offsetBeforeLengthArr + ( i * 4 ) ) ;
574
572
let length = lengthPtr . readInt32LE ( ) ;
575
-
573
+
576
574
if ( ! convertFunctions [ fields [ i ] [ 'type' ] ] ) {
577
575
throw new errors . DatabaseError ( "Invalid data type returned from database" ) ;
578
576
} else if ( fields [ i ] [ 'type' ] == 8 || fields [ i ] [ 'type' ] == 10 || fields [ i ] [ 'type' ] == 15 ) {
@@ -586,7 +584,7 @@ CTaosInterface.prototype.fetchRawBlock = function fetchRawBlock(taosRes) {
586
584
}
587
585
}
588
586
}
589
-
587
+
590
588
return { blocks : blocks , num_of_rows : Math . abs ( numOfRows ) }
591
589
} else {
592
590
throw new OperationalError ( `${ libtaos . taos_errstr ( taosRes ) } ,${ code } ` ) ;
@@ -634,9 +632,9 @@ CTaosInterface.prototype.query_a = function query_a(connection, sql, callback, p
634
632
* function yourself using the libtaos.taos_fetch_raw_block_a function
635
633
*/
636
634
637
- CTaosInterface . prototype . fetch_raw_block_a = function fetch_raw_block_a ( taosRes , callback , param = ref . ref ( ref . NULL ) ) {
635
+ CTaosInterface . prototype . fetch_raw_block_a = function fetch_raw_block_a ( taosRes , callback , param = ref . ref ( ref . NULL ) ) {
638
636
var cti = this ;
639
- var fetchRawBlock_a_callback = function ( param2 , taosRes2 , numOfRows2 ) {
637
+ var fetchRawBlock_a_callback = function ( param2 , taosRes2 , numOfRows2 ) {
640
638
let fields = cti . fetchFields_a ( taosRes2 ) ;
641
639
let precision = libtaos . taos_result_precision ( taosRes2 ) ;
642
640
@@ -650,21 +648,20 @@ CTaosInterface.prototype.fetch_raw_block_a = function fetch_raw_block_a(taosRes,
650
648
fieldLengthArr . push ( fieldLength ) ;
651
649
}
652
650
}
653
- // =====logic same as fetch_raw_block
654
- // parse raw block from here.
651
+ // =====logic same as fetch_raw_block
652
+ // parse raw block from here.
655
653
let pData = libtaos . taos_get_raw_block ( taosRes2 ) ;
656
654
let numOfRows = numOfRows2 ;
657
655
let numOfFields = libtaos . taos_field_count ( taosRes2 ) ;
658
656
659
- let bitMapSize = Math . ceil ( numOfRows / 8.0 ) ;
657
+ let bitMapSize = ( numOfRows + ( ( 1 << 3 ) - 1 ) ) >> 3 ;
660
658
let offsetArrLength = ref . sizeof . int32 * numOfRows ;
661
659
662
660
let blocks = new Array ( numOfFields ) ;
663
661
blocks . fill ( null ) ;
664
662
665
663
// offset pData
666
- // pData + 12 + (4+2)*numOfFields;
667
- let offsetBeforeLengthArr = 12 + ( 4 + 2 ) * numOfFields ;
664
+ let offsetBeforeLengthArr = ( 4 * 5 ) + 8 + ( 4 + 1 ) * numOfFields ;
668
665
var lengthArraySize = 4 * numOfFields ;
669
666
let offsetForColData = offsetBeforeLengthArr + lengthArraySize ;
670
667
// read column after column
@@ -688,7 +685,7 @@ CTaosInterface.prototype.fetch_raw_block_a = function fetch_raw_block_a(taosRes,
688
685
callback ( param2 , taosRes2 , numOfRows2 , blocks ) ;
689
686
}
690
687
var fetchRawBlock_a_callback = ffi . Callback ( ref . types . void , [ ref . types . void_ptr , ref . types . void_ptr , ref . types . int ] , fetchRawBlock_a_callback ) ;
691
- libtaos . taos_fetch_raw_block_a ( taosRes , fetchRawBlock_a_callback , param )
688
+ libtaos . taos_fetch_raw_block_a ( taosRes , fetchRawBlock_a_callback , param )
692
689
}
693
690
// Used to parse the TAO_RES retrieved in taos_fetch_row_a()'s callback
694
691
// block after block.
0 commit comments