Code Monkey home page Code Monkey logo

torcharrow's Introduction

TorchArrow: a data processing library for PyTorch

This library currently does not have a stable release. The API and implementation may change. Future changes may not be backward compatible.

TorchArrow is a torch.Tensor-like Python DataFrame library for data preprocessing in PyTorch models, with two high-level features:

  • DataFrame library (like Pandas) with strong GPU or other hardware acceleration (under development) and PyTorch ecosystem integration.
  • Columnar memory layout based on Apache Arrow with strong variable-width and nested data support (such as string, list, map) and Arrow ecosystem integration.

Installation

You will need Python 3.7 or later. Also, we highly recommend installing an Miniconda environment.

First, set up an environment. If you are using conda, create a conda environment:

conda create --name torcharrow python=3.7
conda activate torcharrow

Version Compatibility

The following is the corresponding torcharrow versions and supported Python versions.

torch torcharrow python
main / nightly main / nightly >=3.7, <=3.10
1.13.0 0.2.0 >=3.7, <=3.10

Colab

Follow the instructions in this Colab notebook

Nightly Binaries

Experimental nightly binary on macOS (requires macOS SDK >= 10.15) and Linux (requires glibc >= 2.17) for Python 3.7, 3.8, and 3.9 can be installed via pip wheels:

pip install --pre torcharrow -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html

From Source

If you are installing from source, you will need Python 3.7 or later and a C++17 compiler.

Get the TorchArrow Source

git clone --recursive https://github.com/pytorch/torcharrow
cd torcharrow
# if you are updating an existing checkout
git submodule sync --recursive
git submodule update --init --recursive

Install Dependencies

On macOS

HomeBrew is required to install development tools on macOS.

# Install dependencies from Brew
brew install --formula ninja flex bison cmake ccache icu4c boost gflags glog libevent

# Build and install other dependencies
scripts/build_mac_dep.sh ranges_v3 fmt double_conversion folly re2

On Ubuntu (20.04 or later)

# Install dependencies from APT
apt install -y g++ cmake ccache ninja-build checkinstall \
    libssl-dev libboost-all-dev libdouble-conversion-dev libgoogle-glog-dev \
    libgflags-dev libevent-dev libre2-dev libfl-dev libbison-dev
# Build and install folly and fmt
scripts/setup-ubuntu.sh

Install TorchArrow

For local development, you can build with debug mode:

DEBUG=1 python setup.py develop

And run unit tests with

python -m unittest -v

To build and install TorchArrow with release mode:

python setup.py install

License

TorchArrow is BSD licensed, as found in the LICENSE file.

torcharrow's People

Contributors

amyreese avatar andrewaikens87 avatar bearzx avatar damianr99 avatar dracifer avatar ejguan avatar facebook-github-bot avatar hanqiwu0704 avatar kedar-parab avatar kgpai avatar kit1980 avatar laithsakka avatar mbasmanova avatar miiiira avatar nayef211 avatar oswinc avatar parmeet avatar pedroerp avatar scotts avatar stroxler avatar syoummer avatar syscl avatar thatch avatar tianshu-bao avatar vancexu avatar waitingkuo avatar wenleix avatar yellpine avatar ylgh avatar youmeiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

torcharrow's Issues

Supports `df.drop("a")`

Pandas's drop need to provide axis=1 for both drop("a") and drop(["a", "b"])

>>> import pandas as pd
>>> df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
>>> df.drop("a")
  File "<stdin>", line 1, in <module>
  File "/Users/wxie/opt/miniconda3/lib/python3.9/site-packages/pandas-1.3.4-py3.9-macosx-10.9-x86_64.egg/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/Users/wxie/opt/miniconda3/lib/python3.9/site-packages/pandas-1.3.4-py3.9-macosx-10.9-x86_64.egg/pandas/core/frame.py", line 4906, in drop
    return super().drop(
  File "/Users/wxie/opt/miniconda3/lib/python3.9/site-packages/pandas-1.3.4-py3.9-macosx-10.9-x86_64.egg/pandas/core/generic.py", line 4150, in drop
    obj = obj._drop_axis(labels, axis, level=level, errors=errors)
  File "/Users/wxie/opt/miniconda3/lib/python3.9/site-packages/pandas-1.3.4-py3.9-macosx-10.9-x86_64.egg/pandas/core/generic.py", line 4185, in _drop_axis
    new_axis = axis.drop(labels, errors=errors)
  File "/Users/wxie/opt/miniconda3/lib/python3.9/site-packages/pandas-1.3.4-py3.9-macosx-10.9-x86_64.egg/pandas/core/indexes/base.py", line 6017, in drop
    raise KeyError(f"{labels[mask]} not found in axis")
KeyError: "['a'] not found in axis"

However, Pandas does support "label" as single parameter or list. The error is because in Pandas, both "index" and "column" axis are supported (and "index" axis can also be string-named) . And by default the axis=0 makes it error (no "index" with name "a"). The following would work:

>>> df.drop("a", axis=1)
   b
0  4
1  5
2  6

TorchArrow in general designed to not support complicated index-manipulation in most cases (index is always number, and we only support thing like slice and append). And column is the default operation. So there is no ambiguity to support df.drop("a")


More examples in Pandas:

>>> import pandas as pd
>>> df = pd.DataFrame({"dense": [1, 2, 3], "sparse": [4, 5, 6]})
>>> df
   dense  sparse
0      1       4
1      2       5
2      3       6
>>> df.drop(["dense"], axis=1)
   sparse
0       4
1       5
2       6
>>> df.drop("dense", axis=1)
   sparse
0       4
1       5
2       6

Interface name (`IDataFrame/IColumn`) vs. factory method (`DataFrame/Column`)

Current Status

In TorchArrow, the interface names are ta.IDataFrame/ta.IColumn while the factory methods are ta.DataFrame/ta.Column:

import torcharrow as ta
a = ta.Column([1, 2, 3])
assert isinstance(a, ta.IColumn)
assert isinstance(a, ta.velox_rt.numerical_column_cpu.NumericColumnCpu)

And we use IColumn/IDataFrame as the type hint in parameter, transformations, etc.

The cavity here is user might think ta.DataFrame / ta.Column as class name on first impression, and later found they have to use ta.IDataFrame / ta.IColumn.

Proposed Change

We want to use DataFrame/Column/NumericalColumn/StringColumn/ListColumn... as the interface name, and ta.dataframe/ta.column as factory method:

import torcharrow as ta
a = ta.column([1, 2, 3])
assert isinstance(a, ta.Column)

This is similar to PyArrow/PyTorch convention (pa.array as factory method, pa.Array as interface name):

import pyarrow as pa
a = pa.array([1, 2, 3])
assert isinstance(a, pa.Array)
assert isinstance(a, pa.IntegerArray)

and PyTorch :torch.tensor as the factory method, torch.Tensor as interface name:

import torch
a = torch.tensor([1, 2, 3])
assert isinstance(a, torch.Tensor)

Making BaseColumn::genericUnaryUDF and the family free functions

BaseColumn::genericUnaryUDF
BaseColumn::genericBinaryUDF
BaseColumn::genericTrinaryUDF

https://github.com/facebookresearch/torcharrow/blob/main/csrc/velox/column.h#L364-L377

This is in the Eager Mode/Velox Backend.

The generic UDF call methods should be general enough to not be bound to any columns. For example when there are no arguments or all arguments are scalars, conceptually this call is not bound to any columns. Technically they are static functions so don't require users to bind the calls to any column, but having these functions in the BaseColumn class makes them "sound" like being bound to BaseColumn. This is mostly a cosmetic change for new joiners to start with. More work will be required to truly make a UDF call interface that allows any forms of inputs.

Let's move these functions out of the BaseColumn class and make them free

SELECT on empty DataFrame doesn't work for CPU backend

To reproduce:

import torcharrow as ta
import torcharrow.dtypes as dt
from torcharrow import me

df = ta.DataFrame(
            dtype=dt.Struct([dt.Field(i, dt.int64) for i in ["a", "b", "c"]])
        )

df.select("*", e=me["a"] + me["b"])

Crash:

==192661==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000038 (pc 0x7f49af0bbdbb bp 0x7ffc0b2eb2b0 sp 0x7ffc0b2eb290 T0)
==192661==The signal is caused by a READ memory access.
==192661==Hint: address points to the zero page.
SCARINESS: 10 (null-deref)
    #0 0x7f49af0bbdba in facebook::velox::BaseVector::size() const velox/vector/BaseVector.h
    #1 0x7f49af0bb1f8 in facebook::torcharrow::createColumn(std::shared_ptr<facebook::velox::BaseVector>) pytorch/torcharrow/csrc/velox/column.cpp:32
    #2 0x7f49af0d0ef8 in facebook::torcharrow::OperatorHandle::call(std::shared_ptr<facebook::velox::BaseVector>, std::shared_ptr<facebook::velox::BaseVector>) pytorch/torcharrow/csrc/velox/column.cpp:404
    #3 0x7f49af3793f4 in facebook::torcharrow::SimpleColumn<long>::dispatchBinaryOperation(std::shared_ptr<facebook::velox::BaseVector>, facebook::velox::TypeKind, facebook::torcharrow::BinaryOpCode, facebook::torcharrow::OperatorType) pytorch/torcharrow/csrc/velox/column.h:500
    #4 0x7f49af378f54 in facebook::torcharrow::SimpleColumn<long>::callBinaryOp(facebook::torcharrow::BaseColumn const&, facebook::torcharrow::BinaryOpCode, facebook::torcharrow::OperatorType) pytorch/torcharrow/csrc/velox/column.h:524
    #5 0x7f49af378ce4 in pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)::operator()(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&) const pytorch/torcharrow/csrc/velox/lib.cpp:310
    #6 0x7f49af378c87 in std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> > pybind11::detail::argument_loader<facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&>::call_impl<std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> >, pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)&, 0ul, 1ul, pybind11::detail::void_type>(long&&, std::integer_sequence<unsigned long, 0ul, 1ul>, pybind11::detail::void_type&&) && third-party-buck/platform009/build/pybind11/11419d1/include/pybind11/cast.h:2078
    #7 0x7f49af377b37 in std::enable_if<!(std::is_void<std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> > >::value), std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> > >::type pybind11::detail::argument_loader<facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&>::call<std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> >, pybind11::detail::void_type, pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)&>(pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)&) && third-party-buck/platform009/build/pybind11/11419d1/include/pybind11/cast.h:2050
    #8 0x7f49af3774c2 in void pybind11::cpp_function::initialize<pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&), std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> >, facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)&&, long (*)(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::'lambda'(pybind11::detail::function_call&)::operator()(pybind11::detail::function_call&) const third-party-buck/platform009/build/pybind11/11419d1/include/pybind11/pybind11.h:193
    #9 0x7f49af3770fc in void pybind11::cpp_function::initialize<pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&), std::unique_ptr<facebook::torcharrow::BaseColumn, std::default_delete<facebook::torcharrow::BaseColumn> >, facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::class_<facebook::torcharrow::SimpleColumn<long>, facebook::torcharrow::BaseColumn> facebook::torcharrow::declareNumericalType<(facebook::velox::TypeKind)4, long>(pybind11::module_&)::'lambda'(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&)&&, long (*)(facebook::torcharrow::SimpleColumn<long>&, facebook::torcharrow::BaseColumn const&), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::'lambda'(pybind11::detail::function_call&)::__invoke(pybind11::detail::function_call&) third-party-buck/platform009/build/pybind11/11419d1/include/pybind11/pybind11.h:170
    #10 0x7f49af1626ec in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) third-party-buck/platform009/build/pybind11/11419d1/include/pybind11/pybind11.h:782
    #11 0x7f49db76938e in cfunction_call_varargs /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:742:19
    #12 0x7f49db76938e in PyCFunction_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:772:16
    #13 0x7f49db758374 in _PyObject_MakeTpCall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:159:18
    #14 0x7f49db7743f5 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:125:16
    #15 0x7f49db7743f5 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:115:1
    #16 0x7f49db7743f5 in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #17 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #18 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #19 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #20 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #21 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #22 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #23 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #24 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #25 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #26 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #27 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #28 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #29 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #30 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #31 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #32 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #33 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #34 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #35 0x7f49db77833a in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #36 0x7f49db77833a in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #37 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #38 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #39 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #40 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #41 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #42 0x7f49db77408a in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #43 0x7f49db77408a in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:67:20
    #44 0x7f49db77833a in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #45 0x7f49db77833a in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #46 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #47 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #48 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #49 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #50 0x7f49db773fba in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #51 0x7f49db773fba in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #52 0x7f49db773fba in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #53 0x7f49db74f49c in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #54 0x7f49db74f49c in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #55 0x7f49db74f49c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3497:23
    #56 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #57 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #58 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #59 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #60 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #61 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #62 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #63 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #64 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #65 0x7f49db778441 in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #66 0x7f49db778441 in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #67 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #68 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #69 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #70 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #71 0x7f49db773fba in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #72 0x7f49db773fba in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #73 0x7f49db773fba in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #74 0x7f49db74af1f in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #75 0x7f49db74af1f in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #76 0x7f49db74af1f in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3543:19
    #77 0x7f49db773ee6 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #78 0x7f49db773ee6 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #79 0x7f49db773ee6 in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #80 0x7f49db773ee6 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #81 0x7f49db773ee6 in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #82 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #83 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #84 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #85 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #86 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #87 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #88 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #89 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #90 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #91 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #92 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #93 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #94 0x7f49db77408a in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #95 0x7f49db77408a in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:67:20
    #96 0x7f49db77833a in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #97 0x7f49db77833a in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #98 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #99 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #100 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #101 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #102 0x7f49db75771d in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #103 0x7f49db75771d in _PyObject_FastCallDict.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:96:15
    #104 0x7f49db76f261 in _PyObject_Call_Prepend.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:887:14
    #105 0x7f49db8531c7 in slot_tp_call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/typeobject.c:6553:15
    #106 0x7f49db758374 in _PyObject_MakeTpCall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:159:18
    #107 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:125:16
    #108 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:115:1
    #109 0x7f49db74f425 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #110 0x7f49db74f425 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #111 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #112 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #113 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #114 0x7f49db77408a in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #115 0x7f49db77408a in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:67:20
    #116 0x7f49db77833a in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #117 0x7f49db77833a in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #118 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #119 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #120 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #121 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #122 0x7f49db75771d in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #123 0x7f49db75771d in _PyObject_FastCallDict.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:96:15
    #124 0x7f49db76f261 in _PyObject_Call_Prepend.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:887:14
    #125 0x7f49db8531c7 in slot_tp_call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/typeobject.c:6553:15
    #126 0x7f49db758374 in _PyObject_MakeTpCall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:159:18
    #127 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:125:16
    #128 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:115:1
    #129 0x7f49db74f425 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #130 0x7f49db74f425 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #131 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #132 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #133 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #134 0x7f49db77408a in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #135 0x7f49db77408a in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:67:20
    #136 0x7f49db77833a in PyVectorcall_Call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:199:24
    #137 0x7f49db77833a in PyObject_Call.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:227:16
    #138 0x7f49db74c32c in do_call_core /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:5046:12
    #139 0x7f49db74c32c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3587:22
    #140 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #141 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #142 0x7f49db75771d in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #143 0x7f49db75771d in _PyObject_FastCallDict.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:96:15
    #144 0x7f49db76f261 in _PyObject_Call_Prepend.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:887:14
    #145 0x7f49db8531c7 in slot_tp_call /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/typeobject.c:6553:15
    #146 0x7f49db758374 in _PyObject_MakeTpCall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:159:18
    #147 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:125:16
    #148 0x7f49db74f425 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:115:1
    #149 0x7f49db74f425 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #150 0x7f49db74f425 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #151 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #152 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #153 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #154 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #155 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #156 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #157 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #158 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #159 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #160 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #161 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #162 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #163 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #164 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #165 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #166 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #167 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #168 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #169 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #170 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #171 0x7f49db773fba in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #172 0x7f49db773fba in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #173 0x7f49db773fba in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #174 0x7f49db74af1f in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #175 0x7f49db74af1f in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #176 0x7f49db74af1f in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3543:19
    #177 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #178 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #179 0x7f49db773fba in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #180 0x7f49db773fba in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #181 0x7f49db773fba in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #182 0x7f49db74af1f in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #183 0x7f49db74af1f in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #184 0x7f49db74af1f in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3543:19
    #185 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #186 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #187 0x7f49db773fba in _PyFunction_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #188 0x7f49db773fba in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #189 0x7f49db773fba in method_vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/classobject.c:60:18
    #190 0x7f49db74af1f in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #191 0x7f49db74af1f in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #192 0x7f49db74af1f in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3543:19
    #193 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #194 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #195 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #196 0x7f49db74a298 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #197 0x7f49db74a298 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #198 0x7f49db74a298 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3514:23
    #199 0x7f49db761d47 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #200 0x7f49db761d47 in function_code_fastcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:283:14
    #201 0x7f49db761d47 in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:410:20
    #202 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #203 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #204 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #205 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #206 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #207 0x7f49db81d7b3 in PyEval_EvalCodeEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4363:12
    #208 0x7f49db81d7b3 in PyEval_EvalCode.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:746:12
    #209 0x7f49db8250b9 in builtin_exec_impl /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/bltinmodule.c:1033:13
    #210 0x7f49db8250b9 in builtin_exec /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/clinic/bltinmodule.c.h:396:20
    #211 0x7f49db762758 in cfunction_vectorcall_FASTCALL /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/methodobject.c:422:24
    #212 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #213 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #214 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #215 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #216 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #217 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #218 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #219 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #220 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #221 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #222 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #223 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #224 0x7f49db74f49c in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #225 0x7f49db74f49c in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #226 0x7f49db74f49c in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3497:23
    #227 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #228 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #229 0x7f49db761ddb in _PyFunction_Vectorcall.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Objects/call.c:435:12
    #230 0x7f49db749f27 in _PyObject_Vectorcall /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////./Include/cpython/abstract.h:127:11
    #231 0x7f49db749f27 in call_function /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4999:13
    #232 0x7f49db749f27 in _PyEval_EvalFrameDefault /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:3528:19
    #233 0x7f49db748297 in PyEval_EvalFrameEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:769:12
    #234 0x7f49db748297 in _PyEval_EvalCodeWithName.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4334:14
    #235 0x7f49db81d7b3 in PyEval_EvalCodeEx /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:4363:12
    #236 0x7f49db81d7b3 in PyEval_EvalCode.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/ceval.c:746:12
    #237 0x7f49db82bab7 in run_eval_code_obj /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/pythonrun.c:1125:9
    #238 0x7f49db825741 in run_mod /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/pythonrun.c:1147:9
    #239 0x7f49db821677 in PyRun_StringFlags.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/pythonrun.c:1034:15
    #240 0x7f49db8214ab in PyRun_SimpleStringFlags.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Python/pythonrun.c:460:9
    #241 0x7f49db83c9c9 in pymain_run_command /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Modules/main.c:258:11
    #242 0x7f49db83c9c9 in pymain_run_python /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Modules/main.c:597:21
    #243 0x7f49db83c9c9 in Py_RunMain.localalias /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Modules/main.c:685:5
    #244 0x7f49db80ab2a in Py_BytesMain /home/engshare/third-party2/python/3.8/src/cpython-3.8//////////Modules/main.c:739:12
    #245 0x7f49db323d94 in __libc_start_main /home/engshare/third-party2/glibc/2.30/src/glibc-2.30/csu/../csu/libc-start.c:308:16
    #246 0x401069 in _start /home/engshare/third-party2/glibc/2.30/src/glibc-2.30/csu/../sysdeps/x86_64/start.S:120

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV velox/vector/BaseVector.h in facebook::velox::BaseVector::size() const
==192661==ABORTING

`to_arrow` doesn't work correctly on Map column

col = ta.Column([{"a": 1}, {"b1": 2, "b2": 3}])
col

0  {'a': 1}
1  {'b1': 2, 'b2': 3}
dtype: Map(string, int64), length: 2, null_count: 0

Result for to_arrow():

>>> col.to_arrow()
<pyarrow.lib.StructArray object at 0x7fcc78b432e0>
-- is_valid: all not null
-- child 0 type: int64
  [
    1,
    null
  ]
-- child 1 type: int64
  [
    null,
    2
  ]
-- child 2 type: int64
  [
    null,
    3
  ]

Any plan to support GPU?

Hi,

This looks like a really interesting project! I saw currently torcharrow runs on CPU with the Velox backend. Just wondering any plan to offload some of the ops to GPU? If exists, what's the technical path? Any plan to reuse the cudf/rapids library?

Thanks,
Jie

Misleading error message when using incorrect types for UDFs

When giving an UDF an unexpected/unsupported input type, the error msg is misleading. For example

import torcharrow as ta
from torcharrow import functional as F_eager

df = ta.dataframe(
    {
        "a": [x for x in range(5)],
        "b": [100 * x for x in range(5)],
        "label": [np.float32(x + 0.5) for x in range(5)],
        "label_str": [str(np.float32(x + 0.5)) for x in range(5)],
    }

)

print(F_eager.torcharrow_round(df["label"]))
print(F_eager.torcharrow_round(df["label_str"]))

The first one prints without any issue,

the second shows a

Request for unknown Velox UDF: torcharrow_round

since it doesn't expect a Column(str)

However, my first impression was to think that this method doesn't exist. Would be great if we could return something along the lines of "torcharrow_round exists, but only accepts int/floats/etc"

Supports More Operations for Recommendation Systems

Hi,

I noticed that some data preprocessing operations used in recommendation systems like bucketize, sigridHash, and firstX are implemented in: torcharrow/tree/main/csrc/velox/functions/rec

I would like to ask if other preprocessing operations for recommendation system be supported in the future?
For example, recent paper from Meta[1] mentioned 16 kinds of common preprocessing operations in the Table-11 including: bucketize, sigridHash, firstX, Cartesian, IdListTransform, BoxCox, MapId, and NGram.
Most of them are not supported now. Will these operations be supported in torcharrow in the future?

[1] Zhao, Mark, et al. "Understanding data storage and ingestion for large-scale deep recommendation model training: industrial product." Proceedings of the 49th Annual International Symposium on Computer Architecture. 2022.

Why does torcharrow use velox instead of acero (arrow compute)?

Hi guys,

Since torcharrow uses Arrow in-memory format to achieve zero-copy for external readers, I assume using acero is more intuitive, and the conversion from velox format to arrow format can avoid. So I am quite interested about why you choose velox instead of acero as the cpu backend?

Thanks!

Natively support creating a TorchArrow column from a numpy array

If users create a column from a Python list, we actually dispatch that directly to C++. For example,

vals = [1, 2, 3, 4, 5]
col = ta.Column(vals, device="cpu")

We dispatch that directly to C++ through pybind11:
https://github.com/facebookresearch/torcharrow/blob/d680bfdc0f6a6bb6c3a29c2a67d62006782d6558/csrc/velox/lib.cpp#L135-L141
However, if a user creates a column from a numpy array, we currently have to handle that (slowly) in Python. For example,

vals = [1, 2, 3, 4, 5]
arr = numpy.array(vals)
col = ta.Colmun(arr, device="cpu")

That will be handled only on the Python side:
https://github.com/facebookresearch/torcharrow/blob/d680bfdc0f6a6bb6c3a29c2a67d62006782d6558/torcharrow/scope.py#L226-L233
We should be able to handle numpy arrays natively in C++; pybind11 already exposes a numpy array type.

`to_arrow` doesn't work correctly on List(Struct) column

import torcharrow as ta
import torcharrow.dtypes as dt

a = ta.Column(
    [
        [(1, 1.1)],
        [(2, 2.2), (3, 3.3)],
        [],
        [(4, 4.4), (5, None)],
        [(6, 6.6)],
    ],
    dtype=dt.List(
        dt.Struct(
            [
                dt.Field("i", dt.Int64()),
                dt.Field("f", dt.Float32(nullable=True)),
            ]
        )
    ))

a.to_arrow()

Output :

>>> a.to_arrow()
<pyarrow.lib.ListArray object at 0x7fcc78b49520>
[
  [
    [
      1,
      1.100000023841858
    ]
  ],
  [
    [
      2,
      2.200000047683716
    ],
    [
      3,
      3.299999952316284
    ]
  ],
  [],
  [
    [
      4,
      4.400000095367432
    ],
    [
      5,
      null
    ]
  ],
  [
    [
      6,
      6.599999904632568
    ]
  ]
]

Type becomes List(List)

[API RFC] Support `IColumn.if_else` for Boolean Column

cond.if_else(a, b) -> IColumn, the output is defined as:

  • out_i = a_i if cond_i is True
  • out_i = b_i otherwise

API Demo

>>> import torcharrow as ta
>>> cond = ta.Column([True, False, True, True])
>>> a = ta.Column([1, 2, 3, 4])
>>> b = ta.Column([10, 20, 30, 40])
>>> cond.if_else(a, b)
0   1
1  20
2   3
3   4
dtype: int64, length: 4, null_count: 0

Current API

It's currently called ite in Boolean Column: https://github.com/facebookresearch/torcharrow/blob/0dbe14d399b766a2dfd596e35cb7843e7514ad59/torcharrow/icolumn.py#L848-L853

API in other frameworks

PyArrow

pyarrow.compute has if_else. Note instead of being a member function to BooleanArray, it's a standalone function in pyarrow.compute package that takes 3 arguments (cond, left, right)

Pandas

Doesn't seem to have same method?

NumPy/PyTorch/TensorFlow

NumPy provides np.where: https://numpy.org/doc/stable/reference/generated/numpy.where.html
PyTorch provides torch.where: https://pytorch.org/docs/stable/generated/torch.where.html
TensorFlow provides tf.where: https://www.tensorflow.org/api_docs/python/tf/where

R

ifelse as a standalone function: https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/ifelse

But in general, R seems to prefer standalone functions instead of fluent-style API.

Discussions

Shall we make ta.if_else as standalone function that takes 3 arguments in torcharrow package (rather than a member methods in BooleanColumn`)? -- This is similar to Arrow Compute, PyTorch and TensorFlow.

  • Standalone function (if_else(cond, x, y) ):
ta.if_else(a < 1, a, 1)

ta.if_else(
    tf.contains([1, 2, 3], a), 
    a, b
)
  • cond.if_else(x, y)
(a < 1).if_else(a, 1)

tf.contains([1, 2, 3], a).if_else(a, b)

Use Module `__getattr__` in `torcharrow.functional`

Follows torch.ops, torcharrow.functional creates a runtime module instead of a "physical" module.

The reason is torch.ops wants to override __getattr__ to support lazy loading customized ops, which is only supported for runtime module before Python 3.7

With Python 3.7, Module __getattr__ can is overridable natively. PyTorch plans to use module __getattr__ in torch.ops: pytorch/pytorch#72448.. torcharrow.functional should follow this :)

Remove command-line options of build_mac_dep.sh

/README.md tells us to install non-brew dependencies with the following command

scripts/build_mac_dep.sh ranges_v3 googletest fmt double_conversion folly re2

However, it seems easier to remove the command-line options.

scripts/build_mac_dep.sh

We can make build_mac_dep.sh to call the install_xxx functions for a fixed set of tools.

Does this make sense?

Efficient column construction from tuple

Column construction from list is optimized with native C++ code (for scalar types), e.g.

import torcharrow as ta
a = ta.Column([1, 2, 3])

This optimization is not done for tuple (so construction from tuple still has O(n^2) behavior ):

import torcharrow as ta
a = ta.Column((1, 2, 3))

Both Pandas and PyArrow supports that, so a feature we do want to keep:

>>> import pandas as pd
>>> a = pd.Series((1, 2, 3))
>>> a
0    1
1    2
2    3
dtype: int64

This is actually quite useful since sometimes user may create the data from a list of tuple using zip, e.g.

>>> a = [("a", 1), ("b", 2), ("c", 3)]
>>> list(zip(*a))
[('a', 'b', 'c'), (1, 2, 3)]

I guess the easiest way would be to convert Tuple to list in Python. Not sure the performance comparing with handle tuple in C++ directly.

Optimize creating DataFrame/struct column from a list of tuples

Motivation example (the actual dataset has two struct columns, with 13 and 26 fields respectively) :

dtype = dt.Struct(
    [
        dt.Field("labels", dt.int8),
        dt.Field("dense_features", dt.Struct([dt.Field("int_1", dt.int32), dt.Field("int_2", dt.int32)])),
    ]
)

df = ta.DataFrame(
    [
        (1, (0, 1)),    
        (0, (10, 11)), 
        # ~100 rows
    ],
    dtype=dtype)

The current implementation will first create an empty DataFrame, and then append each tuple:
https://github.com/facebookresearch/torcharrow/blob/f4fcfde9dde488276d11b04aa2a57df2835fee0b/torcharrow/scope.py#L292-L296

There are two inefficiencies with it:

  1. For each tuple, it will first converted into a dict (https://github.com/facebookresearch/torcharrow/blob/f4fcfde9dde488276d11b04aa2a57df2835fee0b/torcharrow/velox_rt/dataframe_cpu.py#L228-L232)
  2. Velox vector is immutable, thus each time a new Vector with size n+1 will be created, causing O(n^2) behavior.

One idea is to first create list per each column, and then calling the Column constructor when creating DataFrame/struct column. We still need to "transpose" the data in Python, but at least avoid expensive O(n^2) behavior.

Eliminate offset and length in BaseColumn

We should remove the _offset and _length in BaseColumn:
https://github.com/facebookresearch/torcharrow/blob/d680bfdc0f6a6bb6c3a29c2a67d62006782d6558/csrc/velox/column.h#L223-L224
There are multiple places where we do not properly track this, such as in expression evaluation:
https://github.com/facebookresearch/torcharrow/blob/d680bfdc0f6a6bb6c3a29c2a67d62006782d6558/csrc/velox/column.cpp#L236-L238
We should be able to not track these in the BaseColumn anymore without losing any functionality.

We also may want to support UDF evaluation for different offsets, such as:

a = ta.Column([1, 2, 3])
b = ta.Column([10, 20, 30])

a[:2] + b[2:]

Slicing the vector with the BufferView might be the right solution.

cc: @wenleix

Efficient kernel implementation for `IColumn.fill_null/drop_null`

For single colulmn, delegating to Arrow Array seems to be a good initial support.

Arrow array supports fill_null/drop_null.

So we can first call to_arrow, then calls fill_null/drop_null in Arrow array, and then converts back (from_arrow is working in progress)

This looks like a decent initial implementation.

Torchscript tracing

Can the transformations expressed in torcharrow be compiled into Torchscript, or are there plans to support this in the future?

Having a Pandas-like API that natively integrates with PyTorch seems like something with a lot of potential. One such application that comes to mind is that users will often write preprocessing (data transformation, feature engineering) using Pandas before sending that data to the PyTorch model for the forward pass. This creates a challenge for serving, as you need to perform these same transformations, but cannot easily trace them into the Torchscript graph.

This feature would be similar to what TensorFlow Transform provides in having a single API that can compile into both a batch processing backend or an inference graph.

Beta Release TODO Items Tracker

Creating a TODO list as we are approaching a beta release, feel free to edit or append items in your comments.

Repo

  • Move the torcharrow repo to pytorch

Documentation

  • Change README.md to reflect it's beta release
  • Fix whatever missing documents we have. @wenleix Feel free to add more detailed items.
    • torcharrow.istring_column.StringMethods substitution: #343 (comment)

Packaging

  • Refactor the wheel workflow to make it support both nightly build (automatic run) and release build (manually run)
  • (Optional) Fix velox dylib loading paths for conda build
    • macos
    • linux

LD warning when built on MacOS

[670/694] Linking CXX shared module csrc/velox/_torcharrow.cpython-38-darwin.so
ld: warning: direct access in function 'facebook::torcharrow::declareArrayType(pybind11::module_&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::ArrayType::elementType() const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::declareMapType(pybind11::module_&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapType::valueType() const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/MapConcat.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::declareMapType(pybind11::module_&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapType::keyType() const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/MapConcat.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::MapColumn::mapKeys()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapVector::sizeAt(int) const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Cardinality.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::MapColumn::mapKeys()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapVector::offsetAt(int) const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/MapConcat.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::MapColumn::mapValues()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapVector::sizeAt(int) const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Cardinality.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::MapColumn::mapValues()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::MapVector::offsetAt(int) const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/MapConcat.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::declareRowType(pybind11::module_&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::RowType::nameOf(unsigned int) const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/FromUnixTime.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::torcharrow::pybind11_init__torcharrow(pybind11::module_&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Type::kind() const' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<bool> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<bool> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<bool>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<bool>' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::setSize(unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::setSize(unsigned long)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::setSize(unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::setSize(unsigned long)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::setIsMutable(bool)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::setIsMutable(bool)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::AlignedBuffer::checkEndGuard() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::AlignedBuffer::checkEndGuard() const::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::copyFrom(facebook::velox::Buffer const*, unsigned long)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::Buffer::freeToPool()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::Buffer::freeToPool()::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)0>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::dynamic::ObjectMaker::ObjectMaker()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::detail::safe_assert_msg_cast_one' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)::__folly_detail_safe_assert_arg' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::detail::safe_assert_msg_cast_one' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::f14::detail::PackedChunkItemPtr<std::__1::pair<folly::dynamic const, folly::dynamic>**>::PackedChunkItemPtr(std::__1::pair<folly::dynamic const, folly::dynamic>**, unsigned long)::__folly_detail_safe_assert_arg' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ArrayVector::ArrayVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::ArrayVector::ArrayVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayDistinct.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ArrayVector::ArrayVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::ArrayVector::ArrayVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayDistinct.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<int> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<int> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<int>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<int>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)3>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::BaseVector::setNull(int, bool)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::BaseVector::setNull(int, bool)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<signed char> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<signed char> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<signed char>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<signed char>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)1>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<short> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<short> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<short>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<short>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)2>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<long long> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<long long> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<long long>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<long long>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)4>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<float> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<float> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<float>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<float>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)5>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<double> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<double> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<double>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<double>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)6>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<facebook::velox::StringView> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<facebook::velox::StringView> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<facebook::velox::StringView>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<facebook::velox::StringView>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)7>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::enable_if<(!(is_array<facebook::velox::FlatVector<facebook::velox::Timestamp> >::value)) && (!(is_array<facebook::velox::BaseVector>::value)), std::__1::shared_ptr<facebook::velox::FlatVector<facebook::velox::Timestamp> > >::type std::__1::dynamic_pointer_cast<facebook::velox::FlatVector<facebook::velox::Timestamp>, facebook::velox::BaseVector>(std::__1::shared_ptr<facebook::velox::BaseVector> const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<facebook::velox::Timestamp>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::TimestampType::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'unsigned long std::__1::__str_rfind<char, unsigned long, std::__1::char_traits<char>, 18446744073709551615ul>(char const*, unsigned long, char const*, unsigned long, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::Type const>::src_and_type(facebook::velox::Type const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::Type const>::src_and_type(facebook::velox::Type const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::Type const>::src_and_type(facebook::velox::Type const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::Type, std::__1::shared_ptr<facebook::velox::Type> >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::Type, std::__1::shared_ptr<facebook::velox::Type> >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::Type>::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)4>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)4> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)4>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)4>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)4> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)4>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)4>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)4> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)4> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)4>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::BaseVector::isNullAt(int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::BaseVector::isNullAt(int) const::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<long long>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<long long>' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<long long>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<long long>' from file 'csrc/velox/velox/velox/functions/lib/libvelox_functions_lib.a(Re2Functions.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<long long>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::BaseVector::move(int, int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::BaseVector::move(int, int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::BaseVector::move(int, int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::BaseVector::move(int, int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<long long>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<long long>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::BaseVector::copy(facebook::velox::BaseVector const*, int, int, int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::BaseVector::copy(facebook::velox::BaseVector const*, int, int, int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::F14ItemIter<folly::f14::detail::F14Chunk<unsigned int>*>::F14ItemIter(folly::f14::detail::F14Chunk<unsigned int>*, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::detail::safe_assert_msg_cast_one' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'folly::f14::detail::F14ItemIter<folly::f14::detail::F14Chunk<unsigned int>*>::F14ItemIter(folly::f14::detail::F14Chunk<unsigned int>*, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'folly::f14::detail::F14ItemIter<folly::f14::detail::F14Chunk<unsigned int>*>::F14ItemIter(folly::f14::detail::F14Chunk<unsigned int>*, unsigned long)::__folly_detail_safe_assert_arg' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/InPredicate.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<unsigned long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<unsigned long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<unsigned long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<unsigned long long>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<unsigned long long>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<unsigned long long>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<unsigned long long>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<unsigned long long>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<unsigned long long>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<unsigned long long>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<unsigned long long>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)3>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)3> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)3>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)3>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)3> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)3>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)3>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)3> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)3> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)3>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<int>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<int>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<int>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<int>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<int>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<int>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<int>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<int>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<int>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<int>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<int>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<int>* facebook::velox::BaseVector::asFlatVector<int>()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<int>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)2>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)2> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)2>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)2>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)2> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)2>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)2>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)2> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)2> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)2>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<short>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<short>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<short>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<short>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<short>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<short>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<short>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<short>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<short>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<short>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<short>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)1>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)1> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)1>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)1>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)1> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)1>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)1>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)1> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)1> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)1>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<signed char>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<signed char>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<signed char>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<signed char>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<signed char>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<signed char>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<signed char>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<signed char>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<signed char>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<signed char>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<signed char>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<signed char>* facebook::velox::BaseVector::asFlatVector<signed char>()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<signed char>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)0>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)0> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)0>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)0>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)0> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)0>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)0>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)0> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)0> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)0>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<bool>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<bool>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<bool>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<bool>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<bool>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<bool>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<bool>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<bool>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<bool>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<bool>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<bool>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)5>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)5> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)5>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)5>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)5> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)5>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)5>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)5> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)5> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)5>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<float>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<float>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<float>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<float>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<float>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<float>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<float>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<float>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<float>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<float>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<float>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<float>* facebook::velox::BaseVector::asFlatVector<float>()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<float>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)6>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)6> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)6>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)6>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)6> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)6>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)6>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)6> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)6> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)6>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<double>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<double>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<double>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<double>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<double>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<double>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<double>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<double>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<double>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<double>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<double>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/vector/libvelox_vector.a(BaseVector.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<double>* facebook::velox::BaseVector::asFlatVector<double>()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::FlatVector<double>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)7>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)7> > >::class_<pybind11::module_local>(pybind11::handle, char const*, pybind11::module_local const&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)7>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)7>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)7> > >::init_instance(pybind11::detail::instance*, void const*)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)7>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ScalarType<(facebook::velox::TypeKind)7>, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ScalarType<(facebook::velox::TypeKind)7> > >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::ScalarType<(facebook::velox::TypeKind)7> >::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::ScalarType<(facebook::velox::TypeKind)7>' from file 'csrc/velox/velox/velox/type/libvelox_type.a(Type.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<facebook::velox::StringView>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<facebook::velox::StringView>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ToUtf8.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<facebook::velox::StringView>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::FlatVector<facebook::velox::StringView>::FlatVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const> const&, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::vector<boost::intrusive_ptr<facebook::velox::Buffer>, std::__1::allocator<boost::intrusive_ptr<facebook::velox::Buffer> > >&&, folly::F14FastMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, folly::HeterogeneousAccessHash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, folly::HeterogeneousAccessEqualTo<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::optional<int>, std::__1::optional<int>, std::__1::optional<bool>, std::__1::optional<int>, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ToUtf8.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<facebook::velox::StringView>::equalValueAt(facebook::velox::BaseVector const*, int, int) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<facebook::velox::StringView>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<facebook::velox::StringView>::compare(facebook::velox::BaseVector const*, int, int, facebook::velox::CompareFlags) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::SimpleVector<facebook::velox::StringView>' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::FlatVector<facebook::velox::StringView>::hashAll() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'std::__1::nullopt' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/CoreFunctions.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::SimpleVector<facebook::velox::StringView>::resize(int)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'facebook::velox::SimpleVector<facebook::velox::StringView>::resize(int)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ToUtf8.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::__function::__func<std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&), std::__1::allocator<std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)>, std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)>::target(std::type_info const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayDistinct.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'std::__1::__function::__func<std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&), std::__1::allocator<std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)>, std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)>::target_type() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for std::__1::shared_ptr<facebook::velox::exec::VectorFunction> (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<facebook::velox::exec::VectorFunctionArg, std::__1::allocator<facebook::velox::exec::VectorFunctionArg> > const&)' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayDistinct.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::ArrayType, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::ArrayType> >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'pybind11::detail::type_caster_base<facebook::velox::Type const>::type_caster_base()' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::MapType, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::MapType> >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'void pybind11::class_<facebook::velox::RowType, facebook::velox::Type, std::__1::shared_ptr<facebook::velox::RowType> >::add_base<facebook::velox::Type, 0>(pybind11::detail::type_record&)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/lib.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::ScalarType<(facebook::velox::TypeKind)8>::serialize() const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'folly::dynamic::object()' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayIntersectExcept.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::RowVector::RowVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, std::__1::vector<std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::allocator<std::__1::shared_ptr<facebook::velox::BaseVector> > >, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'facebook::velox::RowVector::RowVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, std::__1::vector<std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::allocator<std::__1::shared_ptr<facebook::velox::BaseVector> > >, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/FromUnixTime.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::RowVector::RowVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, std::__1::vector<std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::allocator<std::__1::shared_ptr<facebook::velox::BaseVector> > >, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::Type' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/ArrayContains.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::RowVector::RowVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, std::__1::vector<std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::allocator<std::__1::shared_ptr<facebook::velox::BaseVector> > >, std::__1::optional<int>)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'facebook::velox::RowVector::RowVector(facebook::velox::memory::MemoryPool*, std::__1::shared_ptr<facebook::velox::Type const>, boost::intrusive_ptr<facebook::velox::Buffer>, unsigned long, std::__1::vector<std::__1::shared_ptr<facebook::velox::BaseVector>, std::__1::allocator<std::__1::shared_ptr<facebook::velox::BaseVector> > >, std::__1::optional<int>)::veloxCheckFailArgs' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/FromUnixTime.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'unsigned long std::__1::__str_rfind<char, unsigned long, std::__1::char_traits<char>, 18446744073709551615ul>(char const*, unsigned long, char const*, unsigned long, unsigned long)' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'std::__1::char_traits<char>::eq(char, char)' from file 'csrc/velox/velox/velox/functions/prestosql/CMakeFiles/velox_functions_prestosql.dir/Not.cpp.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::FieldAccessTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::FieldAccessTypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::FieldAccessTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::ITypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::CallTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::CallTypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::CallTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::ITypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::CastTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::CastTypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in function 'facebook::velox::core::CastTypedExpr::operator==(facebook::velox::core::ITypedExpr const&) const' from file 'csrc/velox/CMakeFiles/_torcharrow.dir/column.cpp.o' to global weak symbol 'typeinfo for facebook::velox::core::ITypedExpr' from file 'csrc/velox/velox/velox/expression/libvelox_expression.a(ExprCompiler.cpp.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.

[API RFC] TorchArrow CAST support

Use Case

In feature pre-processing we often needs to cast feature ID from int64 to int32. The cast often needs to recursively done for complex types, such as

  • List<int64> -> ARRAY<int32>, or even
  • Struct<list<int64>, array<float32>> -> struct<list<int32>, array<float32>>

It looks a good API to support in TorchArrow directly.

CAST in PyArrow/SQL

In ANSI SQL, CAST over array/row type is also defined to applied recursively into each elements. This is also the behavior of Presto.

Today PyArrow supports cast for PyArrow.Array. It works for List but not Struct. PyArrow developer confirmed it's planned to be supported . Here is the JIRA ticket: https://issues.apache.org/jira/browse/ARROW-1888 . See also discussion in mailing list

Proposal

TorchArrow supports IColumn.cast, and the cast will be done recursively per element for List/Struct, similar to PyArrow/SQL.

Current API

We currently have IColumn.astype and the current prototype only supports casts between numeric types: https://github.com/facebookresearch/torcharrow/blob/902f177a8002a71189dcddf931b8484c69a06c6d/torcharrow/icolumn.py#L235-L249

Similar API in other libraries:

cast seems to be a better name since in TorchArrow, the conversion is closer to PyArrow/SQL semantic and may not be trivial (e.g. it may cast from integer to string, or vice-versa). And cast suggests non-trivial conversion. The name to and astype seems to hint more trivial conversion (e.g. conversion between integer and float).

Default aggregation functions delegates to Arrow Compute

IColumn.sum/mean/std/median/quantile/mode/all/any: https://github.com/facebookresearch/torcharrow/blob/380e1cbaf334b49d52242596c79627d456ef3b0d/torcharrow/icolumn.py#L1206-L1292

Also remove the Python implementation in cpu backend (if there is). Since once zero-copy interop with Arrow is implemented, it's more efficient to use Arrow Compute. Eventually we probably want to directly use the aggregation implementation in Velox.

Example delegation of min/max: #52

Efficient kernel implementation for `drop_duplicates` and `sort`

For single colulmn, delegating to Arrow Array seems to be a good initial support. Similar to #64 and #53

Arrow arrays supports unique: https://arrow.apache.org/docs/python/generated/pyarrow.compute.unique.html#pyarrow.compute.unique

>>> import pyarrow as pa

>>> a = pa.array([1, 2, 3, 2])
>>> a.unique()
<pyarrow.lib.Int64Array object at 0x7f89a065ed00>
[
  1,
  2,
  3
]

For sort, looks like first needed to get sorting indexing, and then reorder the elements: https://arrow.apache.org/docs/python/api/compute.html#sorts-and-partitions, and then use array selection methods: https://arrow.apache.org/docs/python/api/compute.html#selections

>>> import pyarrow as pa
>>> import pyarrow.compute as pac

>>> a = pa.array([1, 5, 7, 3, 2])
>>> pac.take(a, pac.array_sort_indices(a))
<pyarrow.lib.Int64Array object at 0x7f89a065edc0>
[
  1,
  2,
  3,
  5,
  7
]

Incorrect type inference for `np.int32` and `np.float64`

>>> import torcharrow as ta
>>> import numpy as np
>>> ta.Column([np.int32(1), np.int32(2), np.int32(3), np.int32(4)])
0  1
1  2
2  3
3  4
dtype: int64, length: 4, null_count: 0

>>> ta.Column([np.float64(1), np.float64(2), np.float64(3), np.float64(4)])
0  1
1  2
2  3
3  4
dtype: float32, length: 4, null_count: 0

Modifying nested column will have no effect

To reproduce:

import torcharrow as ta
import torcharrow.dtypes as dt
dtype = dt.Struct(
    [
        dt.Field("labels", dt.int8),
        dt.Field("dense_features", dt.Struct([dt.Field("int_1", dt.int32), dt.Field("int_2", dt.int32)])),
    ]
)
df = ta.DataFrame(
    [
        (1, (0, 1)),
        (0, (10, 11)),
        (1, (20, 21)),
    ],
    dtype=dtype)

Now df looksl like:

>>> df
  index    labels  dense_features
-------  --------  ----------------
      0         1  (0, 1)
      1         0  (10, 11)
      2         1  (20, 21)
dtype: Struct([Field('labels', int8), Field('dense_features', Struct([Field('int_1', int32), Field('int_2', int32)]))]), count: 3, null_count: 0

Try to change df["dense_features"]["int_1"] (and failed):

>>> df["dense_features"]["int_1"] = df["dense_features"]["int_1"] + 1
>>> df
  index    labels  dense_features
-------  --------  ----------------
      0         1  (0, 1)
      1         0  (10, 11)
      2         1  (20, 21)
dtype: Struct([Field('labels', int8), Field('dense_features', Struct([Field('int_1', int32), Field('int_2', int32)]))]), count: 3, null_count: 0

For now, the work around is to first get the nested DF out, apply the transformation, and then put it back:

https://github.com/facebookresearch/torcharrow/blob/6d2bca82e65f74193360bd06c5ab4f8c761c5342/torcharrow/test/integration/test_criteo.py#L149-L157

The problem is DataFrameCpu._set_field_data generates a new RowVector and copy the column vector pointer -- for a nested RowVector, it only updates the leaf level struct but doesn't propagate upwards: https://github.com/facebookresearch/torcharrow/blob/6d2bca82e65f74193360bd06c5ab4f8c761c5342/torcharrow/velox_rt/dataframe_cpu.py#L310-L329

Creating a new RowVector seems necessary, since assigning column to DataFrame may change the children column type. One idea would be allowing the wrapped RowColumn to change the delegated RowVector (e.g. something like self._data._reset_data(new_delegate)) . -- Basically DataFrame is a thin wrapper and everything is in RowColumn.

For this to work, DataFrame.dtype should always use the underlying Velox Vector's type as groundtruth.

Our code is so good it can never fail... broken test logic

Authored by @damianr99 . Copied into GitHub issues to have more OSS context.

Stumbled upon a rather dangerous anti-pattern in some of our tests:

c1 = ta.Column(["x",...])
c2 = ta.Column(["y",...])
self.assertEqual(c1 == c2, [True, False, True, None, None])

This assertEqual will always pass, even when c1 and c2 are different or our comparison operator is broken. This is because of the operator overloading of ==. Evaluation goes something like:

c1 == c2 -> ta.Column([False,...])
self.assert(first,second) -> if not first == second
                          -> if not ta.Column([False,...]) == [True, False, ...]

this second == inside self.assert again use the overloaded == again, evaluating to another ta.Column. So not of it is always true.
The fix here is to make sure we first convert IColumn to a python list before passing it to assertEqual to ensure we don't use the overloaded comparison operator inside the assert.

self.assertEqual(list(c1 == c2), [True, ...])

Overloading operators the way we do makes this mistake very easy to make and non-obvious it's wrong.

Native kernel binding for cast in CPU backend

Native kernel binding for cast in CPU backend

Background: TorchArrow Native Kernel Dispatch

For efficiency, a lot of TorchArrow operations (e.g. INumerialColumn.abs()) is dispatched to the Velox C++ native kernel. A Velox native kernel is represented by a compiled Velox ExprSet, which can be evaluated over the RowVector that represents input data.

As a concrete example, here is the lifecycle how NumerialColumnCpu.abs() get dispatched in CPU backend:

  1. The abs operation is delegated to NumerialColumnCpu._data.abs(), here:
    https://github.com/facebookresearch/torcharrow/blob/7510a2d09f6d58c8b8b7493fe6d64925ff59b0ff/torcharrow/velox_rt/numerical_column_cpu.py#L598-L601

NumerialColumnCpu._data is a SimpleColumnXXX (e.g. SimpleColumnBIGINT: see this PYI file) binded here: https://github.com/facebookresearch/torcharrow/blob/7510a2d09f6d58c8b8b7493fe6d64925ff59b0ff/csrc/velox/lib.cpp#L102-L103

  1. This calls into SimpleColumnBIGINT.abs (and also for other numeric types), which binds to C++ method here: https://github.com/facebookresearch/torcharrow/blob/7510a2d09f6d58c8b8b7493fe6d64925ff59b0ff/csrc/velox/lib.cpp#L355

  2. The actual implementation of SimpleColumn<T>::abs in C++: https://github.com/facebookresearch/torcharrow/blob/7510a2d09f6d58c8b8b7493fe6d64925ff59b0ff/csrc/velox/column.h#L459-L465

which mainly consists of two steps:

Native Kernel Binding for cast

TorchArrow today contains a prototype implementation for cast, which essentially convert the data into Python object and performing the cast: https://github.com/facebookresearch/torcharrow/blob/7510a2d09f6d58c8b8b7493fe6d64925ff59b0ff/torcharrow/icolumn.py#L238-L253

We want to leverage native Velox kernel to do the cast. Essentially we want to have native cast method SimpleColumn<T>::cast_to_XXX(), similar to SimpleColumn<T>::abs(), binding it to Python and let NumericalColumnCpu.cast delegates to NumericalColumnCpu._data.castXXX.

Cast is not modelled as a function call in Velox. So instead of creating CallTypedExpr, we need to create CastTypedExpr this time. Here is an example that constructs CastTypedExpr in TorchArrow codebase.

Thoughts To Start With

  • We can start with native cast method with hard-coded type (e.g. SimpleColumn<T>::cast_to_int8), and have an end-to-end development experience, and later the refactor to cast method takes Type as input parameter.
  • We can start with only numerical casts by overriding NumericColumn.cast in Python

References:

Consolidation of the type of operations

When it comes to the type system of numerical binary operations (including the return type of the operation and the type promotion rule), there are still some discrepancy between TA's behavior and PyTorch's, which we should try our best to follow that of PyTorch. For example, when the binary op of a boolean tensor is called with an integer scalar (e.g. boolTensor + 3), PyTorch promotes it to integer, whereas when it's an integer tensor or float tensor PyTorch always honor the type of the tensor ([PR#] is an example for how to fix this). As we are to onboard more users onto TA we should catch all such type behavior discrepancies and fix them or document them to have the behaviors finalized as early as possible.

Another example is PyTorch uses float32 instead of float64 as the default float type, which we already had work to give a stab to match this behavior, but we may still need a thorough testing to find places we missed.

High level this problem can be approached in two steps:
Writing comprehensive tests to validate type behaviors, covering, for example, all type promotion cases. The intension is to find all discrepancies between TA and PyTorch
Fix as many of the discrepancies as possible and document what cases are treated differently in TA and PyTorch

illegal hardware instruction when running tests on a fresh install on OS X

Following the instructions in the README to build and test torcharrow leads to an illegal hardware instruction error on OS X 10.15.7. I'm running on 2.9 GHz Dual-Core Intel Core i7 (i386).

(torcharrow-dev) โžœ  torcharrow git:(main) python -m unittest -v

test_ArrayColumnInt64 (torcharrow.test.lib_test.test_column.TestArrayColumns) ... [1]    29649 illegal hardware instruction  python -m unittest -v

Access to non-exist column in DF result in very unfriendly error msg

To reproduce:

import torcharrow as ta
df = ta.DataFrame({"a": [1, 2, 3]})

df["b"]

Output

>>> df["b"]
E20211112 13:52:55.454295 207011328 Exceptions.h:68] /Users/wxie/Code/torcharrow/csrc/velox/velox/velox/type/Type.cpp273getChildIdxindex.has_value()Field not found: bUSERINVALID_ARGUMENT
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/wxie/Code/torcharrow/torcharrow/trace.py", line 98, in wrapped
    res = fn(*args, **kwargs)
  File "/Users/wxie/Code/torcharrow/torcharrow/icolumn.py", line 289, in __getitem__
    return self.get_column(arg)
  File "/Users/wxie/Code/torcharrow/torcharrow/velox_rt/dataframe_cpu.py", line 301, in get_column
    idx = self._data.type().get_child_idx(column)
RuntimeError: Exception: VeloxUserError
Error Source: USER
Error Code: INVALID_ARGUMENT
Reason: Field not found: b
Retriable: False
Expression: index.has_value()
Function: getChildIdx
File: /Users/wxie/Code/torcharrow/csrc/velox/velox/velox/type/Type.cpp
Line: 273
Stack trace:

Looks like we didn't check the existence of a column

Unable to invoke functional.hasIdOverlap

Hello, I'm using build 0.0.5a0.dev20220628 and attempting to run:

c1 = ta.column([[0,1],[2]])
c2 = ta.column([[0], [1,3]])
ta.functional.hasIdOverlap(c1, c2)

These columns have dtype List(int64), but the hasIdOverlap functional returns an error. Do you know why this functional is dispatching to a bigint instead of int64_t?

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_4904/1743280752.py in <module>
      1 c1 = ta.column([[0,1],[2]])
      2 c2 = ta.column([[0], [1,3]])
----> 3 ta.functional.hasIdOverlap(c1, c2)

/opt/conda/envs/rapids/lib/python3.8/site-packages/torcharrow/functional.py in _dispatch(op_name, *args)
     51     # dispatch to backend functional namespace
     52     op = get_backend_functional(dispatch_key).__getattr__(op_name)
---> 53     return op(*args)
     54 
     55 

/opt/conda/envs/rapids/lib/python3.8/site-packages/torcharrow/velox_rt/functional.py in dispatch(*args)
     37                     wrapped_args.append(ta.ConstantColumn(arg, length))
     38 
---> 39             result_col = ta.generic_udf_dispatch(op_name, *wrapped_args)
     40             # Generic dispatch always assumes nullable
     41             result_dtype = result_col.dtype().with_null(True)

RuntimeError: Request for unknown Velox UDF: hasIdOverlap(array<bigint>,array<bigint>)

Remove experimental batching/unbatching API

https://github.com/facebookresearch/torcharrow/blob/64014481d942229ca5d9222fe4532a29b2628da3/torcharrow/icolumn.py#L1727-L1744

This is an experimental prototype API. However since customized batching in deep learning can be quite adhoc (e.g. https://github.com/pytorch/data/blob/cbd19f01fe92b7039583ea9fff29df2c6a898a9c/torchdata/datapipes/iter/transform/bucketbatcher.py#L28-L34), it's beyond DataFrame API's scope to handle it and should be handled by DataLoader instead.

Support apache-datafusion

Datafusion https://github.com/apache/arrow-datafusion is the subproject of apache arrow

I can do ta.from_arrow(pa.Table.from_batches( datafusion_dataframe.collect()) for now to

  1. convert datafusion's dataframe to arrow batch record
  2. convert arrow batch record to pyarrow table
  3. use ta.from_arrow to load it

wonder whether this is interesting for you to support datafusion's dataframe directly via

ta.from_datafusion( datafusion_dataframe )

Support for arrays in torcharrow.from_arrow

Hi guys!
When trying to use ParquetDataFrameLoader I ran across a problem when trying to load parquet file if it has an array field. It looks like it comes down to torcharrow.from_arrow not supporting array columns. But it seems that torcharrow already has support for array columns. Are there any plans to implement it when loading from parquet files or are there any problems which stop this from being implemented?

The error basically looks like this:

NotImplementedError                       Traceback (most recent call last)
Input In [25], in <cell line: 1>()
----> 1 next(iter(datapipe))

File /opt/conda/lib/python3.8/site-packages/torch/utils/data/datapipes/_typing.py:514, in hook_iterator.<locals>.wrap_generator(*args, **kwargs)
    512         response = gen.send(None)
    513 else:
--> 514     response = gen.send(None)
    516 while True:
    517     request = yield response

File /opt/conda/lib/python3.8/site-packages/torch/utils/data/datapipes/iter/combinatorics.py:127, in ShufflerIterDataPipe.__iter__(self)
    125 self._rng.seed(self._seed)
    126 self._seed = None
--> 127 for x in self.datapipe:
    128     if len(self._buffer) == self.buffer_size:
    129         idx = self._rng.randint(0, len(self._buffer) - 1)

File /opt/conda/lib/python3.8/site-packages/torch/utils/data/datapipes/_typing.py:514, in hook_iterator.<locals>.wrap_generator(*args, **kwargs)
    512         response = gen.send(None)
    513 else:
--> 514     response = gen.send(None)
    516 while True:
    517     request = yield response

File /opt/conda/lib/python3.8/site-packages/torchdata/datapipes/iter/util/dataframemaker.py:138, in ParquetDFLoaderIterDataPipe.__iter__(self)
    135 for i in range(num_row_groups):
    136     # TODO: More fine-grain control over the number of rows or row group per DataFrame
    137     row_group = parquet_file.read_row_group(i, columns=self.columns, use_threads=self.use_threads)
--> 138     yield torcharrow.from_arrow(row_group, dtype=self.dtype)

File /opt/conda/lib/python3.8/site-packages/torcharrow/interop.py:32, in from_arrow(data, dtype, device)
     30     return _from_arrow_array(data, dtype, device=device)
     31 elif isinstance(data, pa.Table):
---> 32     return _from_arrow_table(data, dtype, device=device)
     33 else:
     34     raise ValueError

File /opt/conda/lib/python3.8/site-packages/torcharrow/interop_arrow.py:86, in _from_arrow_table(table, dtype, device)
     83     field = table.schema.field(i)
     85     assert len(table[i].chunks) == 1
---> 86     df_data[field.name] = _from_arrow_array(
     87         table[i].chunk(0),
     88         dtype=(
     89             # pyre-fixme[16]: `DType` has no attribute `get`.
     90             dtype.get(field.name)
     91             if dtype is not None
     92             else _arrowtype_to_dtype(field.type, field.nullable)
     93         ),
     94         device=device,
     95     )
     97 return dataframe(df_data, device=device)

File /opt/conda/lib/python3.8/site-packages/torcharrow/interop_arrow.py:37, in _from_arrow_array(array, dtype, device)
     28 assert isinstance(array, pa.Array)
     30 # Using the most narrow type we can, we (i) don't restrict in any
     31 # way where it can be used (since we can pass a narrower typed
     32 # non-null column to a function expecting a nullable type, but not
   (...)
     35 # increase the amount of places we can use the from_arrow result
     36 # pyre-fixme[16]: `Array` has no attribute `type`.
---> 37 dtype_from_arrowtype = _arrowtype_to_dtype(array.type, array.null_count > 0)
     38 if dtype and (
     39     dt.get_underlying_dtype(dtype) != dt.get_underlying_dtype(dtype_from_arrowtype)
     40 ):
     41     raise NotImplementedError("Type casting is not supported")

File /opt/conda/lib/python3.8/site-packages/torcharrow/_interop.py:205, in _arrowtype_to_dtype(t, nullable)
    199 if pa.types.is_struct(t):
    200     return dt.Struct(
    201         # pyre-fixme[16]: `DataType` has no attribute `__iter__`.
    202         [dt.Field(f.name, _arrowtype_to_dtype(f.type, f.nullable)) for f in t],
    203         nullable,
    204     )
--> 205 raise NotImplementedError(f"Unsupported Arrow type: {str(t)}")

NotImplementedError: Unsupported Arrow type: list<element: float>
This exception is thrown by __iter__ of ParquetDFLoaderIterDataPipe()

array_constructor does not work for more than 4 arguments

my df consists of int_0 through int_12 for, I'm trying to turn these into an array of features, however

df["dense_features"] = functional.array_constructor(
*[df[int_name] for int_name in DEFAULT_INT_NAMES]
)

fails with

Traceback (most recent call last):
  File "/home/ylgh/torchrec/examples/torcharrow/dataloader.py", line 52, in <module>
    df = criteo_preproc(df)
  File "/home/ylgh/torchrec/examples/torcharrow/dataloader.py", line 35, in criteo_preproc
    df["dense_features"] = functional.array_constructor(
  File "/home/ylgh/anaconda3/envs/torchrec/lib/python3.9/site-packages/torcharrow/_functional.py", line 54, in dispatch
    return op(*args)
  File "/home/ylgh/anaconda3/envs/torchrec/lib/python3.9/site-packages/torcharrow/velox_rt/functional.py", line 39, in dispatch
    result_col = ta.generic_udf_dispatch(op_name, *wrapped_args)
TypeError: generic_udf_dispatch(): incompatible function arguments. The following argument types are supported:
    1. (arg0: str, arg1: torcharrow._torcharrow.BaseColumn) -> torcharrow._torcharrow.BaseColumn
    2. (arg0: str, arg1: torcharrow._torcharrow.BaseColumn, arg2: torcharrow._torcharrow.BaseColumn) -> torcharrow._torcharrow.BaseColumn
    3. (arg0: str, arg1: torcharrow._torcharrow.BaseColumn, arg2: torcharrow._torcharrow.BaseColumn, arg3: torcharrow._torcharrow.BaseColumn) -> torcharrow._torcharrow.BaseColumn
    4. (arg0: str, arg1: torcharrow._torcharrow.BaseColumn, arg2: torcharrow._torcharrow.BaseColumn, arg3: torcharrow._torcharrow.BaseColumn, arg4: torcharrow._torcharrow.BaseColumn) -> torcharrow._torcharrow.BaseColumn

Invoked with: 'array_constructor', <torcharrow._torcharrow.SimpleColumnREAL object at 0x7f5844733270>, <torcharrow._torcharrow.SimpleColumnREAL object at 0x7f585895c1b0>, <torcharrow._torcharrow.SimpleColumnREAL object at 0x7f58590af7b0>, <torcharrow._torcharrow.SimpleColumnREAL object at 0x7f58590afa30>, <torcharrow._torcharrow.SimpleColumnREAL object at 0x7f58590afaf0>

Based on this, it seems that it only supports up to 4 args.
When I restrict it down to this DEFAULT_INT_NAMES[:4], it works

Support `maxsplit` in `IStringColumn.str.split`

Removed in https://github.com/facebookresearch/torcharrow/pull/20/files#r728401859, since I thought the expected behavior is to discard data after maxsplit, but actually both Python and Pandas is to combine with suffix:

>>> "a b c d e".split(sep=" ", maxsplit=2)
['a', 'b', 'c d e']
a = pd.Series(['1 2 3 4 5'])
a.str.split(' ', n = 2)

0    [1, 2, 3 4 5]
dtype: object

We can support it with Velox's split + limit: https://facebookincubator.github.io/velox/functions/string.html#id1

Note in Python/Pandas, the maxsplit means "Maximum number of splits to do". -- so the result array is with length maxsplit+1.

See implementation example, e.g. StringMethodsCpu.slice: https://github.com/facebookresearch/torcharrow/blob/64014481d942229ca5d9222fe4532a29b2628da3/torcharrow/velox_rt/string_column_cpu.py#L182-L191

cc @damianr99

Remove numeric related method from String/List/Map columns

>>> import torcharrow as ta
>>> a = ta.Column(['a', 'b'])
>>> help(a)

It shows some numeric related methods , although it's a string column:

...
 |  __neg__(self)
 |      Vectorized: -a.
...
 |  __pos__(self)
 |      Vectorized: +a.
 |
 |  __pow__(self, other)
 |      Vectorized a ** b.
...
 |  cumsum(self)
 |      Return cumulative sum of the data.
...
 |  sum(self)
 |      Return sum of all non-null elements.
 |
 |      Examples
 |      --------
 |      >>> import torcharrow as ta
 |      >>> s = ta.Column([1,2,None,4])
 |      >>> s.sum()
 |      7
...
 |  floor(self)
 |      Rounds each value downward to the largest integral value
...

Those methods will throw when execute on string column.
We should move these methods interface into INumericColumn. Otherwise it's confusing for these methods to also show in string/list/map columns.

Does torcharrow support industry-level large scale data?

I`m asking for myself, and also my algo team members in company.
Currently we got PB level of data, which is separated in parquets across different remote hdfs paths (per day), and need to be trained.

Really wish to get an answer for this question: How well performed is torcharrow for this level of data in industry?

  • Does it download -> store then release couple remote parquets, or just transferring data through network without any local caching?
  • How well does it handle enormously large scale dataset? From TB-level to PB-level, maybe even EB level? Is it a performant solution when compared to other solutions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.