Merged PRs
dolt
- 4730: go/comands/docs: Update dolt docs commands with new names
- 4698: adding tests for index prefix errors
Companion PR: dolthub/go-mysql-server#1371 - 4697: warning instead of error for unix socket address already in use when starting sql server
depends on dolthub/go-mysql-server#1372 - 4691: Support three dot log
CLI:
dolt log main...branchA
dolt log main branchA --not $(dolt merge-base main branchA)
SQL:
dolt_log('main...branchA')
- 4686: Prisma compatibility smoke testing
Prisma is a popular ORM library for TypeScript/JavaScript applications, with around 25k GitHub stars.
This PR extends our nascent ORM testing image to run a simple smoke test for Prisma.
Next, we need to get these tests running as part of CI and would be great to do deeper testing with Prisma and other ORM libraries, ideally running their test suites against a Dolt sql-server. - 4683: fix decimal result print
Some queries result in decimal type result, but sqlType gets numberType with int or float. Any decimal type result value is now printed as decimal value regardless of its sqlType returned from schema.
Depends on dolthub/go-mysql-server#1365 - 4681: Allow supplying multiple start/excluding refs to dolt log
For three dot log we need to support supplying multiple starting points/excluding refs to the commit iterators, so that we can do something likedolt log A B --not $(dolt merge-base --all A B)
This PR supports providing multiple arguments todolt log
:
dolt log A B
dolt log A B ^C
dolt log A ^B ^C
dolt log A --not B C
go-mysql-server
- 1394: Fix test determinism
- 1392: Insert dependency passthrough cols inbetween aggregation and projection
Re: #4735
Aggregation flattening dropped passthrough column dependencies, causing the parent Projection to throw GetField resolve errors.
From the new docstring:
This is only relevant for expression that reference aggregations, which is somewhat curious. So for example, in// The aggregation node must provide input dependencies for parent projections. // Each parent expression can depend on zero or many aggregation expressions. // There are two basic kinds of aggregation expressions: // 1) Passthrough columns from scope input relation. // 2) Synthesized columns from in-scope aggregation relation.
select x/y, x/count(y) from x
, thex/y
expression is executed entirely in the child aggregation node.x/count(y)
is separated into two steps, 1) evaluatecount(y)
and passthroughx
, and then evaluate arithmeticx/count(y)
in the parent projection. The error here is we were failing to expose thex
passthrough to the parent operator that evaluated the division. - 1390: allow decimal values for
mod
operation
%
can be operated on decimal values. - 1388: Fix groupby on decimal col failing
See detailed discussion here. - 1386: more error checks for prefix lengths
improves errors when creating prefix indexes - 1383: Moved privilege caching to session
This accomplishes two things:- This changes how we cache privilege sets. The previous behavior was fine for the existing feature set, but it didn't support roles all too well. Right now all roles are applied to any user that they're assigned to, but in a future PR roles will be selectable (like they are in MySQL). Role selection is at the session level, so it makes sense that the cached privilege set is also at the session level. It's straightforward to update a sesson's roles and invalidate the cache in the same place.
- If an integrator wanted to see what privileges a session had, then they'd need to query the engine, which meant keeping a reference to the engine in multiple places. Now, they just query the session on the context, which they're already passing around.
- 1382: Flag for finished but empty CachedResult
Hashed joins can have a CachedResult that filters to zero rows. We currently try to recompute the map every time when we find a nil result. This adds a short-circuit both to the CachedResult, and the parent join (n x 0 = 0). Every RowIter that attempts to re-rowIter a cachedResult that can be zero now should check for theErrEmptyCachedResult
sentinel. This is only possible in joinIter currently. - 1381: Adding support for setting 'ANSI' as a
sql_mode
Fixes: #4663 - 1372: allow server to start if unix socket file path is in use without unix socket set up
- 1371: improve errors for invalid index prefixes
We currently allow specifying prefix lengths on primary and secondary keys defined onVARCHAR
andCHAR
text types despite not actually using the prefix for lookups. This PR allowsdolt
to throw the right errors.
Additionally, we also allow specifying prefix lengths for non-string columns, which doesn't make sense.
Hopefully nobody has created tables that depend on this buggy behavior. - 1365: division
/
operation result in decimal type except for float type column reference
Division operator,/
, always results in decimal type value. Only exception is that if there is float type column reference on either side of the operator, it should result in float type value.
Added decimal.Decimal type handling forROUND
andFLOOR
functions
Closed Issues
- 4746: A CI/CD Observability Solution Suggestion
- 4715: LAST_VALUE window function seems not quite right
- 4653: panic on
dolt table import -u --continue
- 4684: GROUP BY on decimal type column gives incorrect result
- 4584: arithmetic on integers should default to float
- 4680: Make Dolt's default unix socket creation best effort
- 4663: Support for setting ANSI SQL mode
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.08 | 17.01 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.89 | 3.5 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.26 | 62.19 | 2.1 |
types_table_scan | 70.55 | 189.93 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.68 | 11.65 | 3.2 |
oltp_insert | 1.86 | 2.66 | 1.4 |
oltp_read_write | 5.47 | 16.71 | 3.1 |
oltp_update_index | 1.89 | 5.18 | 2.7 |
oltp_update_non_index | 1.86 | 5.37 | 2.9 |
oltp_write_only | 2.71 | 7.98 | 2.9 |
types_delete_insert | 3.75 | 15.55 | 4.1 |
writes_mean_multiplier | 2.7 |
Overall Mean Multiple | 2.6 |
---|