All Implemented Interfaces:
Closeable, AutoCloseable, Operator, Releasable

public class EvalOperator extends AbstractPageMappingOperator
Evaluates functions for every position in the block, resulting in a new block which is appended to the page.
┌──────┬──────────┬────────────┐    ┌──────┬──────────┬────────────┬─────────────┐
│  ref │ class    │ discovered │    │  ref │ class    │ discovered │ day_of_week │
├──────┼──────────┼────────────┤    ├──────┼──────────┼────────────┼─────────────┤
│  173 │ Euclid   │ 1993-01-01 │    │  173 │ Euclid   │ 1993-01-01 │ Friday      │
│ 2317 │ Keter    │ 1922-01-01 │    │ 2317 │ Keter    │ 1922-01-01 │ Sunday      │
│ 2639 │ Euclid   │ 2010-01-01 │ -> │ 2639 │ Euclid   │ 2010-01-01 │ Friday      │
│ 3000 │ Thaumiel │ 1971-01-01 │    │ 3000 │ Thaumiel │ 1971-01-01 │ Friday      │
│ 3001 │ Euclid   │ 2000-01-02 │    │ 3001 │ Euclid   │ 2000-01-02 │ Sunday      │
│ 5000 │ Safe     │ 2020-12-04 │    │ 5000 │ Safe     │ 2020-12-04 │ Friday      │
└──────┴──────────┴────────────┘    └──────┴──────────┴────────────┴─────────────┘

ExpressionEvaluators are the things that actually evaluate the function. They form a tree. ADD(LENGTH(class) + DATE_EXTRACT("year", discovered)) looks like:

                    ┌─────┐
                    │ ADD │
                    └──┬──┘
       ┌───────────────┴───────────────┐
       ▼                               ▼
  ┌────────┐                    ┌──────────────┐
  │ LENGTH │                    │ DATE_EXTRACT │
  └────┬───┘                    └──────┬───────┘
       │                    ┌──────────┴──────────┐
       ▼                    ▼                     ▼
┌─────────────┐    ┌─────────────────┐  ┌──────────────────┐
│ LOAD(class) │    │ LITERAL("year") │  │ LOAD(discovered) │
└─────────────┘    └─────────────────┘  └──────────────────┘

And it evaluates like:

┌──────┬──────────┬────────────┐    ┌──────┬──────────┬────────────┬────────┐
│  ref │ class    │ discovered │    │  ref │ class    │ discovered │ result │
├──────┼──────────┼────────────┤    ├──────┼──────────┼────────────┼────────┤
│  173 │ Euclid   │ 1993-01-01 │    │  173 │ Euclid   │ 1993-01-01 │   1999 │
│ 2317 │ Keter    │ 1922-01-01 │    │ 2317 │ Keter    │ 1922-01-01 │   1927 │
│ 2639 │ Euclid   │ 2010-01-01 │ -> │ 2639 │ Euclid   │ 2010-01-01 │   2016 │
│ 3000 │ Thaumiel │ 1971-01-01 │    │ 3000 │ Thaumiel │ 1971-01-01 │   1979 │
│ 3001 │ Euclid   │ 2000-01-02 │    │ 3001 │ Euclid   │ 2000-01-02 │   2006 │
│ 5000 │ Safe     │ 2020-12-04 │    │ 5000 │ Safe     │ 2020-12-04 │   2024 │
└──────┴──────────┴────────────┘    └──────┴──────────┴────────────┴────────┘