Expression that can be "pushed" into value loading. Most of the time
we load values into Blocks and then run the expressions on them, but
sometimes it's worth short-circuiting this process and running the expression
in the tight loop we use for loading:
V_COSINE(vector, [constant_vector]) - vector is ~512 floats
and V_COSINE is one double. We can find the similarity without any
copies if we combine.
ST_CENTROID(shape) - shapes can be quite large. Centroids
are just one point.
LENGTH(string) - strings can be quite long, but string length
is always an int. For more fun, keywords are usually stored
using a dictionary, and it's fairly easy to optimize
running LENGTH once per dictionary entry.
MV_COUNT(anything) - counts are always integers.
MV_MIN and MV_MAX - loads much fewer data for
multivalued fields.
The field and loading configuration that replaces this expression, effectively
"fusing" the expression into the load. Or null if the fusion isn't possible.