Bot releases are visible (Hide)
Published by github-actions[bot] about 1 month ago
dolt_merge_base
was failing in doltgres with a invalid type: unknown
errorstring
for a table name now have a doltdb.TableName
.get_format()
LOAD DATA
query, and referencing user variables withing an expression for SET
clauses within the same LOAD DATA
query.LOAD DATA
code.GetField
indexing out of iterator and into analyzerSET <col> = <expr>, ...
clause in LOAD DATA
sql.ContextProvider
interfacesql.Context
in order to call some functions. This change adds a new sql.ContextProvider
interface and has Handler
implement it.SET
statements for LOAD INFILE
instant
as non-reserved keywordINSTANT
keyword isn't in the MySQL docs, but it is a non reserved keyword.Published by github-actions[bot] about 1 month ago
dolt_add
stored procedure doesn't allow for a user interactive workflow.analyze table <t>
will error if a conflicting job is active.Published by github-actions[bot] about 2 months ago
dolt_reset('--hard')
dolt_reset(--hard)
, we don't properly reload the auto increment value from the global tracker.dolt_reset
over insert will not reset the auto_increment tracker.HashInTuple
expressionsEqualityRangeBuilder
SELECT WHERE (id = x AND id = y)
returns row matching y
instead of no results--hard
) after a drop table reserts the auto_increment counter to 1Published by github-actions[bot] about 2 months ago
Num Databases | Code Path | Replication Time (s) |
---|---|---|
100 | Old | 11.02 |
300 | Old | 144.34 |
500 | Old | 633.44 |
100 | New | 6.79 |
300 | New | 20.51 |
500 | New | 36.04 |
> select * from dolt_rebase;
+--------------+--------+----------------------------------+----------------------------+
| rebase_order | action | commit_hash | commit_message |
+--------------+--------+----------------------------------+----------------------------+
| 1.00 | drop | iumpo2t0hd6drcn11jo8osdack1jmafp | inserting row 1 on branch1 |
| 2.00 | pick | us2uaji20dj77cnf1i2l698itr5392se | updating row 1 on branch1 |
+--------------+--------+----------------------------------+----------------------------+
> call dolt_rebase('--continue');
data conflict detected while rebasing commit us2uaji20dj77cnf1i2l698itr5392se (updating row 1 on branch1).
Resolve the conflicts and remove them from the dolt_conflicts_<table> tables, then continue the rebase by calling dolt_rebase('--continue')
> select * from dolt_conflicts_t;
+----------------------------------+---------+---------+--------+--------+---------------+----------+----------+-----------------+------------------------+
| from_root_ish | base_pk | base_c1 | our_pk | our_c1 | our_diff_type | their_pk | their_c1 | their_diff_type | dolt_conflict_id |
+----------------------------------+---------+---------+--------+--------+---------------+----------+----------+-----------------+------------------------+
| us2uaji20dj77cnf1i2l698itr5392se | 1 | one | NULL | NULL | removed | 1 | uno | modified | B1dLxGtGIlHRKJo88tigpw |
+----------------------------------+---------+---------+--------+--------+---------------+----------+----------+-----------------+------------------------+
> call dolt_conflicts_resolve('--theirs', 't');
+--------+
| status |
+--------+
| 0 |
+--------+
> call dolt_add('t');
> call dolt_rebase('--continue');
+--------+-----------------------------------------------------+
| status | message |
+--------+-----------------------------------------------------+
| 0 | Successfully rebased and updated refs/heads/branch1 |
+--------+-----------------------------------------------------+
Customer issue: https://github.com/dolthub/dolt/issues/7820
main
is now merged into this PR before testing. Previously, we would just use the PR as-is, which created a situation where the main
branch included changes that the PR had not yet merged in. This created an issue as Dolt and DoltgreSQL would expect some changes to be present that were not yet merged into the PR, causing compilation errors. By merging main
, we bypass this. In addition, the workflow will automatically pass if a merge conflict is detected. I think this is fine, since conflicts must be resolved before the PR can be merged anyway. This does mean that some errors may not be caught for as long as merge conflicts against main
exist.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 0.65 | 0.3 |
groupby_scan | 13.7 | 16.71 | 1.2 |
index_join | 1.37 | 2.66 | 1.9 |
index_join_scan | 1.3 | 2.11 | 1.6 |
index_scan | 34.95 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.77 | 1.7 |
select_random_points | 0.34 | 0.67 | 2.0 |
select_random_ranges | 0.39 | 0.69 | 1.8 |
table_scan | 34.95 | 54.83 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 2.97 | 0.8 |
oltp_read_write | 8.58 | 11.87 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.37 | 6.09 | 1.1 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.27 | 39.08 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.67 |
---|
Published by github-actions[bot] about 2 months ago
dolt show
to inspect secondary indexes.int64
, but there are a few exceptions. The procedures that return int
break in doltgres here
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 0.65 | 0.3 |
groupby_scan | 13.22 | 16.41 | 1.2 |
index_join | 1.37 | 2.66 | 1.9 |
index_join_scan | 1.27 | 2.11 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.77 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.69 | 1.8 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 75.82 | 142.39 | 1.9 |
reads_mean_multiplier | 1.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 11.87 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.37 | 6.21 | 1.2 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.27 | 39.96 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.67 |
---|
Published by github-actions[bot] about 2 months ago
keyLookupMapper
for the special prolly tree kvIter
, we match column names by exact casing. This leads to incorrect lookup indexes.before
maxhoffman@Maxs-MacBook-Pro ~/D/d/indexer> time dolt sql < doltdump.sql &> log
________________________________________________________
Executed in 276.23 secs fish external
usr time 276.57 secs 0.19 millis 276.57 secs
sys time 2.70 secs 1.72 millis 2.70 secs
after:
maxhoffman@Maxs-MacBook-Pro ~/D/d/indexer> time dolt sql < doltdump.sql &> log
________________________________________________________
Executed in 33.79 secs fish external
usr time 38.18 secs 0.21 millis 38.18 secs
sys time 0.64 secs 1.78 millis 0.64 secs
maxhoffman@Maxs-MacBook-Pro ~/D/d/indexer> time dolt sql < doltdump.sql &> log
________________________________________________________
Executed in 25.60 secs fish external
usr time 30.31 secs 0.28 millis 30.31 secs
sys time 0.56 secs 1.21 millis 0.56 secs
Published by github-actions[bot] about 2 months ago
create table
and alter table
applyTrigger
rule wraps triggerExecutor
s over individual statements in BeginEndBlock
striggerExecutor
s over the wrong statements (not matching event or table)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.18 | 0.68 | 0.3 |
groupby_scan | 12.98 | 16.41 | 1.3 |
index_join | 1.39 | 2.66 | 1.9 |
index_join_scan | 1.3 | 2.14 | 1.6 |
index_scan | 34.95 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.77 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.69 | 1.8 |
table_scan | 34.95 | 54.83 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 5.99 | 0.8 |
oltp_insert | 3.75 | 2.97 | 0.8 |
oltp_read_write | 8.58 | 11.87 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.37 | 6.09 | 1.1 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 100.08 | 39.36 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.67 |
---|
Published by github-actions[bot] 2 months ago
install.sh
and fixed all the errors and warning that had obvious fixes. The only one left is local error_code="$1"
in fail
function that should be removed but may be reused for debugging purposes by manually editing the scriptdolt_workspace_{table}
s. These dynamically generated tables are always relative to HEAD for the given session of the caller. There are no commits as a result, and the schema of the output looks like:git add --patch
update
and delete
triggerssql.QFlagMax1Row
shortcut.--empty
flag for handling empty commits during rebaseRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 1.06 | 0.5 |
groupby_scan | 13.22 | 17.01 | 1.3 |
index_join | 1.32 | 2.66 | 2.0 |
index_join_scan | 1.25 | 2.14 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.77 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.7 | 1.8 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 147.61 | 2.0 |
reads_mean_multiplier | 1.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 11.87 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.37 | 6.09 | 1.1 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.5 | 38.71 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.67 |
---|
Published by github-actions[bot] 2 months ago
dolt sql
shell where the \checkout and \merge commands didn't really play nice when they could have. Specifically, if you used dolt sql
and it was connected to a remote host, then running \checkout
would give you an error telling you to stop the server. That is no longer the case. \checkout and \merge will work well in the dolt sql
shell when connected to a remote host now.noms show
noms show
.noms show
tests only work against the old deprecated format, so adding more tests to the test suite wouldn't actually do anything. It's also mostly unused: we basically only use it as part splunk.pl
to visualize chunks for debugging.noms show
and switch splunk.pl
to use dolt show
instead. Especially now that https://github.com/dolthub/dolt/pull/8143 added support for visualizing prolly tree chunks in dolt show
, bringing it to feature parity with noms show
.--empty
option to dolt_rebase()
. This option controls how commits that become empty are handled. For example, if a branch is rebased and all the changes in one commit on that branch have already been applied to the upstream branch, then when that commit is reapplied, it will end up being empty. The two initially supported values are drop
and keep
. (Git also supports a stop
value, which lets the user manually intervene.)--allow-empty
flag for dolt_cherry_pick()
. This flag controls whether Dolt will cherry-pick empty commits (i.e. commits that start off as empty, not commits that become empty after they are applied).Commits that start empty | Commits that become empty | |
---|---|---|
rebase |
default: keep , can be overridden with --no-keep-empty (--keep-empty is also supported) |
default: drop , can be overridden with --empty=keep . For interactive rebases, the default changes to stop , which is not supported by Dolt yet. |
cherry-pick |
default: fail , can be overridden with --allow-empty
|
default: stop , can be overridden with --empty=keep or --empty=drop . Dolt does not support stop yet, so Dolt's default is to fail. |
Related issue: https://github.com/dolthub/dolt/issues/7830 |
dolt show
implementation.dolt show
had an issue where it would not correctly display the SerialMessage for commits if provided with a hash. This came about as part of a refactor to make dolt show
not depend on the env.DoltEnv
object, when only exists on locally running servers, and not when connected to a remote server. Unfortunately, it looks like that refactor didn't actually remove the dependency either, as DoltEnv
was still used in every possible invocation of dolt show
dolt show
in such a way that it now actually only uses DoltEnv
when it can't get the necessary information from a running server: Basically, if we need to display SerialMessages or resolve branch names, we still rely on a locally running server. This can likely be improved in the future. But calls like dolt show #hash
should now work against remote servers.select count(y) from xy where x > 1
). There are some circumstances where we have to check for field nullability, but otherwise we can just count the KV's returned by the source iterator.IndexedJSONDocument
. Because three way merge only operates on values read from a Dolt table, which are always returned as a IndexedJSONDocuemt
, this should mean that the original implementation is no longer used.IndexLookup
sIndexedTableAccess
, we always convert the key type to the columns type.Filters
properly handle this conversion, so we should default to that.tmp/main*> create table t (i int primary key);
tmp/main*> select * from t where i = json_array();
error: '[]interface {}' is not a valid value type for 'int'
This doesn't errror in MySQL. Also without a primary key or secondary index, the query succeeds in dolt.timestamp
function should convert to a datetime
typetimestamp
function, despite its name, actually returns a datetime
type and not a timestamp
type.mysql -uroot --protocol TCP -e "select timestamp('1000-01-01 00:00:00');" --column-type-info
Field 1: `timestamp('1000-01-01 00:00:00')`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: DATETIME
Collation: binary (63)
Length: 19
Max_length: 19
Decimals: 0
Flags: BINARY
+----------------------------------+
| timestamp('1000-01-01 00:00:00') |
+----------------------------------+
| 1000-01-01 00:00:00 |
+----------------------------------+
Note: We still need to add support for the second, optional parameter to timestamp()
.--graph
option in dolt log
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 1.16 | 0.6 |
groupby_scan | 12.98 | 16.71 | 1.3 |
index_join | 1.34 | 2.66 | 2.0 |
index_join_scan | 1.27 | 2.14 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.43 | 5.88 | 1.7 |
select_random_points | 0.33 | 0.65 | 2.0 |
select_random_ranges | 0.39 | 0.81 | 2.1 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 5.88 | 0.7 |
oltp_insert | 3.75 | 2.97 | 0.8 |
oltp_read_write | 8.43 | 11.87 | 1.4 |
oltp_update_index | 3.82 | 2.97 | 0.8 |
oltp_update_non_index | 3.89 | 2.91 | 0.7 |
oltp_write_only | 5.37 | 6.09 | 1.1 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.52 | 39.06 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.70 |
---|
Published by github-actions[bot] 2 months ago
timestamp
function should convert to a datetime
typetimestamp
function, despite its name, actually returns a datetime
type and not a timestamp
type.mysql -uroot --protocol TCP -e "select timestamp('1000-01-01 00:00:00');" --column-type-info
Field 1: `timestamp('1000-01-01 00:00:00')`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: DATETIME
Collation: binary (63)
Length: 19
Max_length: 19
Decimals: 0
Flags: BINARY
+----------------------------------+
| timestamp('1000-01-01 00:00:00') |
+----------------------------------+
| 1000-01-01 00:00:00 |
+----------------------------------+
Note: We still need to add support for the second, optional parameter to timestamp()
.icu_version
functioncolumn(VARCHAR) = text literal (longtext)
when pushing filters into index lookups. The safety check is necessary at least for datetimes, spatial/fulltext and partial TEXT indexes. It's not clear whether it is necessary for full varchar indexes.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.86 | 1.4 |
groupby_scan | 13.22 | 17.01 | 1.3 |
index_join | 1.34 | 2.66 | 2.0 |
index_join_scan | 1.27 | 2.11 | 1.7 |
index_scan | 34.33 | 53.85 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.88 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.83 | 2.1 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 142.39 | 1.9 |
reads_mean_multiplier | 1.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 2.97 | 0.8 |
oltp_read_write | 8.58 | 12.08 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.37 | 6.09 | 1.1 |
types_delete_insert | 7.7 | 6.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.97 | 39.23 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.70 |
---|
Published by github-actions[bot] 2 months ago
name_const
functionQueryFlags
, and accumulates information about the query to inform better rule filtering and more efficient spooling strategies.oltp_point_select
perf is the sql.QFlagMax1Row
setting, which lets us skip the default results iter boilerplate when we're only returning one row. Added a couple other skips for rules that are easy to whitelist correctly and show prominently on CPU profiles, like aggregations and subqueries.instant
as non-reserved keywordINSTANT
keyword isn't in the MySQL docs, but it is a non reserved keyword.int64
values that are then passed to the SQL engine to execute with the prepared statement. For int8
, int16
, int24
, and int32
types those bytes from the wire weren't getting cast to the correct type first, before they were cast to int64
, which meant if the signed bit was set, the value was interpreted incorrectly.dolt_status
table unhelpful during merge when there are constraint violations.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 3.02 | 1.5 |
groupby_scan | 13.7 | 17.63 | 1.3 |
index_join | 1.37 | 2.66 | 1.9 |
index_join_scan | 1.3 | 2.18 | 1.7 |
index_scan | 34.95 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.3 | 1.7 |
oltp_read_only | 3.49 | 5.99 | 1.7 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.83 | 2.1 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.99 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 12.08 | 1.4 |
oltp_update_index | 3.89 | 3.02 | 0.8 |
oltp_update_non_index | 3.89 | 2.97 | 0.8 |
oltp_write_only | 5.47 | 6.21 | 1.1 |
types_delete_insert | 7.7 | 6.55 | 0.9 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.12 | 38.64 | 2.5 |
tpcc_tps_multiplier | 2.5 |
Overall Mean Multiple | 1.70 |
---|
Published by github-actions[bot] 3 months ago
python-mysql-replication
library:
DEBUG
logging to be less verbosenil
check for gtidPosition
go install github.com/dolthub/dolt/go/cmd/dolt@main
# github.com/dolthub/dolt/go/cmd/dolt/commands
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/cherry-pick.go:79:19: undefined: eventsapi.ClientEventType_CHERRY_PICK
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/dump.go:112:19: undefined: eventsapi.ClientEventType_DUMP
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/filter-branch.go:95:19: undefined: eventsapi.ClientEventType_FILTER_BRANCH
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/gc.go:76:19: undefined: eventsapi.ClientEventType_GARBAGE_COLLECTION
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/migrate.go:74:19: undefined: eventsapi.ClientEventType_MIGRATE
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/profile.go:89:19: undefined: eventsapi.ClientEventType_PROFILE
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/rebase.go:74:19: undefined: eventsapi.ClientEventType_REBASE
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/reflog.go:63:19: undefined: eventsapi.ClientEventType_REFLOG
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/show.go:72:19: undefined: eventsapi.ClientEventType_SHOW
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/tag.go:81:19: undefined: eventsapi.ClientEventType_TAG
/go/pkg/mod/github.com/dolthub/dolt/[email protected]/cmd/dolt/commands/tag.go:81:19: too many errors
Realized the eventsapi library version in go.mod
is outdatedSTART REPLICA;
, replication now automatically restarts when the server is restarted. If replication is stopped with STOP REPLICA;
, it is not restarted automatically on server restart. This matches MySQL's behavior.DEBUG
to TRACE
levelGetRunningServer()
global functionTableMap
binlog events that do not match the case of the table name. We use a case-insensitive table name lookup when getting the table's schema, but not when creating the TableWriter
that applies row updates/inserts/deletes. This change fixes that so that mixed case table names can replicate correctly.fast-xml-parser
from 4.2.5 to 4.4.1
dolt log --graph
expandGraph
function.computeColumnEnds
function:*
at each commit's calculated position to mark it.|
) and diagonal (\
or /
) lines to represent branches and merges.last_insert_id()
.insertRowHandler
(which is responsible for returning OkResult structs) was setting InsertID incorrectly.sql.IncrementStatusVariable
is a helper method that primarily helps the "both" category increment the global and session counters for certain variables. Threads_running
is a global only variable that is incremented/decremented every begin/end query, and gets a lot of traffic. The old code used sql.IncrementStatusVariable
to increment Threads_running
, which was a particularly expensive way to increment a global var because (1) we'd make a new error for every call to the session updater, and (2) the extra map lookup is unnecessary. We don't do the extra map lookup now, and we weren't using the error return so I removed the return variable.LAST_INSERT_ID
when auto incrementing from empty
, NULL
, and DEFAULT
empty
, NULL
or DEFAULT
values.QueryFlags
, and accumulates information about the query to inform better rule filtering and more efficient spooling strategies.oltp_point_select
perf is the sql.QFlagMax1Row
setting, which lets us skip the default results iter boilerplate when we're only returning one row. Added a couple other skips for rules that are easy to whitelist correctly and show prominently on CPU profiles, like aggregations and subqueries.DateAdd()
and DateSub()
functionsDateAdd()
, AddDate()
, DateSub()
, and SubDate()
, changes if the input is a properly formatted string vs a date/datetime/time/timestamp.sql.IndexSearchable
interface. This was for a customer use case. This PR expands the interface to let Dolt cache information about strict key lookups.then
and else
branches of conditional in typeinfo_test.golast_insert_id()
when DEFAULT
is used/
causes the dolt shell to incorrectly interpret lines as slash commands.00:00:00
time component when dealing with string argumentsRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.91 | 1.4 |
groupby_scan | 13.46 | 16.71 | 1.2 |
index_join | 1.39 | 2.61 | 1.9 |
index_join_scan | 1.3 | 2.11 | 1.6 |
index_scan | 34.33 | 52.89 | 1.5 |
oltp_point_select | 0.18 | 0.39 | 2.2 |
oltp_read_only | 3.43 | 6.79 | 2.0 |
select_random_points | 0.33 | 0.7 | 2.1 |
select_random_ranges | 0.39 | 0.81 | 2.1 |
table_scan | 34.33 | 53.85 | 1.6 |
types_table_scan | 74.46 | 139.85 | 1.9 |
reads_mean_multiplier | 1.8 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.88 | 0.7 |
oltp_insert | 3.82 | 2.97 | 0.8 |
oltp_read_write | 8.58 | 12.52 | 1.5 |
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.43 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.89 | 38.07 | 2.6 |
tpcc_tps_multiplier | 2.6 |
Overall Mean Multiple | 1.77 |
---|
Published by github-actions[bot] 3 months ago
pg_catalog
table when resolving a tabledolt admin archive
command to dolt archive
--revert
flag which can return a database back to the classic format.sql.IndexSearchable
in a way that we cache strict key lookups for a given table schema. The lifecycle for these objects is the span between ALTER TABLE statementsinformation_schema.columns
.datetime
and timestamp
columns as with a precision of 6.DATETIME(3)
, Prisma would think there was a schema change, and perform a migration when one isn't needed.information_schema.columns
table accurately reflect the datetime preicision of the columns,sql.IndexSearchable
interface. This was for a customer use case. This PR expands the interface to let Dolt cache information about strict key lookups.int64
values that are then passed to the SQL engine to execute with the prepared statement. For int8
, int16
, int24
, and int32
types those bytes from the wire weren't getting cast to the correct type first, before they were cast to int64
, which meant if the signed bit was set, the value was interpreted incorrectly.ComPrepare
select ?; select ?;
.;
, which meant that queries like select ?; \n
would incorrectly throw an error.SELECT TABLE_NAME AS view_name, VIEW_DEFINITION AS view_sql
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = ?;
The above query ends in a newline character.SplitStatementToPieces()
, which trims these white space characters, and check if there's exactly one piece; this was taken from the vitessio repo: https://github.com/vitessio/vitess/blob/main/go/mysql/conn.go#L1204Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 3.02 | 1.4 |
groupby_scan | 13.22 | 17.01 | 1.3 |
index_join | 1.34 | 2.81 | 2.1 |
index_join_scan | 1.27 | 2.22 | 1.7 |
index_scan | 38.25 | 54.83 | 1.4 |
oltp_point_select | 0.18 | 0.44 | 2.4 |
oltp_read_only | 3.49 | 7.56 | 2.2 |
select_random_points | 0.34 | 0.78 | 2.3 |
select_random_ranges | 0.39 | 0.92 | 2.4 |
table_scan | 38.94 | 55.82 | 1.4 |
types_table_scan | 80.03 | 144.97 | 1.8 |
reads_mean_multiplier | 1.9 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 6.09 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 13.7 | 1.6 |
oltp_update_index | 3.89 | 3.07 | 0.8 |
oltp_update_non_index | 3.89 | 3.02 | 0.8 |
oltp_write_only | 5.47 | 6.32 | 1.2 |
types_delete_insert | 7.7 | 6.67 | 0.9 |
writes_mean_multiplier | 1.0 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.65 | 36.43 | 2.7 |
tpcc_tps_multiplier | 2.7 |
Overall Mean Multiple | 1.87 |
---|
Published by github-actions[bot] 3 months ago
nonCovLaxSecondaryLookupGen
. I tried to add more tests surrounding the specific panic query here: https://github.com/dolthub/go-mysql-server/pull/2607.rowexec
to kvexec
.sqlengine
to server
, so that bin logging only happens when in sql-server
mode.binlogProducer
now sends events to the new logManager
type that writes binlog events to files on disk. binlogStreamer
now reads events from those logs and streams them to replicas (instead of receiving events directly from binlogProducer
).DoltBinlogPrimaryController
now validates that the missing GTIDs from a replica are available in the binlog files and sends an error if the primary doesn't have enough binlog data on disk to get a replica in sync.rowCount/distinctCount
.
before
BenchmarkOltpJoinScan-12 1766 694524 ns/op 462834 B/op 8240 allocs/op
after
BenchmarkOltpJoinScan-12 2460 481166 ns/op 193569 B/op 7129 allocs/op
sysbench perf here: https://github.com/dolthub/dolt/pull/8159
ComPrepare
select ?; select ?;
.;
, which meant that queries like select ?; \n
would incorrectly throw an error.SELECT TABLE_NAME AS view_name, VIEW_DEFINITION AS view_sql
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = ?;
The above query ends in a newline character.SplitStatementToPieces()
, which trims these white space characters, and check if there's exactly one piece; this was taken from the vitessio repo: https://github.com/vitessio/vitess/blob/main/go/mysql/conn.go#L1204PURGE BINARY LOGS
syntaxCOM_BINLOG_DUMP_GTID
COM_BINLOG_DUMP_GTID
command. Previously, when the integrator returned an error, it was logged in the primary server logs, but it was not being sent back to the replica who sent the command. This change causes an error packet to be sent to the replica, containing the details of the error the integrator returned.dolt
that will exercise this codepath.Published by github-actions[bot] 3 months ago
b
is the second column. Then, when updating b_idx
for each resolved row, it would use the second column of "ours" to find the index entry to remove. But this is incorrect, because the second column of "ours" is a
.rowCount/distinctCount
.
before
BenchmarkOltpJoinScan-12 1766 694524 ns/op 462834 B/op 8240 allocs/op
after
BenchmarkOltpJoinScan-12 2460 481166 ns/op 193569 B/op 7129 allocs/op
sysbench perf here: https://github.com/dolthub/dolt/pull/8159
dolt sql shell
.dolt sql
suppresses warnings.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.97 | 1.4 |
groupby_scan | 13.46 | 17.32 | 1.3 |
index_join | 1.37 | 2.81 | 2.1 |
index_join_scan | 1.3 | 2.22 | 1.7 |
index_scan | 34.33 | 53.85 | 1.6 |
oltp_point_select | 0.18 | 0.46 | 2.6 |
oltp_read_only | 3.49 | 7.7 | 2.2 |
select_random_points | 0.34 | 0.77 | 2.3 |
select_random_ranges | 0.39 | 0.89 | 2.3 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 142.39 | 1.9 |
reads_mean_multiplier | 1.9 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 6.09 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 13.95 | 1.6 |
oltp_update_index | 3.82 | 3.07 | 0.8 |
oltp_update_non_index | 3.89 | 3.02 | 0.8 |
oltp_write_only | 5.37 | 6.43 | 1.2 |
types_delete_insert | 7.7 | 6.67 | 0.9 |
writes_mean_multiplier | 1.0 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.43 | 34.46 | 2.9 |
tpcc_tps_multiplier | 2.9 |
Overall Mean Multiple | 1.93 |
---|
@@server_id
from config.json@@server_id
values persisted in config.json so that they are properly converted from strings to the right type.^C
--group-chunks
to enable. Pathological cgo dictionary building problem needs to be fixed before we enable by default.dolt sql shell
.Published by github-actions[bot] 3 months ago
dolt show
dolt show #address
can now display the internals of a ProllyTreeMap message (typically used for storing indexes). Previously, only splunk
/noms show
could do this.dolt show
and splunk
can now display the contents of a Blob message.dolt show
or splunk
to explore the whole tree.STAGED
as commit hashSTAGED
as a commit_hash when filtering dolt diff system tables.joinIter
with a Dolt equivalent that inlines the key building and map get. This is a lot faster than repeatedly building the secondary iterator and materializing sql.Rows in-between lookups.index_join
from 5.18 ms/query to 2.64 ms/q, which will be about 2.0x MySQL's latency.val.Tuple
yet. There are edge case queries that might be dramatically slower because of this. To fix this, we could need to convert sql.Expression
filters into a format that we could execute on val.Tuple
KV pairs.prolly.Encoding
compatiblebinlog_expire_logs_seconds
system variable@@binlog_expire_logs_seconds
reference docs
Published by github-actions[bot] 3 months ago
LazyJSONDocument
instead of an IndexedJSONDocument
. This ensures we don't accidentally use the optimized versions of the JSON functions when there aren't any keys in the prolly tree to guide the optimization.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 3.02 | 1.5 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.37 | 5.37 | 3.9 |
index_join_scan | 1.27 | 2.57 | 2.0 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.46 | 2.6 |
oltp_read_only | 3.49 | 7.7 | 2.2 |
select_random_points | 0.34 | 0.75 | 2.2 |
select_random_ranges | 0.39 | 0.9 | 2.3 |
table_scan | 34.33 | 56.84 | 1.7 |
types_table_scan | 74.46 | 144.97 | 1.9 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 6.09 | 0.7 |
oltp_insert | 3.82 | 3.02 | 0.8 |
oltp_read_write | 8.58 | 13.95 | 1.6 |
oltp_update_index | 3.89 | 3.07 | 0.8 |
oltp_update_non_index | 3.89 | 3.02 | 0.8 |
oltp_write_only | 5.37 | 6.32 | 1.2 |
types_delete_insert | 7.7 | 6.67 | 0.9 |
writes_mean_multiplier | 1.0 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.02 | 35.06 | 2.8 |
tpcc_tps_multiplier | 2.8 |
Overall Mean Multiple | 1.97 |
---|
Published by github-actions[bot] 3 months ago
dolt_reset()
should commit the active transactionplanbuilder
. The cache could be used elsewhere for performance in the future.Published by github-actions[bot] 3 months ago
Backwards incompatible changes in this release:
dolt_schemas
and dolt_procedures
tables now return empty results and disallow edits. In previous releases, select * from
either table would result in an error if there was no data. These tables are internal tables to Dolt which are intended to be managed by Dolt itself, and not modified by users. If your application is currently writing to these tables, it will no longer be able to do so and changes will be required in order to upgrade your database.Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
dolt_procedures
and dolt_schemas
tables could not be selected from if there were not procedures or views. That resulted in errors in the when a dolt CLI client attempted to run dolt diff
. This was previously swallowed by the client, but it made the server logs dirty for no reason.select * from dolt_schemas
will result in an empty result set.REGEXP_LIKE
to the ICU engine, we forgot to also move REGEXP
, which is a synonym for REGEXP_LIKE
according to the docs. This makes that change, and also completely removes all remnants of the old regex code.