-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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 that vector index output empty result when pk is non-int type #57629
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #57629 +/- ##
================================================
+ Coverage 72.7988% 73.5972% +0.7984%
================================================
Files 1677 1677
Lines 463954 465868 +1914
================================================
+ Hits 337753 342866 +5113
+ Misses 105320 102272 -3048
+ Partials 20881 20730 -151
Flags with carried forward coverage won't be shown. Click here to find out more.
|
if prop.VectorProp.VectorHelper != nil && path.Index != nil && path.Index.VectorInfo != nil { | ||
if path.Index == nil || path.Index.VectorInfo == nil { | ||
return false | ||
} | ||
if ds.TableInfo.Columns[path.Index.Columns[0].Offset].ID != prop.VectorProp.Column.ID { | ||
return false | ||
} | ||
|
||
if model.IndexableFnNameToDistanceMetric[prop.VectorProp.DistanceFnName.L] != path.Index.VectorInfo.DistanceMetric { | ||
return false | ||
} | ||
return true | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed it to the highest priority.
Because when for the vector index path, the IsIntHandlePath
can also be true. We need to use a new way to check the real pk path.
/retest |
1 similar comment
/retest |
if index.VectorInfo != nil { | ||
// Because the value of `TiFlashReplica.Available` changes as the user modify replica, it is not ideal if the state of index changes accordingly. | ||
// So the current way to use the vector indexes is to require the TiFlash Replica to be available. | ||
if !tblInfo.TiFlashReplica.Available { | ||
continue | ||
} | ||
path := genTiFlashPath(tblInfo) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel that the original logic is different here set up "tablePath. IsCommonHandlePath = true". What does this setting do? Why is the original logic not needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A normal index will create the index's ranges.
But the vector index still uses the table range. So we need to correctly set the pk type. So it can generate the correct table range.
For int pk, it will use [MinInt64, MaxInt64
] as full range. But for other cases, [MinNotNull, MaxValue]
will be full range.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…irectly displayed by default behavior (pingcap#57626) close pingcap#57625
dead388
to
eca8aca
Compare
/retest |
/test fast_test_tiprow |
/test fast_test_tiprow |
@ti-chi-bot[bot]: The specified target(s) for
Use
In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
ccdd1e0
to
ccb08e7
Compare
/retest |
/test all |
/retest |
/test all |
// Avoid adding CTE table to the SELECT privilege list, maybe we have better way to do this? | ||
if _, ok := b.nameMapCTE[t.Name.L]; !ok { | ||
b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, t.Name.L, "", nil) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why should we need this for? any direct effect from the issue?
@winoros: The following test failed, say
Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: AilinKid, breezewish 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:
|
In response to a cherrypick label: new pull request created to branch |
What problem does this PR solve?
Issue Number: close #57627
Problem Summary:
What changed and how does it work?
When pk is clustered and non-int, the full range should be
[MinNotNull, MaxValue]
. But it's[MinInt64, MaxInt64]
currently. So it will output an empty result.Check List
Tests
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.