Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-15852

[JS] Table getByteLength and indexOf don't work

    XMLWordPrintableJSON

Details

    Description

      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:

      https://github.com/apache/arrow/blob/1b796ec3f9caeb5e86e3348ba940bef8d95915c5/js/src/table.ts#L378-L390

      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.:

       

          /**
           * Get the size in bytes of an element by index.
           * @param index The index at which to get the byteLength.
           */
          // @ts-ignore
          public getByteLength(index: number): number { return this.data[index].byteLength; }
          /**
           * Get the size in bytes of a table.
           */
          //@ts-ignore
          public getByteLength(): number { 
              return this.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.

      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!

       

      Attachments

        Issue Links

          Activity

            People

              paul.e.taylor Paul Taylor
              timhigins Timothy Higinbottom
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 50m
                  1h 50m