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.
Created by
brew bump
Created with
brew bump-formula-pr
.release notes
Fixes
dolt clone
can include extraneous remote refs dolthub/dolt#7043 for the CLI.dolt_clone() procedure has not been touched by this PR.
Fixes new tags not automatically being pushed to remote for remote primary dolthub/dolt#7375
dolt_statistics
tableNew flatbuffer type for statistics, which contains an address reference to a prolly.Map with a hardcoded statistics schema. Statistics for a table are rewritten every ANALYZE TABLE call.
Because the statistics schema is client-dependent, backwards compatibility will be fairly brittle right now. We could use a version identifier to invalidate a set of statistics if the client code creating a sql engine has a different version than the statistics read from disk.
go-mysql-server
Swapped out the library used in the CountDistinct aggregation function, as it would hash decimals to the same value.
Correctness: test dolthub/dolt#7374
Fixes Unexpected Results when Using
BETWEEN AND
afterCREATE INDEX
dolthub/dolt#7260This was ultimately caused by Internal comparisons consider NULL values higher than non-NULL values dolthub/go-mysql-server#1903. I didn't think it was possible for that issue to cause user-facing problems, but I was wrong. Because of that issue, RangeHeapJoins considered all NULL values in its children iterators to come after all non-NULL values. However, if the child node was an index, then the child iterator would order its rows with the NULL values first. This causes the RangeHeapIterator to mismanage the heap and skip rows that should have been in the results.
I updated the range heap code to manually check for NULL values when manipulating the heap. I also updated the plan tests to include NULL values in the test tables, which should now catch this issue.
Consider a query
SELECT * from t where b = 1 and c = 1
and two indexes,(a,b,c)
and(b,c)
. We want to use the(b,c)
index as a lookup, because(a,b,c)
will be disjoint on a(b,c)
key. This PR fixes index costing to record and prefer non-zero prefix matches. We only differentiate zero and non-zero cases here because it is easier and I think pretty reliable.When merge joins are a join operator for a memo group, use the two indexes in the merge to estimate the join cardinality. Small updates so that join cardinality estimates work in the coster. A few tests that make use of join statistics. The tests are affected both by stat estimates and costing methodology. It's a bit hard to separate the two, since more accurate stat estimates so often identify issues with costing. The join statistic tests are subject to shifting based on whether the smallest table is estimated to be smaller than the smallest join cardinality estimate. Better tests would be less subject to noise. Tests for avoiding anti-patterns for specific join operators would also be useful.
Closed Issues
dolt clone
can include extraneous remote refsBETWEEN AND
afterCREATE INDEX