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
We had a typo in the check constraint merging code that was only triggered when an existing check constraint was altered on the "source" side of the merge and the "destination" side of the merge had the exact same definition as the common ancestor. The new test shows a concrete example. Note that the schema merge tests run in both directions, from left to right, and from left to right, so they are better at catching bugs like this that only appear in one merge direction.
Allows
dolt log
to be called outside of dolt reposFixes an issue with adding and using multiple profiles
go-mysql-server
I missed a place where we were using getField indexes to do a correlation check. This adds the changes necessary to replace that check with one that uses a subquery's tracked correlation column set. This also adds an expression id column to GetField expression that preserves the id tracking information between iterative passes of the analyzer. It would probably be preferable to avoid all cases where we unnecessarily re-run rules, but this is more near at hand.
The json_array_insert() and json_array_append() methods are in the family of other mutation functions (set,insert,replace,remove).
Related: Support for JSON modification functions dolthub/dolt#6585
Summary:
fixidx
usages inpushdownFilters
andgenerateIndexScans
close
SHOW FULL PROCESSLIST;
causes panic dolthub/dolt#6625fixes: invalid type: double since 1.13.5 dolthub/dolt#6610
Earlier PR (JSON Mutation dolthub/go-mysql-server#1983) enabled us to modify json document objects, but none of that functionality was exposed as actual JSON_* functions. This change ties it together. The following functions will behave identically to MySQL (to the best of my knowledge).
Related: Support for JSON modification functions dolthub/dolt#6585
Purely mechanical refactor done by the IDE. This is in preparation for adding support for several more JSON functions.
In cases where the filter expression changed during push down because the column IDs changed, we were accidentally checking for expressions with the new column IDs, not the old ones, so the old filter expressions weren't being removed.
For instance, dolt has Commit indexes for tables that use commit hash as an index, but ranges don't make sense for those.
There's no equivalent in GMS, so I created "point_lookup_table" table function for use in tests.
Name binding stores caching information upfront. Rule interdependencies pushed me into fixing a bunch of other rules before tests would pass. All together I think most of the changes are simplifications that I was planning on doing related to the
fixidx
refactor. I was hoping to make it more piecemeal. Hopefully this gets us ~50% of the way towards removing those dependencies.fixidx
is mostly contained toreorderJoins
andfixAuxiliaryExpressions
now, both near the end of analysis. If we move the indexing inreorderJoins
intofixAuxiliaryExpressions
, all indexing will happen at the end of analysis. That would let us index complicated joins with subqueries correctly and all queries more reliably.summary:
moveFiltersOutOfJoinConditions
to put filters below join when appropriatefixAuxiliaryExpresssions
at end of analysisAdd JSON Value mutation operations and tests. These changes do not alter the operation of dolt in anyway yet - that will come in a second PR which updates the JSON_SET procedure, and adds support for the JSON_REPLACE, JSON_INSERT, and JSON_REMOVE procedures at the same time. This is laying the foundation for that work.
This will skip a tree walk for most queries, inlining the rule in the places where nested table aliases can occur during binding.
The previous implementation had an issue where it assumed the type used in the received IndexLookup, but this type can actually depend on exactly how the lookup was generated (and whether the bounds value was parsed from the query or generated internally.) This caused a panic if it was used in Lookup joins.
This makes no such assumptions and adds extra tests.
This should fix Choose most selective index for Merge Join. dolthub/dolt#6020 once finished, and then some.
The killer new feature in this new join planner is "Multi-Column Merge Joins", that is, merges where the comparison used for merges incorporates multiple filter conditions. This allows us to, in some cases, choose a much more selective index for merge joins. This improves both memory usage and performance because there will be fewer cases where the join iterator needs to keep multiple secondary rows in memory and cross-join them with multiple primary rows.
The algorithm goes like this:
I added a test in
join_planning_tests
that demonstrates the potential of this new algorithm, allowing us to select a better index that otherwise allowed.Closed Issues
SHOW FULL PROCESSLIST;
causes panic