Skip to content

Releases: dolthub/dolt

1.43.19

02 Dec 07:20
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8612: go/store/nbs: Fixing GCGen to be more correct.
    The original purpose of gc gen was two fold. The first purpose was to avoid applying the garbage collection results if the store had changed due to multi-process concurrency for any reason. The second purpose was to fast-complete a dolt gc invocation if the store had not changed at all since the last GC run.
    For the first purpose, it is no longer necessary. We no longer allow multi-process access to the same NomsBlockStore.
    For the second purpose, it was implemented slightly incorrectly, given the introduction of dolt gc --full. This change fixes the implementation to be more correct.
    In particular, the semantics are:
    • After a dolt gc --full, an immediate invocation of dolt gc or dolt gc --full fast-completes as no collection being necessary.
    • After a dolt gc, only a dolt gc fast-completes as no collection being necessary. A dolt gc --full will run a full GC to completion.

go-mysql-server

  • 2765: increase column size for information_schema.processlist.state
    The State column in our information_schema.processlist table is different than the MySQL implementation because we include progress information. As a result, it is possible to exceed the 64 character limit that the column is defined as.
    However, thius means deviating from MySQL's definition of the table.
  • 2762: Add schema to StatsQualifier for schema databases

Closed Issues

  • 8385: Permissions / branch control incorrect for branch-qualified database names

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.11 0.62 0.3
groupby_scan 13.22 16.71 1.3
index_join 1.37 2.26 1.6
index_join_scan 1.27 1.44 1.1
index_scan 34.33 54.83 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.37 1.5
select_random_points 0.34 0.65 1.9
select_random_ranges 0.39 0.65 1.7
table_scan 34.95 55.82 1.6
types_table_scan 74.46 147.61 2.0
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.9 6.21 0.7
oltp_insert 4.1 3.07 0.7
oltp_read_write 9.06 11.65 1.3
oltp_update_index 4.18 3.13 0.7
oltp_update_non_index 4.18 3.07 0.7
oltp_write_only 5.67 6.21 1.1
types_delete_insert 8.43 6.55 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 96.58 40.39 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.18

28 Nov 01:25
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8600: Add testing for show slave status
    This syntax is deprecated and will be removed in future MySQL versions (SHOW REPLICA STATUS should be preferred instead). However, some tools (e.g. Dolphie, MyDumper) still rely on this deprecated syntax, so we're adding support for it to keep compatibility with those tools.
    Depends on:
  • 8596: go/store/nbs: table_index.go: Improve support for large table files.
    Support suffix arrays larger than 4GB by avoiding uint32 overflows when matching chunk suffixes.
  • 8595: replace nil defaults with empty string
    Needed for dolphie.
  • 8590: system variables cannot have nil defaults
    related: #8585 (comment)
  • 8589: Fix dolt_statistics table for multiple schemas for doltgres
    GMS PR: dolthub/go-mysql-server#2762
  • 8561: [kvexec] merge join
    This isn't the best perf win on linux, but it counteracts the sql.Row interface PR which otherwise would swing merge join +30% in the wrong direction.
    goos: darwin
    goarch: arm64
    pkg: github.com/dolthub/dolt/go/performance/microsysbench
    │  before.txt  │           after.txt           │
    │    sec/op    │    sec/op     vs base         │
    OltpJoinScan-12   680.6µ ± 26%   612.1µ ± 17%  ~ (p=0.240 n=6)
    │  before.txt  │              after.txt              │
    │     B/op     │     B/op      vs base               │
    OltpJoinScan-12   163.8Ki ± 0%   123.8Ki ± 0%  -24.42% (p=0.002 n=6)
    │ before.txt  │             after.txt              │
    │  allocs/op  │  allocs/op   vs base               │
    OltpJoinScan-12   5.906k ± 0%   4.233k ± 0%  -28.33% (p=0.002 n=6)
    
    TODO:
    • left join
    • nulls and other edge cases
    • execute full comparer

go-mysql-server

vitess

  • 384: add mariadb table opts and tests
    This PR adds support for parsing the mariadb table options listed here:
    https://mariadb.com/kb/en/create-table/#table-options
    They are all no-ops (much like many of the MySQL table options)
    related: #8592
  • 383: parse start transaction with consistent as no-op
    related: #8592
  • 382: Add syntax support to allow CREATE USER statements to quote the auth plugin
    MySQL allows the auth plugin name to be quoted or unquoted, but our parser previously only supported the unquoted mode for most forms of CREATE USER. This change adds support for the following forms:
    • CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin';
    • CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin' BY random password;
    • CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin' BY 'password';
  • 381: Add support for show slave status
    This syntax is deprecated and will be removed in future MySQL versions (SHOW REPLICA STATUS should be preferred instead). However, some tools (e.g. Dolphie, MyDumper) still rely on this deprecated syntax, so we're adding support for it to keep compatibility with those tools.
  • 379: Refactor AuthServer to support multiple authentication methods
    In preparation of supporting caching_sha2_password authentication, this change applies the refactoring from vitessio/vitess#8503 to our fork of Vitess so that we can more easily support multiple authentication methods.
    Related to: #8496

Closed Issues

1.43.17

22 Nov 21:46
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8582: Support dolt.rebase for doltgres
  • 8581: Support per-schema dolt_ignore for doltgres
  • 8579: Refactor AuthServer
    Minor updates to test code from changes in GMS and Vitess to refactor the AuthServer interface.
    Depends on: dolthub/go-mysql-server#2757
  • 8578: Fix dolt_rebase and dolt_ignore for doltgres
  • 8576: Change LateBindQueryist to use mysql.NewSalt()
    In preparation for refactoring the auth server interface in Vitess/GMS, this change makes LateBindQueryist call mysql.NewSalt() directly, instead of relying on the NewSalt() method on the MySQLDb instance (which internally calls mysql.NewSalt()).

go-mysql-server

  • 2759: ignore empty strings in sets with multiple values
    fixes: #8584
  • 2758: Fix for latin1 issue
    This potentially fixes:
    • #8580
      There's a longer comment in the code itself, but the summary is that this is a character set conversion issue. Perhaps it's repertoires or something else, but hopefully this moves us closer to the logically correct behavior.
  • 2757: Refactor: AuthServer
    This change refactors the AuthServer implementation in GMS to the new AuthServer / AuthMethod structure from dolthub/vitess#379
    This is preliminary work to set us up to add support for caching_sha2_password authentication.
    Related to: #8496
    Depends on: dolthub/vitess#379

vitess

  • 378: support set names binary syntax (no quotes)
    syntax for: #8574

Closed Issues

  • 8584: Support SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO'
  • 7548: Unable to push to doltlab when sql-server is running
  • 8488: excessive memory usage during SELECT DISTINCT query
  • 8452: The following is the log, it has been stuck at pulling..... for about one day. Is there any way to see if it is running normally?
  • 8572: Potential TUI tool like Lazygit

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.07 0.62 0.3
groupby_scan 13.46 16.71 1.2
index_join 1.37 2.26 1.6
index_join_scan 1.3 1.79 1.4
index_scan 34.33 54.83 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.37 1.5
select_random_points 0.34 0.65 1.9
select_random_ranges 0.39 0.64 1.6
table_scan 34.95 55.82 1.6
types_table_scan 75.82 147.61 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 7.98 5.88 0.7
oltp_insert 3.75 2.86 0.8
oltp_read_write 8.58 11.24 1.3
oltp_update_index 3.82 2.91 0.8
oltp_update_non_index 3.89 2.86 0.7
oltp_write_only 5.28 5.88 1.1
types_delete_insert 7.7 6.21 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 98.13 41.35 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.16

20 Nov 20:04
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8576: Change LateBindQueryist to use mysql.NewSalt()
    In preparation for refactoring the auth server interface in Vitess/GMS, this change makes LateBindQueryist call mysql.NewSalt() directly, instead of relying on the NewSalt() method on the MySQLDb instance (which internally calls mysql.NewSalt()).

go-mysql-server

  • 2753: Fixes CTE issue with auth
    This fixes the test introduced in:
  • 2750: Fix alter NULL enum value panic
  • 2739: Embed the embedded.Tracer into memTracer, to fulfil the updated interface
    I was trying to use this project go-mysql-server as a dependency alongside github.com/grafana/grafana-plugin-sdk-go/data. But the latter project depends on:
    • go.opentelemetry.io/otel v1.31.0
    • go.opentelemetry.io/otel/trace v1.31.0
      When I updated my go modules with go mod tidy I started to hit a compilation error:
    # github.com/dolthub/go-mysql-server/test
    /Users/samjewell/go/pkg/mod/github.com/dolthub/[email protected]/test/mem_tracer.go:22:2: could not import go.opentelemetry.io/otel/trace/embedded (open : no such file or directory)
    FAIL	github.com/grafana/poc-sql-expressions-embedded-sql/dolthub-go-mysql-server [build failed]
    FAIL
    
    Hence this change 🙏

vitess

Closed Issues

  • 8574: set names binary fails. set names 'binary' succeeds. Seems unquoted collations in MySQL are supposed to work with set names

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.14 0.62 0.3
groupby_scan 13.22 17.01 1.3
index_join 1.34 2.3 1.7
index_join_scan 1.27 1.89 1.5
index_scan 34.33 55.82 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.57 1.6
select_random_points 0.34 0.67 2.0
select_random_ranges 0.39 0.67 1.7
table_scan 34.95 55.82 1.6
types_table_scan 75.82 144.97 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 7.98 5.88 0.7
oltp_insert 3.75 2.91 0.8
oltp_read_write 8.58 11.45 1.3
oltp_update_index 3.82 2.97 0.8
oltp_update_non_index 3.89 2.91 0.7
oltp_write_only 5.28 5.88 1.1
types_delete_insert 7.7 6.21 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 98.98 40.93 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.15

15 Nov 23:19
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8567: patch with tag collision test
    Tag collisions exists and can lead to false positives.
  • 8566: Bug fix: dolt_commit_diff support for detached head mode
    When we added support for showing diffs for the STAGED root through dolt_commit_diff_ system tables, we didn't take into account that in detached head mode, there wouldn't be a valid staged root. This change detects if we're in detached head mode and replaces the staged root with the root of the detached head.
  • 8541: reverse keyless indexscans apply reversal
    re: dolthub/go-mysql-server#2737

go-mysql-server

  • 2751: Fix drop view if exists for doltgres
  • 2750: Fix alter NULL enum value panic
  • 2749: Support create and drop view with schema name
  • 2748: use equal method for scopecolumn
    This fixes DoltgresType comparison issue
  • 2747: Add schema name to definitions for views, triggers, procedures
  • 2736: use Equals method for sql.Types
    The new DoltgresType struct cannot be compared with ==, so should use sql.Type.Equals() function.

Closed Issues

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.07 0.62 0.3
groupby_scan 13.22 16.71 1.3
index_join 1.37 2.3 1.7
index_join_scan 1.27 1.86 1.5
index_scan 34.33 55.82 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.37 1.5
select_random_points 0.34 0.65 1.9
select_random_ranges 0.39 0.64 1.6
table_scan 34.95 55.82 1.6
types_table_scan 75.82 144.97 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.13 5.88 0.7
oltp_insert 3.82 2.91 0.8
oltp_read_write 8.58 11.45 1.3
oltp_update_index 3.89 2.97 0.8
oltp_update_non_index 3.89 2.91 0.7
oltp_write_only 5.47 5.88 1.1
types_delete_insert 7.84 6.21 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 99.82 41.45 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.14

14 Nov 02:19
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8555: In order to support multiple index types, create interface types for prolly Maps, and make the tree.MutableMap class generic.
  • 8554: use new decimal type for dolt diff
    When modifying column from a decimal with a certain scale/precision to another decimal with different scale/precision, we should display diffs using the new decimal type instead of the old one.
    related: #8359
    fixes: #8551
  • 8542: add GetDatabaseName function to DoltDB
  • 8540: add a databasename parameter to the DoltDBFromCS
  • 8538: Fix JSON merge issue that would report imprecise diffs in some situations
    If:
    • A chunk begins with an object "A"
    • A value "A.b" within this object was modified
    • The previous chunk was also modified
      Then the differ would incorrectly report that the entire "A" object had been modified, instead of the sub-value "A.b"
      This could then lead to situations where the merge cannot be auto-resolved, because the differ claims that an object has been modified divergently, when it's actually two unrelated fields in the object that have been modified.
      This PR fixes that scenario by properly detecting when the next chunk marks the start of an object.
  • 8527: Support multiple schema for system tables with $tablename for doltgres

go-mysql-server

  • 2741: fix: store the hashed password to 'authentication_string' (to #2740)
    This PR addresse the issue #2740.
  • 2738: support multi-inherit
    syntax: dolthub/vitess#375
  • 2736: use Equals method for sql.Types
    The new DoltgresType struct cannot be compared with ==, so should use sql.Type.Equals() function.
  • 2734: always unwrap mysql priv db
    fixes: #8530
  • 2733: disabling read-comitted
  • 2721: Additional support for vector indexes.
    This PR adds the vector function VEC_DISTANCE to GMS, as well as support for adding and altering vector indexes, and support for SHOW CREATE on tables with vector indexes.
    Vector indexes are not yet supported in Dolt. The corresponding version bump in Dolt will have checks preventing vector indexes from being added to Dolt tables.

vitess

  • 375: support multiple like tables
  • 374: USE Revisions use proper auth

Closed Issues

  • 8551: dolt diff does not handle decimal precision change
  • 8533: show create table as of shows the wrong statement for a dropped view/table with same name
  • 8537: Dolt question
  • 8530: Materialized View Gives PrivilegedDatabase Error
  • 2740: Anomaly of account replication from MySQL instance

1.43.13

06 Nov 03:42
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8534: Fix issue where JSON diff would fail under specific circumstances.
    If all of the following are true during a JSON diff operation:
    1. One document fits in a single chunk and the other doesn't
    2. The location of the chunk boundary in the larger document is also present in the smaller document. (It doesn't correspond to a location that was added or removed)
    3. The chunk boundary falls at the end of a value in the document (before the next key or comma/right brace/etc)
      Then the differ would fail to advance the prolly tree cursor and would incorrectly see the larger document as corrupt.
      This fixes that issue and improves the error messaging to make it seem less like the database is corrupt, since the error is much more likely to be a parsing bug like this one.

Closed Issues

  • 8530: Materialized View Gives PrivilegedDatabase Error

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.11 0.61 0.3
groupby_scan 12.98 16.71 1.3
index_join 1.37 2.26 1.6
index_join_scan 1.3 1.82 1.4
index_scan 34.33 55.82 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.37 1.5
select_random_points 0.34 0.65 1.9
select_random_ranges 0.39 0.64 1.6
table_scan 34.95 55.82 1.6
types_table_scan 75.82 147.61 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 7.98 5.77 0.7
oltp_insert 3.75 2.91 0.8
oltp_read_write 8.58 11.24 1.3
oltp_update_index 3.89 2.91 0.7
oltp_update_non_index 3.89 2.86 0.7
oltp_write_only 5.37 5.88 1.1
types_delete_insert 7.7 6.09 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 99.97 41.75 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.12

05 Nov 23:46
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8526: Avoid comparing sql.Types in dolt diff
    Fixes #8511
    Not all implementations of sql.Type are comparable. In particular, the enum type has a map field which makes the entire type incomparable.
    To avoid doing this comparison in the chooseMostFlexibleType function, we modify it to compare the underlying type tag instead. This PR also short-circuits computing a unified schema unless the schema has changed.
  • 8514: Better view caching
    Binding a table name to a catalog symbol previously always loaded the schemas table from disk to first attempt binding a view. Now we cache dolt_schemas using its hash. If the table does not exist, no views are defined, and we short circuit attempting to bind a name to a view.

go-mysql-server

  • 2733: disabling read-comitted
  • 2732: Get field string concat
    Replace fmt.Sprintf with string concat (+).
    BenchmarkSprintf-12        	18748582	        63.29 ns/op
    BenchmarkAddString-12    	39934550	        27.61 ns/op
    
  • 2729: move applyEventScheduler logic and eventscheduler to builder
  • 2712: Planbuilder Authorization
    • dolthub/vitess#372
      What's missing:
    • SHOW commands aren't in yet
    • information_schema doesn't restrict it's output yet
    • Need far more robust testing than what currently exists
      I think SHOW and information_schema will probably have the same solution, which may be to continue doing what we were doing before. Besides that, pretty much every works according to our current tests (outside of the aforementioned missing items).

vitess

  • 374: USE Revisions use proper auth
  • 373: Fixed printing bug in AliasedExpr node (was calling wrong print metho…
    …d, which doesn't work with custom formatters)
  • 372: Embedded Authorization

Closed Issues

  • 8511: Panic on dolt show

1.43.11

02 Nov 16:46
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8522: libraries/doltcore/remotestorage: Improve connection reuse when fetching chunks from remote storage.
    Improves performance of fetches from DoltHub, sql-server, and doltlab.
    Improves some situations where routers and network access points do not respond well to clients which open a great number of connections to the same TCP endpoint, many of which live for a very short period of time.
    http.DefaultClient comes with a default MaxIdleConnsPerHost of 2. Fetching with a high number of concurrent downloads results in many connections not being reused efficiently because they cannot get back into the idle pool because it is so small. Here we increase the MaxIdleConnsPerHost to be large enough so that our active connections during a fetch will fit within it.
    Note: S3 limits a single HTTP connection to 100 requests, after which it is closed server-side. So currently dolt can still require a large number of new connections over the course of a pull, and the rate at which they are opened will depend on a number of factors including available throughput, round trip time resolving storage locations, etc. But this change will always be a big improvement over the old behavior.

go-mysql-server

  • 2729: move applyEventScheduler logic and eventscheduler to builder
  • 2727: fix dropped error in createView
  • 2719: move applyUpdateAccumulators
    This PR deletes the plan.RowUpdateAccumulator node, and directly injects an accumulatorIter into the rowexec tree in finalizeIters.
    Doltgres fix: dolthub/doltgresql#909

Closed Issues

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.07 0.62 0.3
groupby_scan 13.7 16.71 1.2
index_join 1.39 2.35 1.7
index_join_scan 1.27 1.89 1.5
index_scan 34.33 54.83 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.47 1.6
select_random_points 0.34 0.67 2.0
select_random_ranges 0.39 0.64 1.6
table_scan 34.33 54.83 1.6
types_table_scan 75.82 144.97 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.13 5.88 0.7
oltp_insert 3.82 2.91 0.8
oltp_read_write 8.58 11.45 1.3
oltp_update_index 3.82 2.97 0.8
oltp_update_non_index 3.89 2.91 0.7
oltp_write_only 5.37 5.99 1.1
types_delete_insert 7.7 6.32 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 99.4 40.78 2.4
tpcc_tps_multiplier 2.4
Overall Mean Multiple 1.60

1.43.10

30 Oct 23:48
Compare
Choose a tag to compare

Merged PRs

dolt

  • 8508: Update more system tables for doltgres
  • 8505: Fix panics on schema changes
    fixes: #8504
    Use schema hash to detect when database statistics might be incompatible. Drops all statistics for schema update. This could be improved to a subset of statistics if we wanted in the future.
  • 8501: Bug fixes for replication
    • Convert @@server_id to uint32 value when it gets loaded as a string from config.json
    • Send binary logfile name in server heartbeat events, now required in MySQL 8.4
  • 8499: scanner more safe whitespace skip
  • 8497: Update the protobuf version from 22.0 to 28.3
    Also update README to reflect the bazel 6.3.0 version
  • 8493: add bats test for kill query <pid>
  • 8482: Move dolt system tables to dolt schema for doltgres

go-mysql-server

  • 2727: fix dropped error in createView
  • 2726: remove resolveDescribeQuery rule
    This rule just recurses into the analyzer, so we should just do it right at the beginning, so we should do it right away and avoid calling all other rules.
    This would be better/cleaner in the planbuilder, but we would need to tell the analyzer to not analyze this node or skip it somehow.
    It's possible to move this logic into analyzeWithSelector.
    It might be more difficult to move this above Analyze, as we'd have to put this logic in a variety of places.
  • 2723: server/handle.go: doQuery cleanup of some error handling.
  • 2722: internal/sockstate: Restore connection checking on Linux.
    GMS server handler is supposed to cancel running queries if the connection which issued them goes away. It does this by checking the connection state out-of-band anytime the query is running and canceling theh query if the connection goes away. The connection checking code is platform-specific and currently only works on Linux.
    In commit 538696b2c943ac7f3cacf1b67a3a5ff40ae64a00 I introduced a bug where the connection checking code tries to inspect the socket state of an already closed file descriptor. This change fixes the behavior so that the file descriptor is left open until the necessary socket state is extracted.
  • 2720: move wrapTriggerRollback logic
    This PR removes the plan.TriggerRollback and plan.NoopTriggerRollback node and applies the triggerRollbackIter directly.
    When there are multiple nested triggers (aka triggers that call other triggers), we used to have multiple nested trigger rollbacks with different savepoints. It turns out that was unnecessary and a single savepoint at the top of the iter tree is enough; when there's an error, it propagates back to the top, rollingback all changes.
  • 2718: use sqlCtx in handler
    Tests here: #8493
  • 2717: push Distinct nodes below Sort nodes
    This PR optimized queries like:
    select distinct i from t order by i;
    When there are many duplicate values in column i, it is much more efficient to eliminate duplicates first, then sort the results.
    There are somewhat unrelated optimizations left as TODOs.
    Optimize query: #8488

vitess

  • 373: Fixed printing bug in AliasedExpr node (was calling wrong print metho…
    …d, which doesn't work with custom formatters)
  • 371: support quoted character set values
    This PR adds syntax support for quoted character set values.
    fix: #8455

Closed Issues

  • 8504: Crash when refreshing statistics after a PK column change

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 2.07 0.63 0.3
groupby_scan 13.22 17.01 1.3
index_join 1.34 2.3 1.7
index_join_scan 1.27 1.89 1.5
index_scan 34.33 53.85 1.6
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.57 1.6
select_random_points 0.34 0.68 2.0
select_random_ranges 0.39 0.68 1.7
table_scan 34.33 54.83 1.6
types_table_scan 75.82 142.39 1.9
reads_mean_multiplier 1.5
Write Tests MySQL Dolt Multiple
oltp_delete_insert 7.98 5.88 0.7
oltp_insert 3.82 2.91 0.8
oltp_read_write 8.58 11.65 1.4
oltp_update_index 3.89 2.97 0.8
oltp_update_non_index 3.89 2.91 0.7
oltp_write_only 5.37 5.99 1.1
types_delete_insert 7.7 6.32 0.8
writes_mean_multiplier 0.9
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 99.12 40.22 2.5
tpcc_tps_multiplier 2.5
Overall Mean Multiple 1.63