Conversation
|
CI doesn't like your changes |
32526d0 to
60bf738
Compare
|
CI is happy now. 😄 |
| * determines another. Approximate numerics and intervals are unsafe, | ||
| * including when nested in rows, collections, or maps. | ||
| */ | ||
| private static boolean typeSupportsGroupKeyInference(RelDataType type) { |
There was a problem hiding this comment.
why are intervals unsafe?
There was a problem hiding this comment.
They are safe, it was an oversight from my side 😓
I see Calcite normalises intervals under the hood. I will remove this check for intervals.
|
| } | ||
|
|
||
| /** | ||
| * Copies input dependencies into a join, optionally filtering dependencies |
There was a problem hiding this comment.
I don't understand this javadoc. Can you please say what each parameter is and what the function actually computes? There's no "join" to be seen of here.
|
|
||
| /** | ||
| * Returns whether a dependency's determinant contains a non-nullable input | ||
| * field. Such a determinant cannot collide with the all-NULL determinant of |
There was a problem hiding this comment.
why does this comment mention a LEFT JOIN? There is no left join here. Please make the comment describe this function does.
| * @param fdSet Functional dependency set | ||
| * @param offset Index offset | ||
| * @return Shifted functional dependency set | ||
| * Adds functional dependencies implied by a join condition. |
There was a problem hiding this comment.
where does it add the dependencies?
| * Extracts functional dependencies from equality and AND conditions. | ||
| * Handles col1 = col2, col1 IS NOT DISTINCT FROM col2, and AND conditions. | ||
| * Adds bidirectional dependencies for input-reference equalities in a | ||
| * condition. Callers are responsible for ensuring that every output row |
There was a problem hiding this comment.
every output row of what?



Jira Link
CALCITE-7757
Changes Proposed
RelMdFunctionalDependency can currently expose unsound or incorrectly indexed dependencies, allowing AggregateRemoveDuplicateKeysRule to remove grouping keys that are still required.
This change:
A basic valid duplicate-key removal remains supported:
For this inner join, either equivalent equality key may be removed. The new safeguards prevent that reasoning from being applied where null generation, ordinal mapping, or non-reflexive type semantics make it unsound.
Testing
The focused test run completed 49 tests with 0 failures.