Consider:
typedef struct Memoize
{
Plan plan;
int numKeys; /* size of the two arrays below */
Oid *hashOperators; /* hash operators for each key */
Oid *collations; /* cache keys */
List *param_exprs; /* exprs containing parameters */
...
I think the comment "cache keys" is weird here. Maybe it was copied from
typedef struct MemoizePath
{
Path path;
Path *subpath; /* outerpath to cache tuples from */
List *hash_operators; /* hash operators for each key */
List *param_exprs; /* cache keys */
...
but it's attached to a different field there.
Is this a mistake, or could this be clarified?