Bot releases are visible (Hide)
Published by github-actions[bot] over 1 year ago
dolt sql
dolt sql -r parquet -q "select * from mytable;" > out.parquet
will select all rows from mytable
, output them to stdout as parquet data, and redirect that output to the out.parquet
file.enum
and set
use the collation during type creation, which occurs before we've verified the collation's implementation. The other string types do not use the collation during type creation, so we return the appropriate error as a result.'primary'
SHOW CREATE TABLE
to prevent PRIMARY KEY
s from showing up twice in because they are within tables IndexCollection. This logic relied on checking if all the columns in the index were part of the Primary Key. MySQL allows and shows SECONDARY INDEXES
that are identical to the primary key. It appears to differentiate them by naming the PK index "PRIMARY". Additionally, MySQL prevents users from creating SECONDARY INDEXES
named "primary"
.not in
expression contains NULL.SHOW TABLE
statementsSHOW TABLES
statement with a bound variable in the filter clause (e.g. SHOW TABLES FROM mydb WHERE Tables_in_mydb = ?;
) GMS and Vitess were identifying the bound variable parameters differently and causing the SQL client on the other end to panic. Vitess code in conn.go
walks the parsed tree and looks for SQLVal
instances to identify the parameters and then returns that metadata over the SQL connection. The SHOW TABLES
statement above fails because the sqlparser
AST wasn't including all the members of SHOW TABLES
node in the walk. This case is a little tricky to test directly in go-mysql-server, because it only repros in a running sql-server when running over a Vitess conn
.Missing index for foreign key
error during CREATE TABLE
SHOW CREATE TABLE
and dolt dump
outputRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.11 | 1.9 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.14 | 0.46 | 3.3 |
oltp_read_only | 2.81 | 7.98 | 2.8 |
select_random_points | 0.3 | 0.77 | 2.6 |
select_random_ranges | 0.35 | 1.06 | 3.0 |
table_scan | 30.81 | 53.85 | 1.7 |
types_table_scan | 69.29 | 170.48 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.91 | 5.99 | 1.2 |
oltp_insert | 2.43 | 2.97 | 1.2 |
oltp_read_write | 6.43 | 15.27 | 2.4 |
oltp_update_index | 2.48 | 3.02 | 1.2 |
oltp_update_non_index | 2.48 | 2.97 | 1.2 |
oltp_write_only | 3.55 | 7.7 | 2.2 |
types_delete_insert | 5.18 | 6.79 | 1.3 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
__DOLT__
format with chunk journal on)__DOLT__
format with chunk journal on)@@dolt_replicate_heads
before @@dolt_read_replica_remote
in SQL to get a read replica started. Error message is bad.LEAST
with system variables throws an errorRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 2.66 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.11 | 1.9 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.14 | 0.46 | 3.3 |
oltp_read_only | 2.81 | 7.98 | 2.8 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.08 | 3.1 |
table_scan | 31.37 | 54.83 | 1.7 |
types_table_scan | 70.55 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.91 | 5.99 | 1.2 |
oltp_insert | 2.35 | 2.91 | 1.2 |
oltp_read_write | 6.21 | 15.27 | 2.5 |
oltp_update_index | 2.39 | 3.02 | 1.3 |
oltp_update_non_index | 2.43 | 3.02 | 1.2 |
oltp_write_only | 3.43 | 7.56 | 2.2 |
types_delete_insert | 4.82 | 6.67 | 1.4 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
This release contains a behavior change to use the SQL user name for the Dolt commit author, when Dolt is operating in a SQL mode (i.e. when calling dolt_commit()
through dolt sql
or through a SQL connection to a dolt sql-server
).
Per Dolt's versioning policy, this may require users to update code that accesses the committer field of the dolt_log
table. Thus, the minor (major.minor.patch) version bump.
__LD_1__
from CIdolt sql
or connected to a dolt sql-server
), the Dolt commit author is now recorded as the SQL user who created the Dolt commit, instead of using the user info configured through dolt config
. Committing from the CLI continues to use the dolt config
configured user info.@@dolt_transaction_commit
to be set through sql-server configdolt_transaction_commit
in the behavior section to automatically set the global value of @@dolt_transaction_commit
for a sql-server.json_table
.for ordinality
nested paths
default
error
fks> create table parent (fk1 int, fk2 int, primary key (fk1, fk2));
fks> create table child (id int unique, fk1 int, fk2, primary key (fk2, fk1, id), foreign key (fk1, fk2) references parent (fk1, fk2));
This should produce a child table that creates a new secondary index over the columns (fk1, fk2).dolt constraints verify --all
Filter(x=1) -> Join(Tablescan(x), Tablescan(y), x=y)
=>
Join(Filter(x=1)->Tablescan(x), Tablescan(y), x=y)
Filter(x=1)->Tablescan(x)
=>
Indexscan(x, x in [1,1])
There are now two rules, pushFilters
and generateIndexScans
. Running pushFilters
sql.FilteredTable
interface is now unused, marked as deprecated but did not delete related functionsJSON_EXTRACT()
has trouble parsing an expression with *
JSON_TABLE
can't find column when using aliasesRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.14 | 1.9 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.86 | 8.13 | 2.8 |
select_random_points | 0.29 | 0.77 | 2.7 |
select_random_ranges | 0.35 | 1.08 | 3.1 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 69.29 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.65 | 5.88 | 1.3 |
oltp_insert | 2.3 | 2.86 | 1.2 |
oltp_read_write | 6.21 | 15.27 | 2.5 |
oltp_update_index | 2.39 | 2.97 | 1.2 |
oltp_update_non_index | 2.43 | 2.91 | 1.2 |
oltp_write_only | 3.43 | 7.56 | 2.2 |
types_delete_insert | 4.65 | 6.67 | 1.4 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
dolt admin
.)dolt table import -a
-u
, -c
, and -r
instead of a separate flag after I realized that -c
and -r
already disallow overwriting fields and it didn't really make sense to add a flag that could only be used with -u
.--strict
flag too but I don't think it's necessary for their use case.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.86 | 1.5 |
groupby_scan | 12.3 | 17.01 | 1.4 |
index_join | 1.16 | 4.33 | 3.7 |
index_join_scan | 1.12 | 2.14 | 1.9 |
index_scan | 30.26 | 55.82 | 1.8 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.86 | 8.28 | 2.9 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 56.84 | 1.8 |
types_table_scan | 69.29 | 176.73 | 2.6 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.49 | 5.88 | 1.3 |
oltp_insert | 2.14 | 2.81 | 1.3 |
oltp_read_write | 6.09 | 15.55 | 2.6 |
oltp_update_index | 2.26 | 2.91 | 1.3 |
oltp_update_non_index | 2.22 | 2.86 | 1.3 |
oltp_write_only | 3.25 | 7.56 | 2.3 |
types_delete_insert | 4.49 | 6.55 | 1.5 |
writes_mean_multiplier | 1.6 |
Overall Mean Multiple | 2.1 |
---|
Published by github-actions[bot] over 1 year ago
@@system_time_zone
support for returning system timezoneSQLException
each time, immediately after executing the first query. Dolt logs look fine, but there's obviously something happening that the MySQL Connector J can't deal with. I have a few more repro ideas that I'll follow up with, but wanted to get the GMS -> Dolt pipeline cleared up first.@@system_time_zone
from returning the actual timezone in use by the runtime and OS.fks> create table parent (fk1 int, fk2 int, primary key (fk1, fk2));
fks> create table child (id int unique, fk1 int, fk2, primary key (fk2, fk1, id), foreign key (fk1, fk2) references parent (fk1, fk2));
This should produce a child table that creates a new secondary index over the columns (fk1, fk2).dolt constraints verify --all
information_schema.st_spatial_reference_systems
tableinformation_schema.st_spatial_reference_systems
table from MySQL.types
package from functions/spatial
package.show create table
statement to print SRIDs inside a MySQL special comment.tmp> show create table t2;
+-------+------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------+
| t2 | CREATE TABLE `t2` ( |
| | `p` point /*!80003 SRID 2000 */, |
| | `l` linestring /*!80003 SRID 2001 */ |
| | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin |
+-------+------------------------------------------------------------------+
1 row in set (0.00 sec)
Partially Addresses this: https://github.com/dolthub/dolt/issues/5973
cache.Get()
miss. Use shared object instead.[4]byte
.ALTER EVENT
statementsALTER EVENT
statementsRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.11 | 1.9 |
index_scan | 30.81 | 55.82 | 1.8 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.81 | 8.28 | 2.9 |
select_random_points | 0.29 | 0.77 | 2.7 |
select_random_ranges | 0.34 | 1.16 | 3.4 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 69.29 | 176.73 | 2.6 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.18 | 5.47 | 1.3 |
oltp_insert | 2.11 | 2.71 | 1.3 |
oltp_read_write | 5.99 | 15.0 | 2.5 |
oltp_update_index | 2.14 | 2.81 | 1.3 |
oltp_update_non_index | 2.22 | 2.76 | 1.2 |
oltp_write_only | 3.13 | 7.17 | 2.3 |
types_delete_insert | 4.33 | 6.32 | 1.5 |
writes_mean_multiplier | 1.6 |
Overall Mean Multiple | 2.1 |
---|
Published by github-actions[bot] over 1 year ago
LOAD DATA
bats tests improvementsLOAD DATA
with Hosted Dolt. Added some additional testing in response. Pleasantly surprised with our compatibility. Adds skipped tests for #5982 and #5983.dolt sql
commands are executed against a database which is in used by a sql server, connect to it through the sql port. Currently this does not support authenticated transport. If the root user is still active, we'll use that be default. Otherwise, the --user
flag can be used to specify a user, but no authentication token is supported. That will come in the next round of changes.Equals
method on ForeignKey
that takes in enough data to resolve FK column references, if needed, and test equality for any two foreign keys.ogr2ogr
tool performs some information gathering queries beforehand, which change the queries it generates later on to populate MySQL tables.ogr2ogr -f MySQL "MYSQL:ogr,user=root,port=3307,host=127.0.0.1" "data.gpkg"
, ogr2ogr
sends these queries
SELECT VERSION();
SHOW TABLES;
SELECT SRS_ID FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS WHERE ORGANIZATION = 'EPSG' AND ORGANIZATION_COORDSYS_ID = 3857;
SELECT SRS_ID FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS WHERE DEFINITION = 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.25722356
3,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER[
"false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]'
However, Dolt's information_schema.st_spatial_reference_system
only contains SRID 0 and 4326, as a result both queries ogr2ogr makes return Empty Set.CREATE TABLE `aeropuertos` ( fid INT UNIQUE NOT NULL AUTO_INCREMENT, geom GEOMETRY NOT NULL)
When it should be
CREATE TABLE `aeropuertos` ( fid INT UNIQUE NOT NULL AUTO_INCREMENT, geom GEOMETRY NOT NULL /*!80003 SRID 3857 */)
On initial insert, this causes ogr2ogr to insert with SRID 0-2
aka not initialized
information_schema.st_spatial_reference_system
.ERROR 1: MySQL error message:unsupported feature: unsupported SRID value Description: CREATE TABLE `aeropuertos` ( fid INT UNIQUE NOT NULL AUTO_INCREMENT, geom GEOMETRY NOT NULL /*!80003 SRID 3857 */)
ERROR 1: Terminating translation prematurely after failed
translation of layer aeropuertos (use -skipfailures to skip errors)
Addresses these issues:
@@system_time_zone
based on OS time zone@@system_time_zone
global system variable is a read-only system variable that shows the timezone that the server is running in. MySQL and Golang both load the system timezone from the OS, typically using the TZ
env var or /etc/timezone
. This change exposes that system timezone information through the @@system_time_zone
variable, which was previously hardcoded to UTC
.SystemVariable
the ability to include a function that gets executed to return the sys var value and moved the uptime
sys var over to that, too.[0, MAX_UINT32]
, MySQL throws a ERROR: 1690: SRID value is out of range in '<func_name>'
.ERROR: 3548: There's no spatial reference system with SRID <invalid srid>.
ERROR 3548
, and would incorrectly report the negative numbers as overflowed positive uint32
sutf8mb3
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.0 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.86 | 8.43 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 69.29 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.82 | 5.67 | 1.2 |
oltp_insert | 2.43 | 2.81 | 1.2 |
oltp_read_write | 6.32 | 15.27 | 2.4 |
oltp_update_index | 2.48 | 2.91 | 1.2 |
oltp_update_non_index | 2.52 | 2.86 | 1.1 |
oltp_write_only | 3.55 | 7.3 | 2.1 |
types_delete_insert | 5.0 | 6.43 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
Release 1.0.1 contained a backwards incompatible interface change to the CLI. This change is a precursor to making the Dolt CLI work more naturally with a running Dolt SQL Server. The --data-dir
argument (and similar) moved from a command argument to a dolt argument.
ie. dolt sql --data-dir
becomes dolt --data-dir sql
Consult the PR for more details.
Per our new version number rules, this should have been a minor version bump instead of a patch release. This minor version bump rectifies the mistake somewhat.
$ dolt --help
Valid commands for dolt are
init - Create an empty Dolt data repository.
status - Show the working tree status.
add - Add table changes to the list of staged table changes.
diff - Diff a table.
reset - Remove table changes from the list of staged table changes.
clean - Remove untracked tables from working set.
commit - Record changes to the repository.
sql - Run a SQL query against tables in repository.
sql-server - Start a MySQL-compatible server.
sql-client - Starts a built-in MySQL client.
log - Show commit logs.
show - Show information about a specific commit.
branch - Create, list, edit, delete branches.
checkout - Checkout a branch or overwrite a table from HEAD.
merge - Merge a branch.
conflicts - Commands for viewing and resolving merge conflicts.
cherry-pick - Apply the changes introduced by an existing commit.
revert - Undo the changes introduced in a commit.
clone - Clone from a remote data repository.
fetch - Update the database from a remote data repository.
pull - Fetch from a dolt remote data repository and merge.
push - Push to a dolt remote.
config - Dolt configuration.
remote - Manage set of tracked repositories.
backup - Manage a set of server backups.
login - Login to a dolt remote host.
creds - Commands for managing credentials.
ls - List tables in the working set.
schema - Commands for showing and importing table schemas.
table - Commands for copying, renaming, deleting, and exporting tables.
tag - Create, list, delete tags.
blame - Show what revision and author last modified each row of a table.
constraints - Commands for handling constraints.
migrate - Executes a database migration to use the latest Dolt data format.
read-tables - Fetch table(s) at a specific commit into a new dolt repo
gc - Cleans up unreferenced data from the repository.
filter-branch - Edits the commit history using the provided query.
merge-base - Find the common ancestor of two commits.
version - Displays the current Dolt cli version.
dump - Export all tables in the working set into a file.
docs - Commands for working with Dolt documents.
stash - Stash the changes in a dirty working directory away.
Dolt subcommands are in transition to using the flags listed below as global flags.
The sql subcommand is currently the only command that uses these flags. All other commands will ignore them.
usage: dolt <--data-dir=<path>> subcommand <subcommand arguments>
Specific dolt options
-u <user>, --user=<user>
Defines the local superuser (defaults to `root`). If the specified user exists, will take on permissions of that user.
--data-dir=<directory>
Defines a directory whose subdirectories should all be dolt data repositories accessible as independent databases within. Defaults to the current directory.
--doltcfg-dir=<directory>
Defines a directory that contains configuration files for dolt. Defaults to `$data-dir/.doltcfg`. Will only be created if there is a change to configuration settings.
--privilege-file=<privilege file>
Path to a file to load and store users and grants. Defaults to `$doltcfg-dir/privileges.db`. Will only be created if there is a change to privileges.
--branch-control-file=<branch control file>
Path to a file to load and store branch control permissions. Defaults to `$doltcfg-dir/branch_control.db`. Will only be created if there is a change to branch control permissions.
AntiJoin
s to be LeftJoin
ANTI_JOIN
s to LEFT_JOIN
s with an additional filter condition.LEFT_JOIN
performs better than the ANTI_JOIN
.LEFT_OUTER_LOOKUP_JOIN
s.NOW()
and CURTIME()
functions now respect the sessions's current time zoneCONVERT_TZ
to mix use of timezone names (e.g. UTC
) and timezone offset strings (e.g. +00:00
)timestamp
input/output session timezone conversionRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.81 | 8.43 | 3.0 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 70.55 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.0 | 5.67 | 1.1 |
oltp_insert | 2.48 | 2.91 | 1.2 |
oltp_read_write | 6.21 | 15.27 | 2.5 |
oltp_update_index | 2.48 | 2.91 | 1.2 |
oltp_update_non_index | 2.52 | 2.86 | 1.1 |
oltp_write_only | 3.49 | 7.3 | 2.1 |
types_delete_insert | 4.91 | 6.55 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
CREATE LIKE
statements should preserve check-constraints on the new table.NOW()
and CURTIME()
functions now respect the sessions's current time zoneCONVERT_TZ
to mix use of timezone names (e.g. UTC
) and timezone offset strings (e.g. +00:00
)timestamp
input/output session timezone conversionCREATE TABLE LIKE
does not replicate CHECK constraintsRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.86 | 8.43 | 2.9 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 69.29 | 170.48 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.37 | 5.77 | 1.1 |
oltp_insert | 2.52 | 2.86 | 1.1 |
oltp_read_write | 6.55 | 15.55 | 2.4 |
oltp_update_index | 2.48 | 2.97 | 1.2 |
oltp_update_non_index | 2.61 | 2.97 | 1.1 |
oltp_write_only | 3.62 | 7.3 | 2.0 |
types_delete_insert | 5.18 | 6.67 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
dolt_log_level
system variable allows reading the current log level for the server and setting a new one.dolt sql --help
ALTER EVENT
io.EOF
to trigger our connection re-establishment logic. Previously, only io.UnexpectedEOF
was triggering a connection re-establishment.TestBinlogReplicationAutoReconnect
test:
file:///C:...
or file://C:...
, the url package would parse these slightly differently. As a result, the environment would be stored in the singleton under one path, and retrieved with a different one, causing errors.sql
command who pass in the following arguments:
ignored
values.varbinary
, causing panics.ALTER TABLE <table> MODIFY COLUMN <col> <type> UNIQUE
ALTER TABLE <table> MODIFY COLUMN <col> <type>;
ALTER TABLE <table> ADD UNIQUE INDEX `<col>` (col);
ALTER EVENT
statementALTER EVENT
statements excluding case for moving events across databases using RENAME TO
clause.replaceSortPk
. Namely, the rule now works with both TableAliases
, ColumnAliases
, and SubqueriyAliases
.Descending
order.select * from t order by pk desc limit 1
will just be a Limit
over an IndexTabledAccess
INSERT INTO <table> VALUE ...
;VALUE
as a synonym of VALUES
in INSERT INTO <table> VALUES ...
, to match MySQL's syntax.ALTER EVENT
statementsALTER EVENT
statementsdolt stash --help
causes SIGSEVdolt sql --help
displays "Help" instead of helpstringdolt revert
violates NOT NULL
constraintalter table $tbl modify $col
varbinary
insertm5hash
does not exists" not "function m5hash
on column id
is not valid for usage in a default valuedolt sql-server
fails if databases
is configured in yamlINSERT INTO ... VALUE
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.12 | 1.3 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.91 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.74 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 70.55 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 7.3 | 6.91 | 1.0 |
oltp_insert | 3.49 | 3.3 | 1.0 |
oltp_read_write | 7.43 | 15.83 | 2.1 |
oltp_update_index | 3.49 | 3.36 | 1.0 |
oltp_update_non_index | 3.75 | 3.3 | 1.0 |
oltp_write_only | 4.74 | 7.84 | 1.7 |
types_delete_insert | 7.43 | 7.56 | 1.0 |
writes_mean_multiplier | 1.2 |
Overall Mean Multiple | 1.9 |
---|
Published by github-actions[bot] over 1 year ago
The world's first and only version controlled SQL database is ready for your production workloads. If you've been waiting to try Dolt for it to be stable, fast and compatible, now is the time to try it.
Dolt 1.0 means four things:
Read more about it in our release blog
hoistOutOfScopeFilters
for the same edge case.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.18 | 4.03 | 3.4 |
index_join_scan | 1.12 | 2.11 | 1.9 |
index_scan | 30.26 | 56.84 | 1.9 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.81 | 8.43 | 3.0 |
select_random_points | 0.29 | 0.74 | 2.6 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 57.87 | 1.9 |
types_table_scan | 69.29 | 176.73 | 2.6 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.18 | 5.88 | 1.1 |
oltp_insert | 2.48 | 2.86 | 1.2 |
oltp_read_write | 6.32 | 15.27 | 2.4 |
oltp_update_index | 2.61 | 3.02 | 1.2 |
oltp_update_non_index | 2.57 | 2.91 | 1.1 |
oltp_write_only | 3.82 | 7.3 | 1.9 |
types_delete_insert | 5.0 | 6.67 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
"read"
permission, to force some (or all) users to only have read
permissions even if there is a global allowance. This also matches the namespace table, which already operated on a longest-match principle.Published by github-actions[bot] over 1 year ago
hoistOutOfScopeFilters
for the same edge case.json_set
support for edge casesjson_set
to support more input edge casesSHOW EVENTS
statement parsingSHOW CREATE EVENT
statement parsingFULL
option from SHOW TRIGGERS
as it's not supported in MySQL.call dolt_commit
find_in_set
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 2.71 | 1.4 |
groupby_scan | 12.08 | 16.41 | 1.4 |
index_join | 1.18 | 4.03 | 3.4 |
index_join_scan | 1.14 | 2.07 | 1.8 |
index_scan | 30.81 | 55.82 | 1.8 |
oltp_point_select | 0.15 | 0.5 | 3.3 |
oltp_read_only | 2.86 | 8.58 | 3.0 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 55.82 | 1.8 |
types_table_scan | 70.55 | 170.48 | 2.4 |
reads_mean_multiplier | 2.4 |
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.52 | 2.97 | 1.2 |
oltp_read_write | 6.55 | 15.55 | 2.4 |
oltp_update_index | 2.61 | 3.07 | 1.2 |
oltp_update_non_index | 2.66 | 3.02 | 1.1 |
oltp_write_only | 3.75 | 7.3 | 1.9 |
types_delete_insert | 5.28 | 6.79 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
backup restore
when restoring from a backup which: (1) uses nbs.NomsBlockStore (for example, gs://, or file://) and (2) transiting any given TableFile takes > 500ms. This is most likely to happen with gs:// remotes.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.21 | 4.1 | 3.4 |
index_join_scan | 1.14 | 2.11 | 1.9 |
index_scan | 31.37 | 55.82 | 1.8 |
oltp_point_select | 0.14 | 0.5 | 3.6 |
oltp_read_only | 2.86 | 8.58 | 3.0 |
select_random_points | 0.29 | 0.77 | 2.7 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 31.37 | 55.82 | 1.8 |
types_table_scan | 71.83 | 170.48 | 2.4 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.57 | 6.32 | 1.1 |
oltp_insert | 2.81 | 3.02 | 1.1 |
oltp_read_write | 6.79 | 15.83 | 2.3 |
oltp_update_index | 2.86 | 3.13 | 1.1 |
oltp_update_non_index | 3.02 | 3.13 | 1.0 |
oltp_write_only | 4.03 | 7.56 | 1.9 |
types_delete_insert | 5.47 | 7.17 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
dolt diff
shouldn't print ignored tables.$ batsee --help
NAME
batsee - Run the Bats Tests concurrently
SYNOPSIS
batsee [-t <threads>] [--skip-slow] [--max-time <time>] [--retries <retries>] [--only test1,test2,...]
DESCRIPTION
From within the integration-test/bats directory, run the bats tests concurrently.
Output for each test is written to a file in the batsee_output directory.
Example: batsee -t 42 --max-time 1h15m -r 2 --only types.bats,foreign-keys.bats
OPTIONS
-t <threads>, --threads=<threads>
Number of tests to execute in parallel. Defaults to 12
-s, --skip-slow
Skip slow tests. This is a static list of test we know are slow, may grow stale.
--max-time=<duration>
Maximum time to run tests. Defaults to 30m
--only
Only run the specified test, or tests (comma separated)
-r <retries>, --retries=<retries>
Number of times to retry a failed test. Defaults to 1
dolt status
should say "tables", not "files"RENAME TABLE
statementRENAME TABLE
statementALTER TABLE ... RENAME ...
statementPublished by github-actions[bot] over 1 year ago
mysql2
), so this PR adds a connector integration test for it.RENAME TABLE
statementRENAME TABLE
statementALTER TABLE ... RENAME ...
statementDecimal
property in Field response metadatamysql2
library.RENAME COLUMN
DROP COLUMN
ADD COLUMN
ALTER INDEX
CALL dolt_clone()
does not configure the cloned database for replication.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.18 | 4.1 | 3.5 |
index_join_scan | 1.14 | 2.07 | 1.8 |
index_scan | 30.81 | 55.82 | 1.8 |
oltp_point_select | 0.15 | 0.5 | 3.3 |
oltp_read_only | 2.91 | 8.74 | 3.0 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 31.37 | 55.82 | 1.8 |
types_table_scan | 71.83 | 173.58 | 2.4 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.0 | 5.99 | 1.2 |
oltp_insert | 2.48 | 2.97 | 1.2 |
oltp_read_write | 6.67 | 15.83 | 2.4 |
oltp_update_index | 2.57 | 3.02 | 1.2 |
oltp_update_non_index | 2.61 | 3.02 | 1.2 |
oltp_write_only | 3.75 | 7.43 | 2.0 |
types_delete_insert | 5.09 | 6.67 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
Decimal
property in Field response metadatamysql2
library.nil
. But NULL constants have type types.Null
, and we need to check for that too.expression.UnresolvedColumn
for OnDuplicateExpressionsInsertInto.OnDuplicateExprs
. Since qualify uses transform.OneNodeExprWithNode
it will try to qualify all expressions (Literals
, Tuples
, etc). This change makes it so that we only try to qualify Columns.InSubquery
...
CrossJoin
Left: Table
Right: SubqueryAlias
OuterScopeVisibility: true
...
HashJoin
HashLookup
source: ...
target: TableAlias
...
The indexes we assign to GetFields during analysis don't align with the indexes of the actual columns in each row during execution time. This is a result of StripNode, PrependNode, and the nested Joins with SubqueryAlias.IndexOutOfBounds
errors and just returned potentially incorrect results instead.SubqueryAlias
nodes with OuterScopeVisibilty = true
inside joins need to see the left sibling node (in addition to the parent nodes). So Scope
was modified to include some new fields, specifically for sibling nodes. Additionally, the file finalizeSubquery
was changed to track the parent as well, so we could detect when we're analyzing a SubqueryAlias
on the right side of a join, and add the left child to the scope.PrependRow
nodes cache the rows outside the InSubquery
, while the buildJoinIter for CrossJoin
would include both the outside and the left row. This meant that some parts of the inner HashJoin would receive extra columns while others didn't. The fix here was to alter the scope.InJoin
depending on which parts of HashJoin we were building.finalizeUnions
in postPrepared
, as we don't replan joins in postPrepared
, so we don't know if we're in a join or not, and the correct indexes are set in prePrepared
.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.14 | 2.11 | 1.9 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.81 | 8.43 | 3.0 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 71.83 | 173.58 | 2.4 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.77 | 6.21 | 1.1 |
oltp_insert | 2.71 | 2.97 | 1.1 |
oltp_read_write | 6.91 | 15.83 | 2.3 |
oltp_update_index | 3.02 | 3.13 | 1.0 |
oltp_update_non_index | 3.25 | 3.13 | 1.0 |
oltp_write_only | 4.03 | 7.56 | 1.9 |
types_delete_insert | 5.47 | 6.91 | 1.3 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
dolt_ignore
system table.dolt_ignore
is slightly more complicated than the implementation of existing writable persisted system tables (like dolt_procedures
and dolt_docs
), but I think it's better this way.dolt_procedures
exist as DoltTables stored in the user's db alongside user created tables. The user can read and write from these tables, but cannot create, drop, or alter them. CLI commands reference these tables and create them if they don't already exist. This works, but it means that the logic that governs these tables is spread out across the different commands that interact with them, and the user can't interact with them until running a command that creates them.dolt_ignore
works slightly differently: it's backed by a DoltTable, but it also has its own sql.Table implementation. This allows us to define behavior for when the backing table hasn't been created yet: reads return an empty index, and writes create the table. As far as the mysql engine is concerned, this table always exists. So for the commands that care about dolt_table
, the logic can be simpler.dolt_ignore
only works with FORMAT_DOLT at the moment. If using FORMAT_LD, the table will be ignored by dolt add
and dolt_stash.
There's no reason it can't work with FORMAT_LD, but the logic for getting a RowIter from an Index is slightly different and I didn't invest the time to figure it out. This is currently only documented in a comment, but can be documented more widely if needed.dolt_ignore
only affects the staging and stashing of untracked files. This is consistent with git's behavior. If a table that has already been added, dolt_ignore
will not prevent further changes to it. It also won't prevent a staged table from being renamed, either to or from an ignored table name.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.66 | 1.4 |
groupby_scan | 12.08 | 16.41 | 1.4 |
index_join | 1.16 | 4.03 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.14 | 0.49 | 3.5 |
oltp_read_only | 2.81 | 8.43 | 3.0 |
select_random_points | 0.29 | 0.75 | 2.6 |
select_random_ranges | 0.34 | 1.14 | 3.4 |
table_scan | 30.26 | 54.83 | 1.8 |
types_table_scan | 70.55 | 173.58 | 2.5 |
reads_mean_multiplier | 2.4 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.0 | 5.77 | 1.2 |
oltp_insert | 2.39 | 2.86 | 1.2 |
oltp_read_write | 6.32 | 15.55 | 2.5 |
oltp_update_index | 2.52 | 2.97 | 1.2 |
oltp_update_non_index | 2.52 | 2.91 | 1.2 |
oltp_write_only | 3.62 | 7.43 | 2.1 |
types_delete_insert | 5.0 | 6.67 | 1.3 |
writes_mean_multiplier | 1.5 |
Overall Mean Multiple | 2.0 |
---|
Published by github-actions[bot] over 1 year ago
5818: Transaction isolation for branch-qualified databases
As well as substantially address the issues about concurrent access to dolt_branches
called out in https://github.com/dolthub/dolt/issues/5784
As a consequence, the dolt_branch
procedure now implicitly commits any current transaction.
5815: Prevent merges when either side has multiple indexes covering the same set of columns
When merging multiple indexes that cover the same set of columns (even if they are different types, such as a unique index and a prefix index), there is a race condition because of how our index support assumes the column tag set will be unique for every index. This can cause the wrong index to be matched and the wrong merge decisions to be made.
I tried to come up with another way to opportunistically match indexes across the sides of a merge in PR https://github.com/dolthub/dolt/pull/5797, but I still found more edge cases and the extra complexity didn't seem worth it. It seemed better to have Dolt be vocal about the issue and let users resolve it, instead of trying to be clever when we can't merge that situation correctly every time.
5814: go/libraries/doltcore/env/multi_repo_env.go: Always use the GRPCDialProvider from the bootstrap env for the MultiRepoEnv RemoteDialProvider.
Fixes #5811.
5806: Report schema conflicts for merges with column type changes
As a first step towards being able to auto-resolve column type changes during a merge, I added a check for type compatibility (which always returns incompatible for DOLT
storage format, unless the TypeInfos are exactly the same). This also results in schema conflict metadata being reported.
I also added some tests for a few classes of type changes and reorganized the existing tests a bit.
5803: Fix dolt creds check with specified endpoint
Using dolt creds check --endpoint <endpoint> --creds <creds>
was failing with an audience error because we were using the wrong parsing logic to get the host for the endpoint. This fixes that and adds a log if the endpoint cannot be parsed
% dolt creds check --endpoint doltremoteapi.awsdev.ld-corp.com:443 --creds b33diq4ht3t73hnp5bofekvsg9lk36ou2gto74f7ot02g38r70mg
Calling...
Endpoint: doltremoteapi.awsdev.ld-corp.com:443
Key: b33diq4ht3t73hnp5bofekvsg9lk36ou2gto74f7ot02g38r70mg
error: calling doltremoteapi with credentials.
cause: rpc error: code = Unauthenticated desc = jwt_token validation failed: square/go-jose/jwt: validation failed, invalid audience claim (aud)
5800: go/doltcore/{sqle, merge}: Update sqlutil.ParseCreateTable to fix test gaps in schema merge suite
5798: --data-dir flag enabled before the sql subcommand
The complexity of creating global arguments is being broken into multiple pieces. This step includes the breaking up of the top level dolt command set to enable global argument parsing and initialization of the CliContext. At present, the sql subcommand is the only one getting this treatment, but it will be extended with additional commands in the future.
This change doesn't change much that is visible to the user, with the exception of the --data-dir flag being enabled before the sql subcommand.
Step 4 of N for: https://github.com/dolthub/dolt/issues/3922
5795: Correct busted interface change for CliContext
TIL that interface pointers in golang are not useful. This changes that, and add in a couple calls in command.go which were neglected in the first refactor.
Step 3 of N: https://github.com/dolthub/dolt/issues/3922
5790: Bug fix and test for index merge bug that didn't detect incompatible index types
The equality functions on Index
weren't considering prefixLengths
or isSpatial
, which resulted in a merge bug where dolt would get confused and match two indexes as identical when they really weren't.
5788: Adding basic support for conflict validation in new schema merge test framework
This also pointed out an issue in the framework where any secondary index and check constraint definitions are silently swallowed.
5787: Run schema merge tests in both directions
Running the ThreeWayMergeWithSchemaChangeTestScripts
tests in both directions has been pretty helpful to catch a few bugs, so I took a stab at making testSchemaMerge
run merge tests in both directions.
There shouldn't be any changes to the test cases, but it does help remove duplication in the test cases so that they are a little easier to maintain.
(I see the Check Formatting CI check is failing here, too... I'll push another commit to reformat those and see if that makes it happy.)
5783: dolt show
supports displaying non-commit objects.
PR is still a draft: it needs additional documentation and tests.
dolt show
now accepts a hash of any object in the datastore, not just commits. It will also accept the special strings WORKING and STAGED.
Some object types (currently just commits) have two representations: a "pretty" format which is more human readable, and a "non-pretty" format which displayed as JSON-like structured data. dolt show
prefers the pretty format when possible, but this can be suppressed with --no-pretty
.
Further work: add support for --raw
, which outputs the raw binary object. (noms show
supports this but I don't know how much use it gets.)
5779: Add the CliContext parameter to Command.Exec
Empty interface passed as last argument to Exec. Refactor by goland.
NoOp change.
5777: go.mod: Bump go-mysql-server, migrate to github.com/dolthub/flatbuffers/v23/go.
5773: Fixed a bug where foreign key changes in the working set weren't carried forward during dolt checkout
Fixes #1310
5772: Schema conflict detection edge cases
https://github.com/dolthub/dolt/issues/2973 pointed out an edge case where a schema conflict wasn't getting reported. That uncovered some other edge cases. Adding those the current code was feeling messy, so I refactored our column merge logic a bit to try and better organize it. We now have mostly separate steps for: 1) calculating the mapping between left/right/anc columns, 2) detecting conflicts based on that mapping, and 3) iterating through the mapping and deciding which column to accept in the merge.
I'm still not super happy with the conflictKind
and the error messages that describe the schema conflicts, but I thought it would make more sense to see the schema merge conflict resolution UX you're working on and then clean those up in a separate pass.
Fixes: https://github.com/dolthub/dolt/issues/2973
5771: Follow-up to validating extra command line arguments.
A follow-up to https://github.com/dolthub/dolt/pull/5762 addressing comments in the original PR.
5768: Add Server Runtime details to the sql-server.lock file
Add runtime information for the server to the sql-server.lock file. We track three pieces of information:
5767: go/doltcore/{doltdb, sqle}: dolt_schema_conflicts system table
…m table
5764: Update setup instructions for bats tests
Bats tests also require that remotesrv be installed.
I added instructions for that to the README.
5762: Add error when commands have extra arguments.
Rolling this "Add error when commands have extra arguments." again.
dolt sql-client
inherits its arg parser from dolt sql-server
, which didn't play nice with the original PR's restriction on sql-server's positional arguments. I relaxed the arg parser and added an extra verification check into sql-server itself.
5761: Revert "Add error when commands have extra arguments."
Reverts dolthub/dolt#5753
I mistakenly thought that a failing test was flaky. Time to revert the change, investigate, and make sure I don't do anything like this again.
5760: Fix error message in remote command
5753: Add error when commands have extra arguments.
Multiple commands would previously silently ignore extra positional arguments. This happened most frequently with commands that aren't supposed to take any positional arguments, but also occurred with some others, most notably merge, which caused https://github.com/dolthub/dolt/issues/5729.
This fixes that by requiring users of ArgParser to specify how many positional arguments they expect by calling either NewArgParserWithMaxArguments(int)
or NewArgParserWithVariableArguments()
. The error message can be customized by assigning to ArgParser.TooManyArgsError
. The goal is that by requiring developers to be explicit about this, it will help avoid similar issues in the future.
This adds BATS tests for dolt merge
in order to test that the new functionality works. I'm not going to add tests for every other command because there's like 80, but new commands should probably have a test for too many positional args.
5732: Fixed bug in dolt checkout
with uncommitted changes on another branch
Fixes #5725
5655: Add BATS test that dolt log correctly tags HEAD commits.
Regression test for https://github.com/dolthub/dolt/issues/5558
5626: Schema merge support for adding/dropping/renaming/reordering columns
First pass at getting schema merge working for column adds/drops/renames/reorders. Includes support for:
InSubquery
...
CrossJoin
Left: Table
Right: SubqueryAlias
OuterScopeVisibility: true
...
HashJoin
HashLookup
source: ...
target: TableAlias
...
The indexes we assign to GetFields during analysis don't align with the indexes of the actual columns in each row during execution time. This is a result of StripNode, PrependNode, and the nested Joins with SubqueryAlias.IndexOutOfBounds
errors and just returned potentially incorrect results instead.SubqueryAlias
nodes with OuterScopeVisibilty = true
inside joins need to see the left sibling node (in addition to the parent nodes). So Scope
was modified to include some new fields, specifically for sibling nodes. Additionally, the file finalizeSubquery
was changed to track the parent as well, so we could detect when we're analyzing a SubqueryAlias
on the right side of a join, and add the left child to the scope.PrependRow
nodes cache the rows outside the InSubquery
, while the buildJoinIter for CrossJoin
would include both the outside and the left row. This meant that some parts of the inner HashJoin would receive extra columns while others didn't. The fix here was to alter the scope.InJoin
depending on which parts of HashJoin we were building.finalizeUnions
in postPrepared
, as we don't replan joins in postPrepared
, so we don't know if we're in a join or not, and the correct indexes are set in prePrepared
.json_set
function with a few edge cases outstandingfind_in_set
MaxTextResponseByteLength()
to respect character_set_results
Type.MaxTextResponseByteLength()
function was not honoring the character_set_results
system variable, which resulted in Dolt sending different response length metadata from MySQL when the value of character_set_results
is not the same as the type's charset.*sql.Context
parameter to the MaxTextResponseByteLength(ctx)
function, so that the correct value can be pulled out of the session when the response metadata is sent through the handler.dolt_clone
sql procedure to clone a private database has weird behaviorNULL
return values with false filter or empty setdolt checkout
call dolt_merge('branch1', 'branch2')
should either merge branch1
and branch2
or fail not silently ignore the branch2
argument.sql-client
missing user parameterconvert_tz
is not working as expected with @@GLOBAL.time_zone
Published by github-actions[bot] over 1 year ago
EVENT
storage handlinglast_executed
is not implemented yet). The event execution is not implemented yet.dolt_events
system table.RENAME TABLE
statement (#1712)"ViewDatabase
implementation for PrivilegedDatabase
, which is causing some Dolt cluster integration tests to fail. Temporarily pulling this commit out so we can get other GMS changes through and can debug the Dolt test failures separately.MaxTextResponseByteLength()
to respect character_set_results
Type.MaxTextResponseByteLength()
function was not honoring the character_set_results
system variable, which resulted in Dolt sending different response length metadata from MySQL when the value of character_set_results
is not the same as the type's charset.*sql.Context
parameter to the MaxTextResponseByteLength(ctx)
function, so that the correct value can be pulled out of the session when the response metadata is sent through the handler.RENAME TABLE
statement
RENAME TABLE ... TO ...
statementViewDatabase
implementation for PrivilegedDatabase
ALTER TABLE ... RENAME ...
should fail for renaming of views. Currently, vitess
parses both the statements into the same node, which makes GMS
parser not be able to detect the difference.ERROR 1347 (HY000): 'mydb.myview' is not BASE TABLE
Created At
and Modified At
fields can re-set every time the procedure is loaded in, instead of showing the correct timestamp. This change updates the loaded in procedure with the correct timestamps.EVENT
storage handlingCREATE EVENT
statementDROP EVENT
statementSHOW EVENTS
statementSHOW CREATE EVENT
statement.SHOW
statements.go-mysql-server
with Trino and I have noticed that it does work when I have either timestamp
or datetime
. I have asked them https://github.com/trinodb/trino/issues/16575 whether it's ok for them to implement default column size like they did for Phoenix connector, but they did not want to add it. I still think it should be fine without column size, since most of the clients (except the ones which are written in java) accept date time without column size.0
as column size for timestamp
and datetime
dolt sql-server
invalid ref format: refs/heads/
when encountering a database with no main branch.dolt sql
interactive shell can't see changes created in another shell if it is runningdolt show
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.76 | 1.4 |
groupby_scan | 12.3 | 16.41 | 1.3 |
index_join | 1.16 | 4.1 | 3.5 |
index_join_scan | 1.12 | 2.07 | 1.8 |
index_scan | 31.37 | 54.83 | 1.7 |
oltp_point_select | 0.15 | 0.49 | 3.3 |
oltp_read_only | 2.86 | 8.58 | 3.0 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 31.37 | 56.84 | 1.8 |
types_table_scan | 75.82 | 176.73 | 2.3 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 6.09 | 6.43 | 1.1 |
oltp_insert | 3.07 | 3.19 | 1.0 |
oltp_read_write | 7.04 | 16.12 | 2.3 |
oltp_update_index | 3.02 | 3.3 | 1.1 |
oltp_update_non_index | 3.13 | 3.25 | 1.0 |
oltp_write_only | 4.49 | 7.7 | 1.7 |
types_delete_insert | 5.99 | 7.04 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.9 |
---|