Bot releases are visible (Hide)
Published by github-actions[bot] 10 months ago
dolt_blame_<tablename>
view should backtick quote identifiersdolt_blame_<tablename>
view definitions so that table names and primary key column names are backtick quoted. Without this, customers can't use the dolt_blame_<tablename>
views if the table name or primary key columns contain characters (e.g. "-") that require identifier quoting.column_diff_table
for modifed json columnsmap[string]interface{}
, which panics in Golang when used with !=
operator.gmstypes.Compare()
logic instead,version_check.txt
returns an error. This change makes version overwrite any bad data in this file instead.HashInTuple
expressionsRangeHeap
s in the RangeJoinIter
.dolt_column_diff
tableRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.86 | 1.3 |
groupby_scan | 12.98 | 17.63 | 1.4 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.25 | 2.14 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.38 | 0.87 | 2.3 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 158.63 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.28 | 5.88 | 1.1 |
oltp_insert | 2.66 | 2.86 | 1.1 |
oltp_read_write | 7.17 | 14.73 | 2.1 |
oltp_update_index | 2.66 | 3.02 | 1.1 |
oltp_update_non_index | 2.71 | 2.97 | 1.1 |
oltp_write_only | 3.89 | 7.17 | 1.8 |
types_delete_insert | 5.28 | 6.43 | 1.2 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 10 months ago
dolt login
dolt login
to have more clear instructions if a browser does not automatically open.original_name
field in response metadata in addition to the name
fieldoriginal_name
field, not from the name
field.Flags
field seems important to fill in correctly for tooling to use.dolt login
should give better error message if it can't open a browserTEXT
fields without a prefix length (MariaDB compatibility)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.18 | 2.86 | 1.3 |
groupby_scan | 12.98 | 17.32 | 1.3 |
index_join | 1.37 | 5.0 | 3.6 |
index_join_scan | 1.27 | 2.14 | 1.7 |
index_scan | 33.72 | 55.82 | 1.7 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.38 | 0.86 | 2.3 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 161.51 | 2.2 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.57 | 5.99 | 1.1 |
oltp_insert | 2.76 | 2.91 | 1.1 |
oltp_read_write | 7.3 | 14.73 | 2.0 |
oltp_update_index | 2.76 | 3.07 | 1.1 |
oltp_update_non_index | 2.81 | 2.97 | 1.1 |
oltp_write_only | 3.96 | 7.17 | 1.8 |
types_delete_insert | 5.37 | 6.55 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 11 months ago
dolt version
out of date warningdolt version
out of date warning to do a check against GitHub if the current build version is ahead of the stored latest release version. Fixes inconsistencies where the current build is running a version that was released within the past week.sql-server
, this means you can log back in and see one entry in the reflog. For a sql
CLI command, since it's a new process running now, it doesn't have the reflog data buffer in memory anymore, so it has an empty reflog. This meant there was a slight behavior difference between using GC and checking the reflog depending on whether you are connecting to a sql-server
or using the sql
CLI (or silently connecting to a sql-server
through the sql
CLI command when running in local-remote mode).BLOB/TEXT
columns in unique indexes, without requiring a prefix lengthTEXT
and BLOB
columns to be used in unique keys, without requiring that a prefix length be specified. This causes the secondary index to store a hash of the content, which is used to enforce the uniqueness constraint. This is useful to enforce uniqueness over very long fields without having to specify a threshold with a prefix length.strict_mysql_compatibility
is also introduced in case customers want to opt-out of extensions like this and stick to the exact behavior of MySQL. The default value of strict_mysql_compatibility
is false
.original_name
field in response metadata in addition to the name
fieldoriginal_name
field, not from the name
field.Flags
field seems important to fill in correctly for tooling to use.BLOB/TEXT
columns in unique indexes, without requiring a prefix lengthTEXT
and BLOB
columns to be used in unique keys, without requiring that a prefix length be specified. This causes the secondary index to store a hash of the content, instead of the content itself, and then that hash is used to enforce the uniqueness constraint. This is useful to enforce uniqueness over very long fields without having to specify a threshold with a prefix length.strict_mysql_compatibility
is also introduced in case customers want to opt-out of extensions like this and stick to the exact behavior of MySQL. The default value of strict_mysql_compatibility
is false
.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.86 | 1.4 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.27 | 2.14 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 75.82 | 161.51 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.67 | 5.99 | 1.1 |
oltp_insert | 2.86 | 2.97 | 1.0 |
oltp_read_write | 7.43 | 14.73 | 2.0 |
oltp_update_index | 2.86 | 3.07 | 1.1 |
oltp_update_non_index | 2.91 | 2.97 | 1.0 |
oltp_write_only | 4.03 | 7.3 | 1.8 |
types_delete_insert | 5.67 | 6.55 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 11 months ago
7122: Add support for -B flag to dolt_checkout
Resolves Issue: https://github.com/dolthub/dolt/issues/7116
7105: Add of out date warning to dolt version
Adds an out of date
warning to dolt version
if not using the latest release.
Also adds docs and help text for dolt version
.
Resolves: https://github.com/dolthub/dolt/issues/3417
round()
handling of scale, precision, and nullsROUND()
behavior match MySQL more closely specifically when handling NULLs.decimal.Decimal
library for conversions.math.Pow()
function that is attempting to raise precision to some huge negative number. This PR solves that problem by constraining the precision values to our DecimalMaxScale
(30).-308
since that's the max scale of a float supported by MySQL. However, we don't go nearly as far. If we knew the scale of the passed in value we could also constrain the precision that way.ROUND()
unit tests to be structured like other unit tests for functions, and fixes their handling of null arguments.CREATE VIEW view_2_tab1_157 AS SELECT pk, col0 FROM tab1 WHERE NOT ((col0 IN (SELECT col3 FROM tab1 WHERE ((col0 IS NULL) OR col3 > 5 OR col3 <= 50 OR col1 < 83.11))) OR col0 > 75);
The CREATE panicked because the top-level projections get pushed into the source node, and my recent refactors failed to map projections onto the reported table output column sets.charset
and collate
in column options.collate
option, even on binary columns.collate
option is ignored on columns of binary type, an we just assume binary collation because it's the only one allowed. This is usually correct but causes some problems.CREATE TABLE t (pk varbinary(10) collate utf8mb4_0900_bin);
shouldn't parse, because it's attempting to use an illege collation for column pk
. However, we currently ignore the option and parse it anyway.CREATE TABLE t (pk varbinary(10)) collate utf8mb4_0900_bin;
on the other hand, needs to succeed. Binary columns do not inherit the default collation of the table.
varbinary
is like a shorthand for varchar charset binary
. In fact, you're even allowed to write CREATE TABLE t (pk varchar(10) collate binary);
and MySQL will generate a varbinary(10)
column. Since the column already has a specified char set, it doesn't default to the table charset/collation. And you can't supply an explicit charset to the column because it already has one implicitly.SQLType()
, so certain expressions that used these types could panic.create table test (pk varchar(255) collate binary)
create table test (pk varbinary(255))
, but that doesn't happen during parsing, so the added vitess tests still expect varchar
.Published by github-actions[bot] 11 months ago
dolt init
and dolt sql
when there isn't a .dolt
directory in current directory or any children directory. This issue was specific to windows, because we were only checking for /
and not \
.dolt gc
to use sql queriesdolt gc
to use the appropriate sql engine to generate results.query-diff
and ls
.sql-server
--single-branch
flag for dolt clone
--single-branch
flag for dolt clone
to match git behavior more closely.dolt reflog
which displays results form the dolt_reflog()
table functionCREATE VIEW view_2_tab1_157 AS SELECT pk, col0 FROM tab1 WHERE NOT ((col0 IN (SELECT col3 FROM tab1 WHERE ((col0 IS NULL) OR col3 > 5 OR col3 <= 50 OR col1 < 83.11))) OR col0 > 75);
The CREATE panicked because the top-level projections get pushed into the source node, and my recent refactors failed to map projections onto the reported table output column sets.dolt_clone
fails.dolt clone -branch
should omit remote tracking branches for other branchesHAVING
clause is handled incorrectly when it references a name that matches both a column and an alias.dolt version
needs --verbose flag that includes commit hash and timestampPublished by github-actions[bot] 11 months ago
This release contains backwards incompatible changes:
dolt sql-client
– dolt sql-client
has been fully deprecated and will not be accessible via the CLI anymore. sql-client
previously served as a built-in MySQL client that could be used to connect to running servers. Now, dolt sql
can serve the same function with the appropriate global arguments.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 sql-client
by removing the CLI command.sql-server.lock
is changed to sql-server.info
and it is only used to get connection information to a running sql-server. Exclusive access to the databases is mediated through the file system locks, which sql-server now asserts it has before running against a database.Branch | Value |
---|---|
Ancestor | (1, 2) |
Left | (1, 2, NULL) |
Right | (1, 2, 3) |
Both branches add a column but add different values to it. This should be a data conflict, but we currently don't detect it because Ancestor and Left have the same bytes in storage. |
flush binary logs
be noopScalarExpr
back to sql.Expression
. Moving the previously join-specific ids in ScalarExpr
to tables and column refs lets us preserve most memo data structures and join transformation logic.POW()
to not have the same panic and returns warnings instead of errors for certain inputs to LOG()
.nil
cast for time functionsupdate <table> set <column> = default
DayName()
return NULL
on bad DATETIME
conversionsselect * from xy where x in (select u from uv)
into a subquery alias join:
Filter(
Tablescan(xy),
InSubquery(
x,
Subquery(
Project(u, Tablescan(uv))))))
=>
Join(
(x = u),
Tablescan(xy),
SubqueryAlias(
'scalarSubq0',
Tablescan(uv)))
we disambiguate the subquery and create a table-table join:
Filter(
Tablescan(xy),
InSubquery(
x,
Subquery(
Project(u, Tablescan(uv))))))
=>
Join(
(x = u),
Tablescan(xy),
Tablescan(uv))
We disambiguate table names and column references in the process of unnesting scopes to avoid table name clashes.dolt sql-client
flush binary logs
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.86 | 1.3 |
groupby_scan | 12.98 | 17.63 | 1.4 |
index_join | 1.32 | 5.09 | 3.9 |
index_join_scan | 1.25 | 2.14 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.38 | 0.87 | 2.3 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 75.82 | 158.63 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.27 | 1.8 |
oltp_update_index | 3.82 | 3.49 | 0.9 |
oltp_update_non_index | 3.82 | 3.43 | 0.9 |
oltp_write_only | 5.37 | 7.7 | 1.4 |
types_delete_insert | 7.7 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 11 months ago
Inf
and NaN
for trigonometric functionsDayName()
return NULL
on bad DATETIME
conversionsBLOB
/JSON
/TEXT
columns to have literal default values (MariaDB compatibility)BLOB
/JSON
/TEXT
columns to have a literal default value, and requires them to be specified as an expression (i.e. wrapped in parens). We diverge from this behavior and allow it, for compatibility with MariaDB.SQLVal
was converting that value to "BLOB
" instead of the actual binary content, so I fixed that one, too.Published by github-actions[bot] 11 months ago
MergeInfo
struct, which gets passed around the merge logic.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.34 | 5.09 | 3.8 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 75.82 | 158.63 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.27 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.7 | 1.4 |
types_delete_insert | 7.7 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 11 months ago
This release contains backwards incompatible changes:
DOLT_DBNAME_REPLACE
environment variable to any value before starting dolt sql
or dolt sql-server
.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.
1.27.0
, we allow hyphens in database name and replace space characters with underscores and reduce multiple underscore characters side by side into single underscore character.mydb
, whereas Dolt allows. This will cause failing import of dolt dump to MySQL.dolt config
to run in folders without write permissionsdolt config
to run in folders without write permissions.--abort
paramdolt diff
BLOB
/JSON
/TEXT
columns to have literal default values (MariaDB compatibility)BLOB
/JSON
/TEXT
columns to have a literal default value, and requires them to be specified as an expression (i.e. wrapped in parens). We diverge from this behavior and allow it, for compatibility with MariaDB.SQLVal
was converting that value to "BLOB
" instead of the actual binary content, so I fixed that one, too.RangeTree
node MaxUpperBound
againinformation_schema.referential_constraint
tableMaxUpperBound
when inserting into RangeTree
RangeTree
. This bug is responsible for a small regression in the sqllogictests, involving a complicated filter.MaxUpperBound
. This is important for deciding to search subtrees during FindConnection()
. As a result, the RangeTree did not find all overlapping ranges, and would produce a set of Ranges that still contained overlaps.dolt_diff()
table function through ODBCdolt config --add --global
dolt diff
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.18 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.37 | 5.09 | 3.7 |
index_join_scan | 1.27 | 2.18 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.38 | 0.86 | 2.3 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 155.8 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.0 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.56 | 1.4 |
types_delete_insert | 7.56 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 11 months ago
This release contains backwards incompatible changes:
-
) in such directory names were automatically replaced with underscores (_
) when exposing the name of that database. This behavior has been changed so that hyphens in database names are preserved. To re-enable the older behavior, set the DOLT_DBNAME_REPLACE_HYPHENS
environment variable.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.
-
, in a database name.test-db
directory name, database name will be test_db
. Now, the database name for this directory will be test-db
, the same as directory name. This change will be the default behavior, but it can be disabled(switch to previous behavior of replacing hyphens in database name with underscore) by ENV variable DOLT_DBNAME_REPLACE_HYPHENS
set to non empty value.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.76 | 1.3 |
groupby_scan | 12.98 | 17.63 | 1.4 |
index_join | 1.32 | 5.09 | 3.9 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.56 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.38 | 0.86 | 2.3 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 158.63 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.0 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.56 | 1.4 |
types_delete_insert | 7.56 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 11 months ago
$ dolt sql-server --rasdjdsdlsdk
$ echo $?
1
New Behavior:
$ dolt sql-server --rasdjdsdlsdk
error: sql-server does not take positional arguments, but found 1: asdjdsdlsdk
$ echo $?
1
0600
, instead of 0777
, which was much more permissive than intended.stats
docs.JSON
and geometry
typesJSON
and geometry
types should always report a binary collation in MySQL's field metadata. While debugging https://github.com/dolthub/dolt/issues/6970, I noticed that MySQL was sending a binary collation for these types, but GMS was sending back the default collation.character_set_results
when emitting field metadatacharacter_set_results
session var (when not NULL
) and use that for the field metadata returned in the MySQL wire protocol.character_set_results
and the charset translation, but we weren't testing the field metadata. I added support to check against the expect charset field metadata, but had to use reflection to get that data from the MySQL driver, since it's not exposed through the standard golang sql database APIs.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.71 | 1.3 |
groupby_scan | 12.98 | 17.63 | 1.4 |
index_join | 1.37 | 5.0 | 3.6 |
index_join_scan | 1.27 | 2.18 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.3 | 7.56 | 2.3 |
select_random_points | 0.32 | 0.72 | 2.2 |
select_random_ranges | 0.38 | 0.86 | 2.3 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 155.8 | 2.1 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 15.0 | 1.8 |
oltp_update_index | 3.82 | 3.36 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.28 | 7.56 | 1.4 |
types_delete_insert | 7.56 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 12 months ago
This release contains backwards incompatible changes:
BLOB
s. This required an entirely new encoding as well as storage layer changes. As a result, we have bumped the feature version. For now, newer versions of the dolt client can still read the inline geometries, but older dolt clients will not be able to read newer databases. Eventually, we will deprecate the old geometry encoding entirely so we recommend doing a dolt dump
and import if you have any tables with spatial types.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.
GeomAddrEnc
known as an address encodingGeomAddrEnc
needs to be explicitly known as an address type, so that dolt gc
doesn't delete the chunks created.character_set_results
when emitting field metadatacharacter_set_results
session var (when not NULL
) and use that for the field metadata returned in the MySQL wire protocol.character_set_results
and the charset translation, but we weren't testing the field metadata. I added support to check against the expect charset field metadata, but had to use reflection to get that data from the MySQL driver, since it's not exposed through the standard golang sql database APIs.exists
subquery
when attempting to decorrelate filters for exists
queries; we now do this through the use of subquery.Correlated()
.IndexLookups
.(1: and
(3: tab3.col0 > 80)
(4: or
(5: and
(6: tab3.col0 >= 87)
(7: tab3.col0 <= 9))
(8: tab3.col0 IS NULL))
(9: or
(10: tab3.col1 >= 71.7)
(11: and
(12: tab3.col0 >= 94)
(13: or
(15: tab3.col0 < 66)
(16: and
(17: tab3.col0 = 85)
(18: tab3.col1 <= 42.15))
(19: tab3.col0 = 30)))))
Filters 3 and 4 are supported by the chosen index. We want to exclude 9. We build the range collection ORs before leaves, so we attempt to collect 4->9->3. So when we convert 9 to a range collection, we expect nil, but need that nil to not zero out the 3 ranges we have already accumulated.SubqueryExpression
.Published by github-actions[bot] 12 months ago
Published by github-actions[bot] 12 months ago
sql_mode
column access of dolt_schemas
tablesql_mode
column was added to dolt_schemas
table does not have this column, so access this column needs to be check beforehand.GEOMETRY
types as BLOB
sGEOMETRY
types as BLOB
s.GEOMETRY
types as it just takes longer to reference.sbt> explain SELECT COUNT(DISTINCT (s_i_id)) FROM order_line3, stock3 WHERE ol_w_id = 1 AND ol_d_id = 5 AND ol_o_id < 3003 AND ol_o_id >= 2983 AND s_w_id= 1 AND s_i_id=ol_i_id AND s_quantity < 18;
+------------------------------------------------------------------------------------------------------------+
| plan |
+------------------------------------------------------------------------------------------------------------+
| Project |
| ├─ columns: [countdistinct([stock3.s_i_id])] |
| └─ GroupBy |
| ├─ SelectedExprs(COUNTDISTINCT([stock3.s_i_id])) |
| ├─ Grouping() |
| └─ LookupJoin |
| ├─ IndexedTableAccess(order_line3) |
| │ ├─ index: [order_line3.ol_w_id,order_line3.ol_d_id,order_line3.ol_o_id,order_line3.ol_number] |
| │ ├─ filters: [{[1, 1], [5, 5], [2983, 3003), [NULL, ∞)}] |
| │ └─ columns: [ol_o_id ol_d_id ol_w_id ol_i_id] |
| └─ Filter |
| ├─ ((stock3.s_w_id = 1) AND (stock3.s_quantity < 18)) |
| └─ IndexedTableAccess(stock3) |
| ├─ index: [stock3.s_w_id,stock3.s_i_id] |
| ├─ columns: [s_i_id s_w_id s_quantity] |
| └─ keys: 1, order_line3.ol_i_id |
+------------------------------------------------------------------------------------------------------------+
ST_POINTFROMWKB()
with no argumentsint1
,int2
,int3
,int4
,int8
aliasesHandler
interface to pass mysql.PrepareData
into the ComPrepare
function so that GMS can log the params count at a debug level.DROP
column if it's named geometry
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.71 | 1.3 |
groupby_scan | 13.22 | 17.01 | 1.3 |
index_join | 1.34 | 5.09 | 3.8 |
index_join_scan | 1.27 | 2.18 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.41 | 2.4 |
oltp_read_only | 3.36 | 7.3 | 2.2 |
select_random_points | 0.32 | 0.68 | 2.1 |
select_random_ranges | 0.39 | 0.94 | 2.4 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 158.63 | 2.1 |
reads_mean_multiplier | 2.0 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 14.73 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.3 | 0.9 |
oltp_write_only | 5.37 | 7.56 | 1.4 |
types_delete_insert | 7.7 | 7.3 | 0.9 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 12 months ago
import
bats test for existing table with FK constraintsNULL
doesn't violate foreign key constraintsNULL
value doesn't violate foreign key constraints.async.RingBuffer
type already, it has slightly different use case. This implementation is more tailored to the reflog buffer's needs, including supporting iteration, and less locking and synchronization.dolt sql-client
that this command will be deprecated. Command will be fully deprecated in 2 weeks.ST_POINTFROMWKB()
with no argumentsDROP
column if it's named geometry
int1
, int2
, ... types\G
does not work with dolt sql-client
dolt sql
results and dolt sql-server
resultsdolt version
panics in some directoriesRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.71 | 1.3 |
groupby_scan | 12.98 | 17.32 | 1.3 |
index_join | 1.32 | 5.0 | 3.8 |
index_join_scan | 1.27 | 2.18 | 1.7 |
index_scan | 33.72 | 55.82 | 1.7 |
oltp_point_select | 0.17 | 0.41 | 2.4 |
oltp_read_only | 3.3 | 7.3 | 2.2 |
select_random_points | 0.32 | 0.69 | 2.2 |
select_random_ranges | 0.38 | 0.94 | 2.5 |
table_scan | 33.72 | 55.82 | 1.7 |
types_table_scan | 74.46 | 161.51 | 2.2 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 14.73 | 1.8 |
oltp_update_index | 3.82 | 3.43 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.56 | 1.4 |
types_delete_insert | 7.7 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 12 months ago
DOLT_DISABLE_REFLOG
to disable reflog data from being kept in memory.Published by github-actions[bot] 12 months ago
This release contains backwards incompatible changes:
dolt_reflog()
feature, a new timestamp field was added to Dolt's chunk journal format. This means Dolt databases stored on disk using Dolt versions 1.24.0 or higher cannot be opened with older Dolt versions. If you need to downgrade from Dolt 1.24.0 to an older version, you can stop any dolt sql-server
that is running, then run dolt gc
with Dolt 1.24.0 or higher, and then you will be able to use an older Dolt version.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_reflog()
dolt_reflog()
to be called without any arguments to list the contents of the reflog/chunk journal. Internal ref types and ref types that don't always point to a commit (i.e. working set refs) are still excluded.dolt_reflog()
table function allows you to query Dolt's chunk journal to view the history of named refs, such as branches and tags.> select * from dolt_reflog('branch1');
+--------------------+---------------------+----------------------------------+-------------------------------+
| ref | ref_timestamp | commit_hash | commit_message |
+--------------------+---------------------+----------------------------------+-------------------------------+
| refs/heads/branch1 | 2023-10-25 20:54:37 | v531ptpmv2tquig8v591tsjghtj84ksg | inserting row 42 |
| refs/heads/branch1 | 2023-10-25 20:53:12 | rvt34lqrbtdr3dhnjchruu73lik4e398 | inserting row 100000 |
| refs/heads/branch1 | 2023-10-25 20:53:06 | v531ptpmv2tquig8v591tsjghtj84ksg | inserting row 42 |
| refs/heads/branch1 | 2023-10-25 20:52:43 | ihuj1l7fmqq37sjhtlrgpup5n76gfhju | inserting row 1 into table xy |
+--------------------+---------------------+----------------------------------+-------------------------------+
4 rows in set (0.00 sec)
Documentation: https://github.com/dolthub/docs/pull/1815dolt gc
to move the chunk journal content into oldgen, delete the chunk journal file if necessary (it should be removed automatically by dolt gc
), and then restart their sql-server with an older Dolt version.dolt_reflog()
results show when a ref is changed to a new value, but there is not a row in the result set marking when the ref is deleted. This would be shown as a NULL commit_hash and commit_message. Combining this with the point above would allow the reflog to show who deleted a ref.Published by github-actions[bot] 12 months ago
This release contains backwards incompatible changes:
filter-branch
command has changed. It requires a new option flag, --query
. It no longer ignores some errors unless you provide the new --continue
flag. Its output has been altered.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.
filter-branch
command--continue
flag. This is a breaking change:
--query
, or can be read via STDIN.prolly.Range
prolly.Range
s for pointLookupPartitions
, we never set the Field member variable. As a result, point lookups wouldn't return correctly.hoistSelectExists
optimization incorrectly generates SemiJoins
when there are OuterScope column references in projections in subqueries. In the future, a possible optimization could be to have SemiLateralJoins
that properly grant this visibility.coalesce
function.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.76 | 1.3 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.32 | 5.0 | 3.8 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 33.72 | 55.82 | 1.7 |
oltp_point_select | 0.17 | 0.42 | 2.5 |
oltp_read_only | 3.36 | 7.43 | 2.2 |
select_random_points | 0.32 | 0.69 | 2.2 |
select_random_ranges | 0.39 | 0.94 | 2.4 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 161.51 | 2.2 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.0 | 0.0 | 0.0 |
oltp_delete_insert | 7.98 | 6.79 | 0.9 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.28 | 14.73 | 1.8 |
oltp_update_index | 3.82 | 3.36 | 0.9 |
oltp_update_non_index | 3.82 | 3.3 | 0.9 |
oltp_write_only | 5.28 | 7.56 | 1.4 |
types_delete_insert | 7.7 | 7.17 | 0.9 |
writes_mean_multiplier | 1.0 |
Overall Mean Multiple | 1.6 |
---|
Published by github-actions[bot] 12 months ago
This release contains backwards incompatible changes:
dolt_fetch()
, dolt_pull()
, and dolt_push()
will need to have explicit grants to the procedures they need access to. See Documentation for more specifics.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_gc
and dolt_push
. This change marks sensitive procedures such that explicit grants are required for sensitive features.dump-docs
dolt_gc()
and then check the reflog behavior. Because dolt_gc()
invalidates the session, I needed to add this hook that signals the test framework to create a new session for a ScriptTestAssertion.Published by github-actions[bot] 12 months ago
dolt_history_
system tablesView.ViewExpr
AST object seems to drop aliasing information that we depend on for query schema presentation. I want to circle back to have the view AST expression be consistent with the view definition, but this forces a re-parsing to get the correct view schema.ComPrepare
and including params count, other minor logging cleanup.create view v_today(today) as select CURRENT_DATE()
With
clause for select statements, which caused us to not find any bind vars in use there.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.76 | 1.3 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.32 | 4.41 | 3.3 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.17 | 0.41 | 2.4 |
oltp_read_only | 3.36 | 7.3 | 2.2 |
select_random_points | 0.32 | 0.68 | 2.1 |
select_random_ranges | 0.39 | 0.92 | 2.4 |
table_scan | 34.33 | 55.82 | 1.6 |
types_table_scan | 74.46 | 164.45 | 2.2 |
reads_mean_multiplier | 2.0 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.37 | 5.99 | 1.1 |
oltp_insert | 2.71 | 2.86 | 1.1 |
oltp_read_write | 7.3 | 14.21 | 1.9 |
oltp_update_index | 2.76 | 2.97 | 1.1 |
oltp_update_non_index | 2.86 | 2.91 | 1.0 |
oltp_write_only | 3.82 | 7.04 | 1.8 |
types_delete_insert | 5.28 | 6.32 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|