-
Notifications
You must be signed in to change notification settings - Fork 6k
planner: fix incorrect estRows with global index and json column (#55842) #55924
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
planner: fix incorrect estRows with global index and json column (#55842) #55924
Conversation
Signed-off-by: ti-chi-bot <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release-8.1 #55924 +/- ##
================================================
Coverage ? 71.2154%
================================================
Files ? 1466
Lines ? 423067
Branches ? 0
================================================
Hits ? 301289
Misses ? 101303
Partials ? 20475
Flags with carried forward coverage won't be shown. Click here to find out more.
|
Signed-off-by: Weizhen Wang <[email protected]>
/retest |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: hawkingrei, time-and-fate The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
[LGTM Timeline notifier]Timeline:
|
/retest |
This is an automated cherry-pick of #55842
What problem does this PR solve?
Issue Number: close #55818
Problem Summary:
What changed and how does it work?
Because the JSON column will be without stats by default, the row count will be 0. But when calculating selectivity, we cannot divide by zero. it will get NaN row count.
why is the result wrong?
It will return
NaN
fromSelectivity
and break all stats info byds.TableStats.Scale(selectivity)
Final, The problem will be created at the
joinReorderGreedySolver.solve
->constructConnectedJoinTree
checkConnectionAndMakeJoin
will create a right join plan. but when to calculate the cost, it will getNaN
because of the pollute stats info. we cannot get best join because ofNan > math.MaxFloat64
.makeBushyJoin
will not consider theEqCondtion
. Many condition will lose. This is the reason why it will get wrong result.Check List
Tests
Due to incorrect statistics, the filter condition was completely removed.
before
after
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.