github dolthub/dolt v0.75.14
0.75.14

latest releases: v1.42.20, v1.42.19, v1.42.18...
16 months ago

Merged PRs

dolt

  • 5809: Add dolt_ignore system table.
    Some notes:
    1. The implementation of dolt_ignore is slightly more complicated than the implementation of existing writable persisted system tables (like dolt_procedures and dolt_docs), but I think it's better this way.
      For context, tables like dolt_procedures exist as DoltTables stored in the user's db alongside user created tables. The user can read and write from these tables, but cannot create, drop, or alter them. CLI commands reference these tables and create them if they don't already exist. This works, but it means that the logic that governs these tables is spread out across the different commands that interact with them, and the user can't interact with them until running a command that creates them.
      dolt_ignore works slightly differently: it's backed by a DoltTable, but it also has its own sql.Table implementation. This allows us to define behavior for when the backing table hasn't been created yet: reads return an empty index, and writes create the table. As far as the mysql engine is concerned, this table always exists. So for the commands that care about dolt_table, the logic can be simpler.
    2. I'm not entirely happy with the implementation: I end up defining the schema twice, once as an sql.Schema, and once as a schema.Schema. I couldn't find an easy way to convert between them. If there's discrepancies between the two definitions, it could cause issues.
    3. dolt_ignore only works with FORMAT_DOLT at the moment. If using FORMAT_LD, the table will be ignored by dolt add and dolt_stash. There's no reason it can't work with FORMAT_LD, but the logic for getting a RowIter from an Index is slightly different and I didn't invest the time to figure it out. This is currently only documented in a comment, but can be documented more widely if needed.
    4. dolt_ignore only affects the staging and stashing of untracked files. This is consistent with git's behavior. If a table that has already been added, dolt_ignore will not prevent further changes to it. It also won't prevent a staged table from being renamed, either to or from an ignored table name.

Closed Issues

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 2.66 1.4
groupby_scan 12.08 16.41 1.4
index_join 1.16 4.03 3.5
index_join_scan 1.12 2.07 1.8
index_scan 30.26 54.83 1.8
oltp_point_select 0.14 0.49 3.5
oltp_read_only 2.81 8.43 3.0
select_random_points 0.29 0.75 2.6
select_random_ranges 0.34 1.14 3.4
table_scan 30.26 54.83 1.8
types_table_scan 70.55 173.58 2.5
reads_mean_multiplier 2.4
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 5.0 5.77 1.2
oltp_insert 2.39 2.86 1.2
oltp_read_write 6.32 15.55 2.5
oltp_update_index 2.52 2.97 1.2
oltp_update_non_index 2.52 2.91 1.2
oltp_write_only 3.62 7.43 2.1
types_delete_insert 5.0 6.67 1.3
writes_mean_multiplier 1.5
Overall Mean Multiple 2.0

Don't miss a new dolt release

NewReleases is sending notifications on new releases.