|
As of now the code in primitives/linux-port/column.cpp uses ParsedColumnFilter structure that has two shared_array attributes:
- prestored_argVals to store columns that less then 8 byte.
- prestored_argVals128 to store columns that are 16 byte wide.
Consider ParsedColumnFilter for a float column. It uses prestored_argVals that is an array of int64_t to store float values. This forces 2 extra assignment statements in colCompareDispatcherT for all integral types. This also calls for an explicit cast, e.g. (float*)(&prestored_argVals.get()[i]) in a vectorized filter path. Such casts introduces future issues for big-endian platforms.
|