opt: don't mark st_makeline and st_extend as non-null#86722
Merged
craig[bot] merged 1 commit intocockroachdb:masterfrom Aug 25, 2022
Merged
opt: don't mark st_makeline and st_extend as non-null#86722craig[bot] merged 1 commit intocockroachdb:masterfrom
craig[bot] merged 1 commit intocockroachdb:masterfrom
Conversation
`st_makeline` can take arguments of type `POINT`, `MULTIPOINT`, and `LINESTRING`. Other types cause it to return null (even if the input is non-null). Similarly, `st_extent` returns null when the input geometry is non-null, but empty. This commit prevents these two aggregate functions from being marked as non-null, since doing so can lead to incorrect results in the cases mentioned above. Fixes cockroachdb#84957 Release justification: low-risk fix to bug that can lead to incorrect results Release note (bug fix): Fixed a longstanding bug that could cause the optimizer to produce an incorrect plan when aggregate functions `st_makeline` or `st_extent` were called with invalid-type and empty inputs respectively.
Member
mgartner
approved these changes
Aug 24, 2022
Contributor
mgartner
left a comment
There was a problem hiding this comment.
Reviewed 2 of 2 files at r1, all commit messages.
Reviewable status:complete! 1 of 0 LGTMs obtained (waiting on @DrewKimball)
pkg/sql/opt/operator.go line 388 at r1 (raw file):
case VarianceOp, StdDevOp, CorrOp, CovarSampOp, RegressionInterceptOp, RegressionR2Op, RegressionSlopeOp, STExtentOp, STMakeLineOp: // These aggregations can return NULL even with non-null input values.
Oh nice, we already have a mechanism for this. Good find!
Collaborator
Author
|
TFTR! bors r+ |
Contributor
|
Build failed (retrying...): |
Contributor
|
Build succeeded: |
Closed
Collaborator
Author
|
blathers backport 22.1 |
Collaborator
|
let's also do 21.2 blathers backport 21.2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
st_makelinecan take arguments of typePOINT,MULTIPOINT, andLINESTRING. Other types cause it to return null (even if the input isnon-null). Similarly,
st_extentreturns null when the input geometry isnon-null, but empty.
This commit prevents these two aggregate functions from being marked as
non-null, since doing so can lead to incorrect results in the cases
mentioned above.
Fixes #84957
Release justification: low-risk fix to bug that can lead to incorrect results
Release note (bug fix): Fixed a longstanding bug that could cause the optimizer
to produce an incorrect plan when aggregate functions
st_makelineorst_extentwere called with invalid-type and empty inputs respectively.