@@ -164,9 +164,6 @@ export class TaosResult {
164164 return null ;
165165 }
166166
167- /**
168- * Mapping the WebSocket response type code to TDengine's type name.
169- */
170167 private getTDengineMeta ( ) : Array < TDengineMeta > | null {
171168 if ( this . _meta ) {
172169 let tdMeta = new Array < TDengineMeta > ( ) ;
@@ -226,7 +223,6 @@ export function parseBlock(
226223
227224 let byteArrayIndex = i >> 3 ;
228225 let bitwiseOffset = 7 - ( i & 7 ) ;
229- // let bitMapArr = dataBuffer.slice(colBlockHead, colBlockHead + bitMapSize)
230226 let bitMapArr = new DataView (
231227 dataView . buffer ,
232228 dataView . byteOffset + colBlockHead ,
@@ -267,34 +263,38 @@ export function parseBlock(
267263 INT_32_SIZE * rows +
268264 dataView . getInt32 ( j * INT_32_SIZE , true ) ;
269265 } else {
270- colDataHead =
271- colBlockHead + INT_32_SIZE * rows + varOffset ;
272- let dataLength = dataView . getInt16 ( colDataHead , true ) ;
266+ colDataHead = colBlockHead + INT_32_SIZE * rows + varOffset ;
267+ const dataHeadSize = isVarType == ColumnsBlockType . BLOB ? 4 : 2 ;
268+ let dataLength =
269+ isVarType == ColumnsBlockType . BLOB
270+ ? dataView . getUint32 ( colDataHead , true )
271+ : dataView . getUint16 ( colDataHead , true ) ;
273272 if ( isVarType == ColumnsBlockType . VARCHAR ) {
274273 row . push (
275274 readVarchar (
276275 dataView . buffer ,
277- dataView . byteOffset + colDataHead + 2 ,
276+ dataView . byteOffset + colDataHead + dataHeadSize ,
278277 dataLength ,
279278 textDecoder
280279 )
281280 ) ;
282281 } else if (
283282 isVarType == ColumnsBlockType . GEOMETRY ||
284- isVarType == ColumnsBlockType . VARBINARY
283+ isVarType == ColumnsBlockType . VARBINARY ||
284+ isVarType == ColumnsBlockType . BLOB
285285 ) {
286286 row . push (
287287 readBinary (
288288 dataView . buffer ,
289- dataView . byteOffset + colDataHead + 2 ,
289+ dataView . byteOffset + colDataHead + dataHeadSize ,
290290 dataLength
291291 )
292292 ) ;
293293 } else {
294294 row . push (
295295 readNchar (
296296 dataView . buffer ,
297- dataView . byteOffset + colDataHead + 2 ,
297+ dataView . byteOffset + colDataHead + dataHeadSize ,
298298 dataLength
299299 )
300300 ) ;
@@ -320,25 +320,28 @@ export function parseBlock(
320320export function _isVarType ( metaType : number ) : Number {
321321 switch ( metaType ) {
322322 case TDengineTypeCode . NCHAR : {
323- return ColumnsBlockType [ " NCHAR" ] ;
323+ return ColumnsBlockType . NCHAR ;
324324 }
325325 case TDengineTypeCode . VARCHAR : {
326- return ColumnsBlockType [ " VARCHAR" ] ;
326+ return ColumnsBlockType . VARCHAR ;
327327 }
328328 case TDengineTypeCode . BINARY : {
329- return ColumnsBlockType [ " VARCHAR" ] ;
329+ return ColumnsBlockType . VARCHAR ;
330330 }
331331 case TDengineTypeCode . JSON : {
332- return ColumnsBlockType [ " VARCHAR" ] ;
332+ return ColumnsBlockType . VARCHAR ;
333333 }
334334 case TDengineTypeCode . GEOMETRY : {
335- return ColumnsBlockType [ " GEOMETRY" ] ;
335+ return ColumnsBlockType . GEOMETRY ;
336336 }
337337 case TDengineTypeCode . VARBINARY : {
338338 return ColumnsBlockType . VARBINARY ;
339339 }
340+ case TDengineTypeCode . BLOB : {
341+ return ColumnsBlockType . BLOB ;
342+ }
340343 default : {
341- return ColumnsBlockType [ " SOLID" ] ;
344+ return ColumnsBlockType . SOLID ;
342345 }
343346 }
344347}
@@ -569,16 +572,18 @@ export function readSolidData(
569572}
570573
571574export function readBinary (
572- dataBuffer : ArrayBuffer ,
575+ dataBuffer : ArrayBufferLike ,
573576 colDataHead : number ,
574577 length : number
575578) : ArrayBuffer {
576- let buff = dataBuffer . slice ( colDataHead , colDataHead + length ) ;
579+ const buff = new ArrayBuffer ( length ) ;
580+ const source = new Uint8Array ( dataBuffer , colDataHead , length ) ;
581+ new Uint8Array ( buff ) . set ( source ) ;
577582 return buff ;
578583}
579584
580585export function readVarchar (
581- dataBuffer : ArrayBuffer ,
586+ dataBuffer : ArrayBufferLike ,
582587 colDataHead : number ,
583588 length : number ,
584589 textDecoder : TextDecoder
@@ -588,7 +593,7 @@ export function readVarchar(
588593}
589594
590595export function readNchar (
591- dataBuffer : ArrayBuffer ,
596+ dataBuffer : ArrayBufferLike ,
592597 colDataHead : number ,
593598 length : number
594599) : string {
@@ -614,15 +619,8 @@ export function getString(
614619 return textDecoder . decode ( dataView ) ;
615620}
616621
617- function iteratorBuff ( arr : ArrayBuffer ) {
618- let buf = Buffer . from ( arr ) ;
619- for ( const value of buf ) {
620- logger . debug ( value . toString ( ) ) ;
621- }
622- }
623-
624- function isNull ( bitMapArr : ArrayBuffer , n : number ) {
625- let c = new Uint8Array ( bitMapArr ) ;
622+ function isNull ( bitMapArr : Uint8Array , n : number ) {
623+ let c = bitMapArr ;
626624 let position = n >>> 3 ;
627625 let index = n & 0x7 ;
628626 return ( c [ position ] & ( 1 << ( 7 - index ) ) ) == 1 << ( 7 - index ) ;
0 commit comments