Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@
},
"volta": {
"node": "20.9.0",
"yarn": "4.0.2"
"yarn": "4.9.4"
}
}
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export class LargeList<T extends DataType = any> extends DataType<
super(Type.LargeList);
this.children = [child];
}
public declare readonly children: Field<T>[];
declare public readonly children: Field<T>[];
public toString() {
return `LargeList<${this.valueType}>`;
}
Expand Down
22 changes: 4 additions & 18 deletions src/vector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ function parseDataContent<T extends DataType>({
copy,
);

let byteWidth = getTimeByteWidth(dataType);
const byteWidth = 8;
const data = copy
? new dataType.ArrayType(
copyBuffer(dataView.buffer, dataPtr, length * byteWidth),
Expand All @@ -334,7 +334,7 @@ function parseDataContent<T extends DataType>({
copy,
);

let byteWidth = getTimeByteWidth(dataType);
const byteWidth = 8;
const data = copy
? new dataType.ArrayType(
copyBuffer(dataView.buffer, dataPtr, length * byteWidth),
Expand Down Expand Up @@ -769,22 +769,8 @@ function getDateByteWidth(type: arrow.Date_): number {
assertUnreachable();
}

function getTimeByteWidth(
type: arrow.Time | arrow.Timestamp | arrow.Duration,
): number {
switch (type.unit) {
case arrow.TimeUnit.SECOND:
case arrow.TimeUnit.MILLISECOND:
return 4;
case arrow.TimeUnit.MICROSECOND:
case arrow.TimeUnit.NANOSECOND:
return 8;
}
assertUnreachable();
}

function parseNullBitmap(
buffer: ArrayBuffer,
buffer: ArrayBufferLike,
validityPtr: number,
length: number,
copy: boolean,
Expand All @@ -805,7 +791,7 @@ function parseNullBitmap(

/** Copy existing buffer into new buffer */
function copyBuffer(
buffer: ArrayBuffer,
buffer: ArrayBufferLike,
ptr: number,
byteLength: number,
): ArrayBuffer {
Expand Down
40 changes: 20 additions & 20 deletions tests/ffi.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -592,31 +592,31 @@ describe("date32", (t) => {
});

// // This also looks to be failing; probably an issue with the byte width?
// test.skip("timestamp", (t) => {
// let columnIndex = TEST_TABLE.schema.fields.findIndex(
// (field) => field.name == "timestamp"
// );
it("timestamp", (t) => {
let columnIndex = TEST_TABLE.schema.fields.findIndex(
(field) => field.name == "timestamp"
);

// const originalField = TEST_TABLE.schema.fields[columnIndex];
// const originalVector = TEST_TABLE.getChildAt(columnIndex)!;
// const fieldPtr = FFI_TABLE.schemaAddr(columnIndex);
// const field = parseField(WASM_MEMORY.buffer, fieldPtr);
const originalField = TEST_TABLE.schema.fields[columnIndex];
const originalVector = TEST_TABLE.getChildAt(columnIndex)!;
const fieldPtr = FFI_TABLE.schemaAddr(columnIndex);
const field = parseField(WASM_MEMORY.buffer, fieldPtr);

// expect(field.name).toStrictEqual(originalField.name);
// expect(field.typeId).toStrictEqual(originalField.typeId);
// expect(field.nullable).toStrictEqual(originalField.nullable);
expect(field.name).toStrictEqual(originalField.name);
expect(field.typeId).toStrictEqual(originalField.typeId);
expect(field.nullable).toStrictEqual(originalField.nullable);

// const arrayPtr = FFI_TABLE.arrayAddr(0, columnIndex);
// const wasmVector = parseVector(WASM_MEMORY.buffer, arrayPtr, field.type);
const arrayPtr = FFI_TABLE.arrayAddr(0, columnIndex);
const wasmVector = parseVector(WASM_MEMORY.buffer, arrayPtr, field.type);

// console.log(wasmVector.toJSON());
// console.log(wasmVector.toJSON());

// for (let i = 0; i < 3; i++) {
// console.log(originalVector.get(i));
// console.log(wasmVector.get(i));
// expect(originalVector.get(i), wasmVector.get(i));
// }
// });
for (let i = 0; i < 3; i++) {
// console.log(originalVector.get(i));
// console.log(wasmVector.get(i));
expect(originalVector.get(i), wasmVector.get(i));
}
});

describe("duration", (t) => {
function test(copy: boolean) {
Expand Down
3 changes: 3 additions & 0 deletions tests/rust-arrow-ffi/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"scripts": {
"build": "wasm-pack build --dev --target nodejs"
},
"devDependencies": {
"wasm-pack": "^0.13.1"
}
}
223 changes: 222 additions & 1 deletion tests/rust-arrow-ffi/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,231 @@
# Manual changes might be lost - proceed with caution!

__metadata:
version: 6
version: 8
cacheKey: 10

"axios@npm:^0.26.1":
version: 0.26.1
resolution: "axios@npm:0.26.1"
dependencies:
follow-redirects: "npm:^1.14.8"
checksum: 10/02863f4a4fd4e43ad6e0c8bc9d1359a0863c43cc57bda42ea21dfce34681e3211df193b2bf2e8ee10b2c3870ab8d6bed38a3cf80cd6e8ee17749b7d73ccd4752
languageName: node
linkType: hard

"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65
languageName: node
linkType: hard

"binary-install@npm:^1.0.1":
version: 1.1.2
resolution: "binary-install@npm:1.1.2"
dependencies:
axios: "npm:^0.26.1"
rimraf: "npm:^3.0.2"
tar: "npm:^6.1.11"
checksum: 10/cf181e4cfea967f382a5358bc55aa1356e429106f93f1eeeb55074d78df648d149d899a2cdc57b65f378805b5cafd049d9e9d025c80aa27a5a60920beee53ba5
languageName: node
linkType: hard

"brace-expansion@npm:^1.1.7":
version: 1.1.12
resolution: "brace-expansion@npm:1.1.12"
dependencies:
balanced-match: "npm:^1.0.0"
concat-map: "npm:0.0.1"
checksum: 10/12cb6d6310629e3048cadb003e1aca4d8c9bb5c67c3c321bafdd7e7a50155de081f78ea3e0ed92ecc75a9015e784f301efc8132383132f4f7904ad1ac529c562
languageName: node
linkType: hard

"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f
languageName: node
linkType: hard

"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2
languageName: node
linkType: hard

"follow-redirects@npm:^1.14.8":
version: 1.15.11
resolution: "follow-redirects@npm:1.15.11"
peerDependenciesMeta:
debug:
optional: true
checksum: 10/07372fd74b98c78cf4d417d68d41fdaa0be4dcacafffb9e67b1e3cf090bc4771515e65020651528faab238f10f9b9c0d9707d6c1574a6c0387c5de1042cde9ba
languageName: node
linkType: hard

"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
dependencies:
minipass: "npm:^3.0.0"
checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec
languageName: node
linkType: hard

"fs.realpath@npm:^1.0.0":
version: 1.0.0
resolution: "fs.realpath@npm:1.0.0"
checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96
languageName: node
linkType: hard

"glob@npm:^7.1.3":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
fs.realpath: "npm:^1.0.0"
inflight: "npm:^1.0.4"
inherits: "npm:2"
minimatch: "npm:^3.1.1"
once: "npm:^1.3.0"
path-is-absolute: "npm:^1.0.0"
checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b
languageName: node
linkType: hard

"inflight@npm:^1.0.4":
version: 1.0.6
resolution: "inflight@npm:1.0.6"
dependencies:
once: "npm:^1.3.0"
wrappy: "npm:1"
checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67
languageName: node
linkType: hard

"inherits@npm:2":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
languageName: node
linkType: hard

"minimatch@npm:^3.1.1":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
brace-expansion: "npm:^1.1.7"
checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634
languageName: node
linkType: hard

"minipass@npm:^3.0.0":
version: 3.3.6
resolution: "minipass@npm:3.3.6"
dependencies:
yallist: "npm:^4.0.0"
checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0
languageName: node
linkType: hard

"minipass@npm:^5.0.0":
version: 5.0.0
resolution: "minipass@npm:5.0.0"
checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93
languageName: node
linkType: hard

"minizlib@npm:^2.1.1":
version: 2.1.2
resolution: "minizlib@npm:2.1.2"
dependencies:
minipass: "npm:^3.0.0"
yallist: "npm:^4.0.0"
checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1
languageName: node
linkType: hard

"mkdirp@npm:^1.0.3":
version: 1.0.4
resolution: "mkdirp@npm:1.0.4"
bin:
mkdirp: bin/cmd.js
checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2
languageName: node
linkType: hard

"once@npm:^1.3.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
dependencies:
wrappy: "npm:1"
checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68
languageName: node
linkType: hard

"path-is-absolute@npm:^1.0.0":
version: 1.0.1
resolution: "path-is-absolute@npm:1.0.1"
checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8
languageName: node
linkType: hard

"rimraf@npm:^3.0.2":
version: 3.0.2
resolution: "rimraf@npm:3.0.2"
dependencies:
glob: "npm:^7.1.3"
bin:
rimraf: bin.js
checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5
languageName: node
linkType: hard

"root-workspace-0b6124@workspace:.":
version: 0.0.0-use.local
resolution: "root-workspace-0b6124@workspace:."
dependencies:
wasm-pack: "npm:^0.13.1"
languageName: unknown
linkType: soft

"tar@npm:^6.1.11":
version: 6.2.1
resolution: "tar@npm:6.2.1"
dependencies:
chownr: "npm:^2.0.0"
fs-minipass: "npm:^2.0.0"
minipass: "npm:^5.0.0"
minizlib: "npm:^2.1.1"
mkdirp: "npm:^1.0.3"
yallist: "npm:^4.0.0"
checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0
languageName: node
linkType: hard

"wasm-pack@npm:^0.13.1":
version: 0.13.1
resolution: "wasm-pack@npm:0.13.1"
dependencies:
binary-install: "npm:^1.0.1"
bin:
wasm-pack: run.js
checksum: 10/5031151cc085487707e7f5e3a4057fb27b1dbc5ac5663a1a46725488ff3d4672f49a8a11ebdff8247857c03adce1cdf7615ce0790f19c622400e926a6e24796d
languageName: node
linkType: hard

"wrappy@npm:1":
version: 1.0.2
resolution: "wrappy@npm:1.0.2"
checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5
languageName: node
linkType: hard

"yallist@npm:^4.0.0":
version: 4.0.0
resolution: "yallist@npm:4.0.0"
checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd
languageName: node
linkType: hard
Loading
Loading