@@ -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}
@@ -583,16 +586,18 @@ export function readSolidData(
583586}
584587
585588export function readBinary (
586- dataBuffer : ArrayBuffer ,
589+ dataBuffer : ArrayBufferLike ,
587590 colDataHead : number ,
588591 length : number
589592) : ArrayBuffer {
590- let buff = dataBuffer . slice ( colDataHead , colDataHead + length ) ;
593+ const buff = new ArrayBuffer ( length ) ;
594+ const source = new Uint8Array ( dataBuffer , colDataHead , length ) ;
595+ new Uint8Array ( buff ) . set ( source ) ;
591596 return buff ;
592597}
593598
594599export function readVarchar (
595- dataBuffer : ArrayBuffer ,
600+ dataBuffer : ArrayBufferLike ,
596601 colDataHead : number ,
597602 length : number ,
598603 textDecoder : TextDecoder
@@ -602,7 +607,7 @@ export function readVarchar(
602607}
603608
604609export function readNchar (
605- dataBuffer : ArrayBuffer ,
610+ dataBuffer : ArrayBufferLike ,
606611 colDataHead : number ,
607612 length : number
608613) : string {
@@ -628,15 +633,8 @@ export function getString(
628633 return textDecoder . decode ( dataView ) ;
629634}
630635
631- function iteratorBuff ( arr : ArrayBuffer ) {
632- let buf = Buffer . from ( arr ) ;
633- for ( const value of buf ) {
634- logger . debug ( value . toString ( ) ) ;
635- }
636- }
637-
638- function isNull ( bitMapArr : ArrayBuffer , n : number ) {
639- let c = new Uint8Array ( bitMapArr ) ;
636+ function isNull ( bitMapArr : Uint8Array , n : number ) {
637+ let c = bitMapArr ;
640638 let position = n >>> 3 ;
641639 let index = n & 0x7 ;
642640 return ( c [ position ] & ( 1 << ( 7 - index ) ) ) == 1 << ( 7 - index ) ;
0 commit comments