github dolthub/dolt v1.83.0
1.83.0

6 hours ago

This is a minor version bump because an internal cache size has been raised. This could result in more memory utilization for databases which have more than tens of thousands of commits. The cache is per-database and it stores loaded Dolt commit objects. Its size can be lowered once again by running the sql-server process with an environment variable set: DOLT_COMMIT_CACHE_SIZE=10000 will restore the previous size.

Merged PRs

dolt

  • 10592: go: Optimize some SELECTs against dolt_log for some types of databases.
    Databases with lots of tags will see a performance improvement on analyzing queries which use dolt_log.
    An internal cache has been increased in size. Database servers which regularly run queries against dolt_log which visit more than 10,000 commits will be able to take advantage of the larger cache and will see the performance of those queries improve.
  • 10587: delete GitBlobstore unique refs on Close, and remove commit parents from remote ref commits
  • 10585: go/utils/publishrelease/buildindocker.sh: Pick up newer GCC toolchain for building release binaries.
  • 10577: Add JSONL support to dolt table {import,export}
    Adds JSONL (.jsonl / --file-type jsonl) support for both dolt table export (newline-delimited rows reusing existing JSON serialization) and dolt table import (streaming JSONL reader), with updated CLI help plus unit and Bats integration tests.
  • 10554: optimize ForeignKey.HashOf()
    This PR optimizes the ForeignKey.HashOf() function to be about 55% faster by using a sync.Pool of []byte instead of bytes.Buffer.
    Unfortunately, this only accounts for like 0.2% of total tppc cpu runtime.
    Old:
    BenchmarkForeignKeyHashOf-14    	 2012511	       578.7 ns/op
    
    New:
    BenchmarkForeignKeyHashOf-14    	 4511584	       260.0 ns/op
    
  • 10431: Add @ database revision delimiter for ORMs and drivers
    Fix #10382
    • Fix dolt SQL shell bug where the revision database in use would switch to main after a SQL statement:
    10382/main> call dolt_branch('branch1');
    +--------+
    | status |
    +--------+
    | 0      |
    +--------+
    1 row in set (0.01 sec)
    10382/main> use `10382/branch1`;
    Database Changed
    10382/branch1> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | 10382              |
    | 10382/branch1      |
    | 10382/main         |
    | ...                |
    +--------------------+
    10 rows in set (0.00 sec)
    10382/main>
    • Add support for new @ character as delimiter for database revision names and remove @ use in normal database names.
    • Fix dolt_status table to report status in detached heads.
    • Fix Dolt shell to not report an error when switching to a detached head.
    • Add support to Dolt shell for new @ delimiter for database revisions.
      MySQL ORMs (e.g., Prisma) and drivers have trouble parsing the / character in database names for their connection URLs. Dolt's database revisions (i.e., branches and commits) system requires the use of / in order to access a database revision. Consequently, this makes revisions inaccessible via ORMs and drivers under certain interfaces, as seen in the issue above.
      As a result, the @ symbol now serves as a delimiter alias when accessing database revisions in Dolt. Any database-related queries that contain the @ delimiter will resolve their strings to the / counterpart. Keep in mind the database in-use will be reflected in the @ format. However, no new databases are created or stored, and you can still use the / name version.
      The following covered side effects exist to keep compatibility with MySQL ORMs and drivers that use their connection URLs' database for internal tables.
      ⚠️The @ character is no longer supported for normal databases to avoid conflicts with revision databases.
      ⚠️Using the @ version of a revision database name will appear in the same format in dependent functions. This can also affect certain tables like information_schema.tables indirectly, where table_info.table_schema will resolve to the @ name when in use.
    SELECT database();
    +----------------+
    | DATABASE()     |
    +----------------+
    | mydb@branch1   |
    +----------------+
    ⚠️ This side effect also applies with the dolt_show_branch_databases system variable. When SHOW DATABASES; is called, the current revision database using the @ format will omit its / counterpart.
    mydb/branch1> set dolt_show_branch_databases = 1;
    Query OK, 0 rows affected (0.00 sec)
    mydb/branch1> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | 10382              |
    | 10382/main         |
    | information_schema |
    | mydb               |
    | mydb@branch1       |
    | mydb/main          |
    | mysql              |
    +--------------------+
    7 rows in set (0.00 sec)
    The information_schema and other examples can be found in #10431 integration tests.

go-mysql-server

  • 3449: keep top-level plan.Limit for doltgres generate_series
    PR dolthub/go-mysql-server#3432 replaced plan.Limit nodes with plan.TopN, because they are unnecessary for anything in dolt and gms. However, because of the way generate_series works with LIMIT, we actually need to keep the plan.Limit at the top.
    This should have minimal impact on performance
  • 3448: Move / guard on new databases to Dolt and add sql.ErrWrongDBName and sql.SQLError to automatically add other error metadata
    Parent #10431

Closed Issues

  • 10382: Prisma migrate and push does not respect specified branch in a connection string

Don't miss a new dolt release

NewReleases is sending notifications on new releases.