Merged PRs
dolt
- 8976: go: sqle/dsess: session.go: Fix transaction savepoint creation when cluster replication is enabled.
Cluster replication creates a system database,dolt_cluster
, which does not support transactions. There are also UserSpaceDatabases which do not support CreateTransaction. CreateTransaction has special code to avoid visiting them when recording the start transaction state. CreateSavepoint needed to be updated with that logic as well. - 8974: Add support for setting notices in the session
Adds the ability to queue notice messages in the session, for them to be sent to the client during the execution phase. Related to dolthub/doltgresql#1255. - 8970: Fix InsertID discrepancy tests
Fixes tests involving OKPacket's InsertID not aligning withlast_insert_id
.
related: #8914
bump: dolthub/go-mysql-server#2886
go-mysql-server
- 2886: reintroduce
last_insert_id
discrepancy
Apparently thelast_insert_id
in ok result, is not the same asselect last_insert_id()
.
When there is an auto_increment column, the insert_id in the OKResult is the first value that increments the auto_increment value.
Reverts some changes from: dolthub/go-mysql-server#2616
fixes: #8914 - 2885: [planbuilder] sort expression aliases always referenced
This fixes a bug where a sort expression alias computed in the lower projection fails to index the nested expression.
Below, the first plan's sort searches forc5:6
in the child, but only findsa:7
. The second plan fixes the correctness issue. Obviously there are more desirable projection organizations that version two, but this is small enough of an edge case that I think rewriting projection management with proper expression interning would be overkill right now. The rest of the plan tests look OK/improvements.select distinct abs(c5) as a from one_pk where c2 in (1,11,31) order by a before: Sort(abs(one_pk.c5:6)->a:7 ASC nullsFirst) └─ Distinct └─ Project ├─ columns: [abs(one_pk.c5:1)->a:0] └─ Filter ├─ HashIn │ ├─ one_pk.c2:0 │ └─ TUPLE(1 (tinyint), 11 (tinyint), 31 (tinyint)) └─ ProcessTable └─ Table ├─ name: one_pk └─ columns: [c2 c5] after: Distinct └─ Project ├─ columns: [abs(one_pk.c5:5)->a:0] └─ Sort(a:6 ASC nullsFirst) └─ Project ├─ columns: [one_pk.pk:0!null, one_pk.c1:1, one_pk.c2:2, one_pk.c3:3, one_pk.c4:4, one_pk.c5:5, abs(one_pk.c5:5)->a:0] └─ Filter ├─ HashIn │ ├─ one_pk.c2:2 │ └─ TUPLE(1 (tinyint), 11 (tinyint), 31 (tinyint)) └─ ProcessTable └─ Table ├─ name: one_pk └─ columns: [pk c1 c2 c3 c4 c5]
Closed Issues
- 8964: Recurrent Panic with querying geometry types after some queries
- 8926: BUG: BEFORE UPDATE Trigger Not Working in Dolt
- 8914: MySQL is not consistent regarding
last_insert_id
;go-mysql-server
ceased to emulate this inconsistency in v0.19.0
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 0.67 | 0.34 |
groupby_scan | 13.46 | 17.63 | 1.31 |
index_join | 1.5 | 2.43 | 1.62 |
index_join_scan | 1.44 | 1.42 | 0.99 |
index_scan | 36.89 | 29.72 | 0.81 |
oltp_point_select | 0.18 | 0.26 | 1.44 |
oltp_read_only | 3.49 | 5.09 | 1.46 |
select_random_points | 0.34 | 0.59 | 1.74 |
select_random_ranges | 0.37 | 0.62 | 1.68 |
table_scan | 36.89 | 30.81 | 0.84 |
types_table_scan | 80.03 | 112.67 | 1.41 |
reads_mean_multiplier | 1.24 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.21 | 0.7 |
oltp_insert | 4.1 | 3.07 | 0.75 |
oltp_read_write | 9.06 | 11.24 | 1.24 |
oltp_update_index | 4.18 | 3.13 | 0.75 |
oltp_update_non_index | 4.18 | 3.07 | 0.73 |
oltp_write_only | 5.77 | 6.21 | 1.08 |
types_delete_insert | 8.43 | 6.55 | 0.78 |
writes_mean_multiplier | 0.86 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 96.5 | 40.13 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.50 |
---|