You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by pt...@apache.org on 2019/03/02 20:36:38 UTC

[arrow] branch master updated: ARROW-4738: [JS] NullVector should include a null data buffer

This is an automated email from the ASF dual-hosted git repository.

ptaylor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new fd0e7ba  ARROW-4738: [JS] NullVector should include a null data buffer
fd0e7ba is described below

commit fd0e7ba6b53b2a9f9e432c200aecc66ae3e69b58
Author: ptaylor <pa...@me.com>
AuthorDate: Sat Mar 2 12:36:26 2019 -0800

    ARROW-4738: [JS] NullVector should include a null data buffer
    
    Closes https://issues.apache.org/jira/browse/ARROW-4738 and https://issues.apache.org/jira/browse/ARROW-3667
    
    Author: ptaylor <pa...@me.com>
    
    Closes #3787 from trxcllnt/js/write-null-array-data-buffer and squashes the following commits:
    
    d8456c14 <ptaylor> read and write a zero-length data buffer for NullVector
---
 js/src/data.ts                        | 2 +-
 js/src/visitor/jsonvectorassembler.ts | 2 +-
 js/src/visitor/vectorassembler.ts     | 4 +++-
 js/src/visitor/vectorloader.ts        | 2 +-
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/js/src/data.ts b/js/src/data.ts
index 2c63b78..de7cd7e 100644
--- a/js/src/data.ts
+++ b/js/src/data.ts
@@ -174,7 +174,7 @@ export class Data<T extends DataType = DataType> {
     // Convenience methods for creating Data instances for each of the Arrow Vector types
     //
     /** @nocollapse */
-    public static Null<T extends Null>(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer) {
+    public static Null<T extends Null>(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, _data?: NullBuffer) {
         return new Data(type, offset, length, nullCount, [undefined, undefined, toUint8Array(nullBitmap)]);
     }
     /** @nocollapse */
diff --git a/js/src/visitor/jsonvectorassembler.ts b/js/src/visitor/jsonvectorassembler.ts
index 291a057..9d71ea4 100644
--- a/js/src/visitor/jsonvectorassembler.ts
+++ b/js/src/visitor/jsonvectorassembler.ts
@@ -77,7 +77,7 @@ export class JSONVectorAssembler extends Visitor {
             ...super.visit(Vector.new(data.clone(type, offset, length, 0, buffers)))
         };
     }
-    public visitNull() { return {}; }
+    public visitNull() { return { 'DATA': [] }; }
     public visitBool<T extends Bool>({ values, offset, length }: VType<T>) {
         return { 'DATA': [...iterateBits(values, offset, length, null, getBool)] };
     }
diff --git a/js/src/visitor/vectorassembler.ts b/js/src/visitor/vectorassembler.ts
index 3cbcb4e..169a159 100644
--- a/js/src/visitor/vectorassembler.ts
+++ b/js/src/visitor/vectorassembler.ts
@@ -82,7 +82,9 @@ export class VectorAssembler extends Visitor {
         return super.visit(vector);
     }
 
-    public visitNull<T extends Null>(_nullV: VType<T>) { return this; }
+    public visitNull<T extends Null>(_nullV: VType<T>) {
+        return addBuffer.call(this, new Uint8Array(0));
+    }
     public visitDictionary<T extends Dictionary>(vector: VType<T>) {
         // Assemble the indices here, Dictionary assembled separately.
         return this.visit(vector.indices);
diff --git a/js/src/visitor/vectorloader.ts b/js/src/visitor/vectorloader.ts
index dad8f0c..f21ca44 100644
--- a/js/src/visitor/vectorloader.ts
+++ b/js/src/visitor/vectorloader.ts
@@ -49,7 +49,7 @@ export class VectorLoader extends Visitor {
         return super.visit(node instanceof Field ? node.type : node);
     }
 
-    public visitNull            <T extends type.Null>            (type: T, { length, nullCount } = this.nextFieldNode()) { return            Data.Null(type, 0, length, nullCount, this.readNullBitmap(type, nullCount));                                                                                }
+    public visitNull            <T extends type.Null>            (type: T, { length, nullCount } = this.nextFieldNode()) { return            Data.Null(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type));                                                           }
     public visitBool            <T extends type.Bool>            (type: T, { length, nullCount } = this.nextFieldNode()) { return            Data.Bool(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type));                                                           }
     public visitInt             <T extends type.Int>             (type: T, { length, nullCount } = this.nextFieldNode()) { return             Data.Int(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type));                                                           }
     public visitFloat           <T extends type.Float>           (type: T, { length, nullCount } = this.nextFieldNode()) { return           Data.Float(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type));                                                           }