github dolthub/dolt v0.50.15
0.50.15

latest releases: v1.43.3, v1.43.2, v1.43.1...
23 months ago

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 like dolt log A B --not $(dolt merge-base --all A B)
    This PR supports providing multiple arguments to dolt 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:
    // 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.
    
    This is only relevant for expression that reference aggregations, which is somewhat curious. So for example, in select x/y, x/count(y) from x, the x/y expression is executed entirely in the child aggregation node. x/count(y) is separated into two steps, 1) evaluate count(y) and passthrough x, and then evaluate arithmetic x/count(y) in the parent projection. The error here is we were failing to expose the x 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:
    1. 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.
    2. 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 the ErrEmptyCachedResult 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 on VARCHAR and CHAR text types despite not actually using the prefix for lookups. This PR allows dolt 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 for ROUND and FLOOR 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

Don't miss a new dolt release

NewReleases is sending notifications on new releases.