Merged PRs
dolt
- 10188: Added JWT support for metrics endpoint authorization.
- 10184: removed doltgres index implementation
This change removes doltgres-specific index logic from Dolt and fixes various bugs in index lookup and type conversion logic that were preventing doltgres from using the unified index logic in the first place.
See: dolthub/doltgresql#2093 - 10159: Add
adapters.TableAdapterto handledolt_statusand other table conversions for integrators (a.k.a. Doltgres)
A recent change to cherry-pick tests requireddolt_statusto display its staged column as abytetype to overcome MySQL's wire protocol being unable to distinguish Boolean types. This had the side affect of breaking Doltgres. This fix adds Dolt system table adapters for integrators (i.e. Doltgres).adapters.TableAdapterallows for tables in general to be wrapped or overwritten with different implementations.- Add
adapters.TableAdapterto allow integrator's to overwrite or wrap existing table implementations. - Add
adapters.DoltTableAdapterRegistryto automatically integrate said table adapters for Dolt system table through an interface available to integrators. - Remove explicit
SUPERUSERprivilege check indolt_purge_dropped_databasesas this should be handled by integrators. - Remove authentication handling in
dolt_backupfor Doltgres; now handled by dolthub/doltgresql#2068.
- Add
- 10097: #10030:
--filtercontribution fordolt diff
Author @codeaucafe
Add--filteroption todolt diff, enabling filtering by specific change types and fixing issues from the earlier stalled PR (#3499).Users reviewing large diffs often need to focus on specific change types - deletes may need extra scrutiny while inserts are routine. With diffs spanning thousands of rows across multiple tables, grep isn't enough since updates show
both additions and deletions.
Close #10030dolt diff --filter=added # new tables/rows dolt diff --filter=modified # schema changes, row updates dolt diff --filter=renamed # renamed tables dolt diff --filter=dropped # dropped tables, deleted rows dolt diff --filter=removed # alias for dropped dolt diff HEAD~1 --filter=dropped -r sql
Fix #1430 - 10030: dolt/dolthub#1430: Add
--filteroption for dolt diff
There was no action on the original #3499 for issue #1430; the PR was closed ~3 years ago. This PR fixes the open PR comments and updates the implementation details a bit for the RowWriting of filtered rows
go-mysql-server
- 3336: Return a helpful error message when attempting to use a table function where a non-table function is expected.
Previously, we would return a "function not found" error, which was confusing and misleading.
Fixes #10187 - 3334: Index lookup type conversion issues
This PR addresses type conversion semantics during key lookups. Some type conversions were insufficient for Doltgres, and some were simply incorrect, notably the behavior when a value being converted was out of range, which could produce incorrect results.
Other fixes addressed:- New
ExecBuilderNodeinterface to allow Doltgres to correctly use the custom builder overrides when building row iters - Corrected behavior for
INandNOT INused in index lookups for doltgres
Tests for some of these changes only exist in Doltgres, will address before merging.
See: dolthub/doltgresql#2093
- New
- 3333: fix overflow indexed table access
There's a bug where filtering by a key that overflows the index column type results in incorrect lookups.
When converting the key type to the column type, we ignore in OutOfRange results, and use the max/min of the corresponding type. As a result, we perform lookups using the wrong key.
Changes:sql.Convert()returns if the conversion result isInRange,Overflows, orUnderflows.- Reduce number of potential ranges by ignoring impossible ones.
- Fixes
HashInto handle overflowing keys. - Added tests for out of range key conversions.
- 3332: Fix create view error message
This fixes: #10177 - 3331: Introduce notion of conditional equivalence sets in FDS for optimizing outer joins.
Fixes #9520
In Functional Dependency Analysis, equivalence sets are sets of columns which have been determined to always be equal to each other. During join planning, we walk the join tree, read the join filters, and use these filters to compute equivalence sets which can inform the analysis.
However, we currently only look at filters on inner joins, because filters on outer joins do not unconditionally imply equivalence.
For example, in the following join query:It cannot be said thatSELECT * FROM table_one LEFT JOIN table_two ON table_one.one = table_two.two
table_one.oneandtable_two.twohave equal values in the output. Any of the following are valid rows in the final output:table_one.one table_two.two 1 1 1 NULL NULL NULL In order to record this filter and include it in FDS, we need to tweak the definition of equivalence sets slightly. This PR adds conditional equivalence sets, which consist of two column sets: conditional columns and equivalent columns. A conditional equivalence set should be interpreted as: "IF at least one of the columns in conditional is not null, THEN all of the columns in equivalent are equal." This matches the behavior of left joins. We could implement regular equivalence sets as conditional equivalence sets with an empty conditional, but this PR keeps them separate to avoid complicating existing logic. It's worth noting that we deliberately don't check if the columns are non-null at the time that the equivalence set is created. This is deliberate, because when equivalence sets are inherited by parent nodes, this can change for outer joins, and when evaluating whether a join can be implemented as a lookup, we analyze the child node using filters and equivalence sets from the parent, but with the child's nullness information. Thanks to Angela, who worked on the investigation with me, wrote the original version of this feature (dolthub/go-mysql-server#3288), and wrote the plan test for this PR.
vitess
- 445: /go/vt/sqlparser: support float8
- 444: go/mysql: server.go: Add a callback on Handler, ConnectionAuthenticated, which is called immediately after the connection is authenticated.
This allows a server implementation to know the authenticated user without waiting for the first command interactions, such as ComQuery or ComInitDB.
Closed Issues
- 10174: Does Dolt Support Minio Storage for Remotes and Backups?
- 10059: Incorrect collation returned by case expression
- 10187: Using a table function where a non-table function is expected results in confusing "function not found" error
- 10157: Unexpected ANTI JOIN Result
- 1430:
dolt diffshould support--filteroption - 10136: DOLT_BACKUP Restore Requires Existing Database Context and Service Restart to Recognize New Database
Note on Incompatibility
- Dolt 1.79.0 has support for new sql-server config parameters. Due to the strict yaml parser used for server configuration, a 1.79.0 config will not work with older versions of Dolt.