Merged PRs
dolt
- 4523: use auto-generated commit message if editor cannot be opened or got empty result
Dolt tries getting system default editor if it's set, else it tries getting doltcore.editor
if it's set, else it usesvim
editor to get commit message. Ifvim
is not installed on user's system, then it uses auto-generated commit message. - 4522: fix
insert ... on duplicate key update ...
for unique keys
fix for: #4475
only happens in new format, solution was just to validate any key violations before inserting anything. - 4519: go/doltcore/sqle: Initialize remotes, backups, and branch config when constructing revision databases
fix for #4518 - 4513: /go/performance/import_benchmarker: better err handling
- 4488: adding multipoint support to dolt
Companion PR: dolthub/go-mysql-server#1309
Changes:- added support for
MultiPoint
type read_geometry.go
andwrite_geometry.go
are part oftypes
packageread_geometry.go
andwrite_geometry.go
passthrough to sql implementation ofSerialize
andDeserialize
prolly_indexes
uses referencessql
implementations directly- moved helper Conversion functions to/from
sql
/types
toread/write_geometry
- included some checks to ensure noms kinds don't suddely change
- added support for
go-mysql-server
- 1311: internal/sockstate: Fix sockets ending up in blocking mode when we monitor them for disconnects.
As documented inos
, calling *os.File.Fd() will put the socket into blocking mode, makes SetDeadline methods stop working, etc. This syscall to SetNonblocking restores desired functionality.
This was discovered when testing clustering control plane operations in Dolt, which rely on the timely ability to terminate all client connections by calling Close() on them.
We were able to reproduce the issue on macOS by doing the same File() behavior there, despite not having an implementation to actually use the fd for external monitoring of the connection state. To keep as much behavioral parity going forward, I left the fd translation in, since we've observed that it can radically change behavior. - 1309: Adding Support for
MULTIPOINT
and some refactoring
Part 1 of fix for: #3638
It looks like PRs for this are gonna get pretty big, so I'm going to split them up for easier reviewing.
Changes:- greatly improved code reuse for spatial types
- refactored code to be more readable
- some functions were misnamed
FROMWKT
, when they should've beenFROMTEXT
ST_POINTFROMWKT
->ST_POINTFROMTEXT
ST_LINEFROMWKT
->ST_LINEFROMTEXT
ST_POLYFROMWKT
->ST_POLYFROMTEXT
- missing function aliases
ST_LINESTRINGFROMTEXT
ST_LINESTRINGFROMWKB
ST_POLYGONFROMTEXT
ST_POLYGONFROMWKB
ST_GEOMETRYFROMTEXT
ST_GEOMETRYFROMWKB
- these functions now work with
MULTIPOINT
ST_SWAP
ST_SRID
ST_ASWKB
ST_MULTIPOINTFROMWKB
ST_MULTIPOINTFROMTEXT
ST_MPOINTFROMWKB
ST_MPOINTFROMTEXT
ST_GEOMFROMWKB
ST_ASGEOJSON
ST_FROMGEOJSON
ST_DIMENSION
- fixed bug where x and y geojson values were being swapped
- 1307: allow
having
node access to all tables in itself
HAVING
clause can reference column that is not in its select result or group by result (there can be no group by clause). These column references are from tables inHAVING
node that it is not in its immediate children nodes.
Closed Issues
- 4270: Diff shows rows that have no diffs when a column has been added in the past.
- 4211: Inserting large JSON object in a prepared statement causes panic
- 4475: Dolt not respecting composite unique index.
- 4521: Pull fails due to missing commit message
- 4436: Support BEGIN WORK
- 3791: Dolt backup sync from SQL context returns success 0 instead of success 1.
- 4463: Official Docker hub image?
- 945: Client hangs if go-mysql-server takes too long to return query results
- 1164: Support the DO statement
- 1162: Support the EXTRACT function
- 1128: superusers should be hidden
- 1289: Some queries using
HAVING
can't be executed withoutGROUPBY
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.81 | 1.4 |
groupby_scan | 12.52 | 17.32 | 1.4 |
index_join | 1.16 | 4.49 | 3.9 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.81 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 183.21 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.91 | 9.73 | 3.3 |
oltp_insert | 1.5 | 2.76 | 1.8 |
oltp_read_write | 5.18 | 16.71 | 3.2 |
oltp_update_index | 1.47 | 4.41 | 3.0 |
oltp_update_non_index | 1.42 | 4.65 | 3.3 |
oltp_write_only | 2.26 | 7.98 | 3.5 |
types_delete_insert | 3.02 | 10.84 | 3.6 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|