For code in planner/core/find_best_task.go, I can’t quiet get the sense of comment above compareCandidates function.
// compareCandidates is the core of skyline pruning. It compares the two candidate paths on three dimensions: // (1): the set of columns that occurred in the access condition, // (2): whether or not it matches the physical property // (3): does it require a double scan. // If `x` is not worse than `y` at all factors, // and there exists one factor that `x` is better than `y`, then `x` is better than `y`.
Can you provide more detail examples to clarify these 3 requirements?