You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's fairly simple for a user to implement the right logic themselves (at least for getByteLength) and it's a quick patch to define the functions normally instead of on the prototype, e.g.:
/** * Get the size in bytes of an element by index. * @param index The index at which to get the byteLength. */// @ts-ignorepublicgetByteLength(index: number): number { returnthis.data[index].byteLength; }
/** * Get the size in bytes of a table. *///@ts-ignorepublicgetByteLength(): number {
returnthis.data.map((batch) => batch.byteLength).reduce((sum, newLength) => sum + newLength);
}
I'd be happy to send this as a PR if that's an OK alternative to the way it's currently implemented.
Paul Taylor / @trxcllnt: [~timhigins] Thanks for the report. In running your code, I discovered an oversight we made in the v7.0 refactor.
That said, I think your indexOf() call is incorrect – indexOf() is the inverse of get() such that this should assert true: table.indexOf(table.get(0)) === 0
In your case (looking up the index of a row), you want to pass the entire row contents to the table.indexOf() call like this:
The functions table.getByteLength() and table.indexOf() don't return the correct values.
They are bound dynamically to the Table class, in a way I don't fully understand, with the following code:
arrow/js/src/table.ts
Lines 378 to 390 in 1b796ec
The other functions like that, get(), set(), and isValid() all seem to work. However, getByteLength() and indexOf() return the placeholder/sentinel values of 0 and -1 respectively that are defined in the no-op code here: https://github.com/apache/arrow/blob/1b796ec3f9caeb5e86e3348ba940bef8d95915c5/js/src/table.ts#L207-L221, which I assume is to generate the right type definitions, and thus documentation.
It's fairly simple for a user to implement the right logic themselves (at least for getByteLength) and it's a quick patch to define the functions normally instead of on the prototype, e.g.:
I'd be happy to send this as a PR if that's an OK alternative to the way it's currently implemented.
Here's a Github repo of a minimal reproduction of the issue in NodeJS:
https://github.com/alexkreidler/apache-arrow-js-small-bug
And an observable notebook for in the browser (although I couldn't get ESM working): https://observablehq.com/@08027ecfa2b2f7bb/arrow-7-canary
Thanks to all for your work on Arrow!
Reporter: Timothy Higinbottom
Assignee: Paul Taylor / @trxcllnt
PRs and other links:
Note: This issue was originally created as ARROW-15852. Please see the migration documentation for further details.
The text was updated successfully, but these errors were encountered: