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_logfor some types of databases.
Databases with lots of tags will see a performance improvement on analyzing queries which usedolt_log.
An internal cache has been increased in size. Database servers which regularly run queries againstdolt_logwhich 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 theForeignKey.HashOf()function to be about 55% faster by using async.Poolof[]byteinstead ofbytes.Buffer.
Unfortunately, this only accounts for like 0.2% of total tppc cpu runtime.
Old:
New:BenchmarkForeignKeyHashOf-14 2012511 578.7 ns/opBenchmarkForeignKeyHashOf-14 4511584 260.0 ns/op - 10431: Add
@database revision delimiter for ORMs and drivers
Fix #10382- Fix
doltSQL shell bug where the revision database in use would switch tomainafter 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_statustable 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 likeinformation_schema.tablesindirectly, wheretable_info.table_schemawill resolve to the@name when in use.
⚠️ This side effect also applies with theSELECT database(); +----------------+ | DATABASE() | +----------------+ | mydb@branch1 | +----------------+
dolt_show_branch_databasessystem variable. WhenSHOW DATABASES;is called, the current revision database using the@format will omit its/counterpart.Themydb/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)
information_schemaand other examples can be found in #10431 integration tests. - Fix
go-mysql-server
- 3449: keep top-level
plan.Limitfor doltgresgenerate_series
PR dolthub/go-mysql-server#3432 replacedplan.Limitnodes withplan.TopN, because they are unnecessary for anything in dolt and gms. However, because of the waygenerate_seriesworks withLIMIT, we actually need to keep theplan.Limitat the top.
This should have minimal impact on performance - 3448: Move
/guard on new databases to Dolt and addsql.ErrWrongDBNameandsql.SQLErrorto automatically add other error metadata
Parent #10431
Closed Issues
- 10382: Prisma migrate and push does not respect specified branch in a connection string