Merged PRs
dolt
- 9568: added TestTimeQueries
- 9564: #9556 - Fix JSON path parsing for unnecessarily quoted field names
Fixes #9556
Fixed dolt's JSON path parser to accept unnecessarily quoted field names like $."a".
The issue was in the lexer logic that incorrectly detected empty quoted strings when processing unnecessarily quoted simple field names. - 9562: go: sqle: auto_gc.go: Add some simple ergonomics to Auto GC.
Previously auto gc would run anytime the store had grown 128MB. This change adds some simple heuristics which are used to keep auto gc from running when it is unlikely to collect much relative to the amount of work it will need to do.
In particular, the heuristics added are:- After GC has run, we will not run another GC until as much time as elapsed since the end of the GC as it took to run the GC itself.
- After GC has run, we will not run another GC until the store has grown in size by at least as many bytes as the new gen contained at the end of the last successful GC run.
- 9553: implement reversed merge_joins
companion pr: dolthub/go-mysql-server#3108
go-mysql-server
- 3116: fix panic in stats histogram union and intersect
I'm not 100% how to repro this, but there is definitely something up with the Union and Intersect logic in stats histograms.
Based on the stack trace, there's a panic when attempting to Union histogram buckets.
It seems like the logic assumes that the histogram keys are always shorter than the number of buckets.
This PR fixes the Union and Intersect logic to compare the keys without the assumption, and adds some unit tests.
fixes: #9143 - 3115: Bug fix: correctly parse/resolve trigger definitions across multiple databases
- 3113: Fix double counted time delta when converting time zones
Fixes #9555
We were double counting timezone differences because we did not take the time object's location into account when calculating the time delta.
Time conversion util functions work how they're supposed to. This fix relies on the incorrect behavior to get the correct time.
TODO: redo how we do time conversions and use time. We often ignore the location a given time object is set in and we frequently arbitrarily set the location to UTC even when it's not.
Also movedinternal/time/time.go
tosql/time.go
to avoid import cycle. - 3111: Enum and set conversions in comparison.Compare
Fixes #9510
Fixes #9468
part of #9469 - 3110: Use child column id's for union when assigning exec indexes
Fixes #9516
SetOp is a TableIdNode so ColumnIds were assigned based off SetOp.cols, which is a ColSet. However, ColSet stores ColumnIds as a bitmap, not in the order they appear, and iterates over them in increasing numerical order. This causes a problem when the ColumnIds are not arranged in increasing order.
For example, in(select 'parent' as tbl, id, words from t union select 'child' as tbl, id, words from t2) as combined
, the ColumnIds are3, 1, 2
but ColSet iterates over them as1, 2, 3
. As a result,combined.id
gets wrongly assigned the field index of0
, the wrong column is compared in the filter, and an empty result is returned.
This was fixed by adding a case for SetOp where ColumnIds are assigned based on the left child (a Project node for the above example).
Added TODOs:- It may not be necessary for SetOp to be a TableIdNode. It seems kinda hacky that it is.
- ColumnIds for TableIdNode probably shouldn't be assigned based on ColSet.ForEach (increasing order) since that might not reflect the actual order they are in.
create table as select...
currently failing in Doltgres (dolthub/doltgresql#1669)
- 3108: remove unnecessary sort over merge joins
This PR looks for Sort nodes over merge joins and removes them when applicable.
benchmarks: #9553
partially addresses: #8728