This is a patch release with bug fixes and performance improvements.
- Bug fix for
dolt_diff
system table and null values. - Bug fix for
max_connections
system variable - Bug fix for polygon types with multiple linestrings
- Better performance for
dolt table import
- Differentiate between staged and unstaged changes in
dolt_diff
results - Updated
README
to be more database-centric - Bug fix for certain
REGEXP
expressions - Fix for
dolt dump
output involving string literals
Merged PRs
dolt
- 3635: Liuliu/root hash does not exist panic
- 3630: bugfix: using nils instead of "NULL" strings
Thedolt_diff
system table was returning literal"NULL"
strings instead ofnil
values. This worked in the enginetests, but when they get printed out in a shell they couldn't be converted into a datetime and produced an error. - 3622: Changed CLI docs generation to use bold paragraphs instead of subheadings for arguments etc.
Also cleaned up a nonsensical set of doc interfaces - 3619: Fix setting
max_connections
in server yaml
We use system variables depending on whether a variable is user-defined variable or not. The issue was variables defined in config variable was not used in starting new sql engine. Whenmax_connections
variable was defined in config file either through yaml file or on command line, it should use that value, if not it uses default value. We check for persistence behavior. If it's set toload
, then use the value of globalmax_connections
variable, otherwise use value set in server config, which can either be default or user defined value. - 3611: fixing panic when creating a polygon with more than one linestring
fix was just a typo multiplying the index to be way out of rangegeom_db> create table t (p polygon); geom_db> insert into t values (polygon(linestring(point(1,1),point(2,2),point(3,3),point(1,1)),linestring(point(1,1),point(2,2),point(3,3),point(1,1))); Query OK, 1 row affected geom_db> select * from t; panic in ExchangeIterPartitionRows: runtime error: slice bounds out of range [260:140]
enginetests for this case in GMS PR - 3608: Add a warning for imports where the file's schema is smaller than the table's schema
We should warn the user when executing a partial import as it may have antagonistic behaviors when import files do not properly match a table schema. For example consider a table with the schema (pk, val). If I import a file with schema (pk, va) the second column will get dropped by the importer. - 3606: Get branches by root hash
- 3598: Simplified types, removed some type checks, fixed SELECT output
DECIMAL
,ENUM
,SET
, andTIME
have all been simplified to return a consistent and expected value type (which cleanly maps to storage). This lets us bypass type checking in some places. In addition, we now have consistency between the output of CLI commands and a client's output when connected to the server (these were different in some scenarios). - 3597: Modified README to be more "database version control"-centric
Maps to this blog:
https://www.dolthub.com/blog/2022-06-13-version-controllled-database-getting-started/ - 3591: Support the bulk edit accumulator for
dolt table import
At release 0.34.5 we introduced the new import path that supported import through the sql engine. Recently, I noticed that there was a performance decrease at imports of the size ~10M rows compared to the 0.34.4 version of import. Performance was improved by adding support to the bulk edit accumulator. - 3584: update bats test for columnDefaultValue changes in GMS
Depends on dolthub/go-mysql-server#1036 - 3581: Differentiate between staged and unstaged table deltas in dolt_diff system table
go-mysql-server
- 1064: Add more exhaustive cases for int, uint conversion
fix for #3632 - 1062: adding enginetests to scriptgen
- 1060: remove suffix check
NOW()
does not have prefix(
but has suffix)
- 1059: Adding EngineTests for polygons with multiple linestrings
- 1056: Allow
REGEXP
args to be converted
fix for #1055 - 1053: Added type wire tests
This enforces that we're returning the correct data over the wire (which may differ from the storage values). Majority of the fixes made have been moved to the parent PR (dolthub/go-mysql-server#1044) so that this one is not quite as large. They're all fairly straightforward, hence I don't think they require review.
The expected test output has been validated against MySQL (using the shim). In addition, this also enforces that the results are coming from theType.SQL()
function by running the output of asql.RowIter
(gathered from the directly querying the engine) through theType.SQL()
function and ensuring it matches. - 1044: Type value changes & row type assertions
This PR has two primary goals:- All types now pass their values around in a form most suitable to that type.
- Enforce that the aforementioned types are always passed to integrators, such that integrators do not need to do type validation on their end.
To elaborate on these points, some types already passed around values that were sensible and a best fit for that type, such asMEDIUMINT
returning anint32
. Other types, such asDECIMAL
, passed around strings, which necessitated conversions for integrators to be able to properly persist the values. Not only that, there is currently no guarantee that a row's values each have their best fit type (aBIGINT
can work with anint8
, but it should be able to always expectint64
). To make these guarantees, I'm adding a check at all GMS-integrator junctions that pass asql.Row
and verifying that the value types are exactly what that column expects.
This may have the side effect of changing the output of aSELECT
statement for integrators. As aSELECT
statement simply returns asql.RowIter
, additional logic will be needed to convert all values to their canonical MySQL representation. This can easily be achieved by passing all values throughType.SQL()
before display.
- 1036: single quoted default value in create table statements
Current Dolt default literal values are stores in double quotes, but MySQL does not parse double quoted default literal value inCREATE TABLE
statements for both sql shell and importing dumps.
Fixes #3218
Added character set and collation columns forshow create view
Closed Issues
- 3618: setting listener.max_connections in server yaml does not reflect in system variables
- 3601:
dolt table import
should print a warning message if there is a schema mis-match - 3612: Fix Elixir Installation for mysql-client-tests
- 3218: dolt dump has incorrect default values for create table statements
- 3583: Error: [2057] when fetching remote table at non-HEAD commit following schema change using as of
- 1055: REGEXP '^[-]?[0-9]+$' fails on int64 column.