Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository.

Overview

Dolt

Dolt is Git for Data!

Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate's changes.

All the commands you know for Git work exactly the same for Dolt. Git versions files, Dolt versions tables. It's like Git and MySQL had a baby!

We also built DoltHub, a place to share Dolt databases. We host public data for free!

Join us on Discord to say hi and ask questions!

What's it for?

Lots of things! Dolt is a generally useful tool with countless applications. But if you want some ideas, here's how people are using it so far.

How do I use it?

Check out our quick-start guide to skip the docs and get started as fast as humanly possible! Or keep reading for a high level overview of how to use the command line tool.

Having problems? Read the FAQ to find answers.

Dolt CLI

The dolt CLI has the same commands as git, with some extras.

$ dolt
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.
               reset - Remove table changes from the list of staged table changes.
              commit - Record changes to the repository.
                 sql - Run a SQL query against tables in repository.
          sql-server - Start a MySQL-compatible server.
                 log - Show commit logs.
                diff - Diff a table.
               blame - Show what revision and author last modified each row of a table.
               merge - Merge a branch.
              branch - Create, list, edit, delete branches.
                 tag - Create, list, delete tags.
            checkout - Checkout a branch or overwrite a table from HEAD.
              remote - Manage set of tracked repositories.
                push - Push to a dolt remote.
                pull - Fetch from a dolt remote data repository and merge.
               fetch - Update the database from a remote data repository.
               clone - Clone from a remote data repository.
               creds - Commands for managing credentials.
               login - Login to a dolt remote host.
             version - Displays the current Dolt cli version.
              config - Dolt configuration.
                  ls - List tables in the working set.
              schema - Commands for showing and importing table schemas.
               table - Commands for copying, renaming, deleting, and exporting tables.
           conflicts - Commands for viewing and resolving merge conflicts.
             migrate - Executes a repository migration to update to the latest format.
         read-tables - Fetch table(s) at a specific commit into a new dolt repo
                  gc - Cleans up unreferenced data from the repository.

Installation

From Latest Release

To install on Linux or Mac based systems run this command in your terminal:

sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'

This will download the latest dolt release and put it in /usr/local/bin/, which is probably on your $PATH.

Homebrew

Dolt is on Homebrew, updated every release.

brew install dolt

Windows

Download the latest Microsoft Installer (.msi file) in releases and run it.

For information on running on Windows, see here.

Chocolatey

You can install dolt using Chocolatey:

choco install dolt

From Source

Make sure you have Go installed, and that go is in your path.

Clone this repository and cd into the go directory. Then run:

go install ./cmd/dolt

Configuration

Verify that your installation has succeeded by running dolt in your terminal.

$ dolt
Valid commands for dolt are
[...]

Configure dolt with your user name and email, which you'll need to create commits. The commands work exactly the same as git.

$ dolt config --global --add user.email [email protected]
$ dolt config --global --add user.name "YOUR NAME"

Getting started

Let's create our first repo, storing state population data.

$ mkdir state-pops
$ cd state-pops

Run dolt init to set up a new dolt repo, just like you do with git. Then run some SQL queries to insert data.

$ dolt init
Successfully initialized dolt data repository.
$ dolt sql -q "create table state_populations ( state varchar(14), population int, primary key (state) )"
$ dolt sql -q "show tables"
+-------------------+
| tables            |
+-------------------+
| state_populations |
+-------------------+
$ dolt sql -q "insert into state_populations (state, population) values
('Delaware', 59096),
('Maryland', 319728),
('Tennessee', 35691),
('Virginia', 691937),
('Connecticut', 237946),
('Massachusetts', 378787),
('South Carolina', 249073),
('New Hampshire', 141885),
('Vermont', 85425),
('Georgia', 82548),
('Pennsylvania', 434373),
('Kentucky', 73677),
('New York', 340120),
('New Jersey', 184139),
('North Carolina', 393751),
('Maine', 96540),
('Rhode Island', 68825)"
Query OK, 17 rows affected

Use dolt sql to jump into a SQL shell, or run single queries with the -q option.

$ dolt sql -q "select * from state_populations where state = 'New York'"
+----------+------------+
| state    | population |
+----------+------------+
| New York | 340120     |
+----------+------------+

add the new tables and commit them. Every command matches git exactly, but with tables instead of files.

$ dolt add .
$ dolt commit -m "initial data"
$ dolt status
On branch master
nothing to commit, working tree clean

Update the tables with more SQL commands, this time using the shell:

update state_populations set population = 0 where state like 'New%'; Query OK, 3 rows affected Rows matched: 3 Changed: 3 Warnings: 0 state_pops> exit Bye ">
$ dolt sql
# Welcome to the DoltSQL shell.
# Statements must be terminated with ';'.
# "exit" or "quit" (or Ctrl-D) to exit.
state_pops> update state_populations set population = 0 where state like 'New%';
Query OK, 3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
state_pops> exit
Bye

See what you changed with dolt diff:

$ dolt diff
diff --dolt a/state_populations b/state_populations
--- a/state_populations @ qqr3vd0ea6264oddfk4nmte66cajlhfl
+++ b/state_populations @ 17cinjh5jpimilefd57b4ifeetjcbvn2
+-----+---------------+------------+
|     | state         | population |
+-----+---------------+------------+
|  <  | New Hampshire | 141885     |
|  >  | New Hampshire | 0          |
|  <  | New Jersey    | 184139     |
|  >  | New Jersey    | 0          |
|  <  | New York      | 340120     |
|  >  | New York      | 0          |
+-----+---------------+------------+

Then commit your changes once more with dolt add and dolt commit.

$ dolt add state_populations
$ dolt commit -m "More like Old Jersey"

See the history of your repository with dolt log.

% dolt log
commit babgn65p1r5n36ao4gfdj99811qauo8j
Author: Zach Musgrave 
Date:   Wed Nov 11 13:42:27 -0800 2020

    More like Old Jersey

commit 9hgk7jb7hlkvvkbornpldcopqh2gn6jo
Author: Zach Musgrave 
Date:   Wed Nov 11 13:40:53 -0800 2020

    initial data

commit 8o8ldh58pjovn8uvqvdq2olf7dm63dj9
Author: Zach Musgrave 
Date:   Wed Nov 11 13:36:24 -0800 2020

    Initialize data repository

Importing data

If you have data in flat files like CSV or JSON, you can import them using the dolt table import command. Use dolt table import -u to add data to an existing table, or dolt table import -c to create a new one.

$ head -n3 data.csv
state,population
Delaware,59096
Maryland,319728
$ dolt table import -c -pk=state state_populations data.csv

Branch and merge

Just like with git, it's a good idea to make changes on your own branch, then merge them back to master. The dolt checkout command works exactly the same as git checkout.

$ dolt checkout -b 

The merge command works the same too.

$ dolt merge 

Working with remotes

Dolt supports remotes just like git. Remotes are set up automatically when you clone data from one.

$ dolt clone dolthub/corona-virus
...
$ cd corona-virus
$ dolt remote -v
origin https://doltremoteapi.dolthub.com/dolthub/corona-virus

To push to a remote, you'll need credentials. Run dolt login to open a browser to sign in and cache your local credentials. You can sign into DoltHub with your Google account, your Github account, or with a user name and password.

$ dolt login

If you have a repo that you created locally that you now want to push to a remote, add a remote exactly like you would with git.

$ dolt remote add origin myname/myRepo
$ dolt remote -v
origin https://doltremoteapi.dolthub.com/myname/myRepo

And then push to it.

$ dolt push origin master

Other remotes

dolt also supports directory, aws, and gcs based remotes:

  • file - Use a directory on your machine
dolt remote add  file:///Users/xyz/abs/path/
  • aws - Use an S3 bucket
dolt remote add  aws://dynamo-table:s3-bucket/database
  • gs - Use a GCS bucket
dolt remote add  gs://gcs-bucket/database

Interesting datasets to clone

DoltHub has lots of interesting datasets to explore and clone. Here are some of our favorites.

More documentation

There's a lot more to Dolt than can fit in a README file! For full documentation, check out the docs on DoltHub. Some of the topics we didn't cover here:

Credits and License

Dolt relies heavily on open source code and ideas from the Noms project. We are very thankful to the Noms team for making this code freely available, without which we would not have been able to build Dolt so rapidly.

Dolt is licensed under the Apache License, Version 2.0. See LICENSE for details.

Issues
  • Can't connect to mysql with navicat

    Can't connect to mysql with navicat

    I start a new server and I can connect to mysql with cli. image But when I create a connect to mysql with navicat, it report an error that image Excuse me, why is this?

    sql new-tool-connecting 
    opened by 00LT00 32
  • Make dbeaver work with Dolt

    Make dbeaver work with Dolt

    https://dbeaver.io/

    According to user @ptman Dolt you can't connect to Dolt using dbeaver. We need to support the SQL statements it uses to connect.

    new-tool-connecting 
    opened by timsehn 17
  • go/libraries/utils/argparser/parser.go: Clean up Parse and fix handling of -- passed as commit spec

    go/libraries/utils/argparser/parser.go: Clean up Parse and fix handling of -- passed as commit spec

    I noticed this while trying to get dolt blame to support -- as a valid value for commit spec. Previously, the parser would stop parsing when it encountered a --. This led to problems when that argument was not the last argument in the list, as in

    dolt blame -- some_table
    

    This fixes that. In the process I think I simplified the logic by taking advantage of early returns and continues to avoid else blocks and the indentation that comes with them.

    bug 
    opened by mjesuele 17
  • Fixed worker pool used for index lookups

    Fixed worker pool used for index lookups

    Current implementation can create a 100s of millions of go routines. This creates a fixed pool of routines to do random access lookups.

    opened by bheni 17
  • Transaction support

    Transaction support

    Only START TRANSACTION and COMMIT are supported.

    Needs SAVEPOINT, ROLLBACK.

    Also needs tests.

    opened by zachmu 16
  • Modify bad row error format

    Modify bad row error format

    Closes #2103.

    Before:

    A bad row was encountered while moving data.
    Bad Row: 
    "03AGDBQ24TPRIFU0LRPRHLHU8KBOK5SQSMCT8BMVFJNANULFUG4RDHNZPOV4PJNMN0DOD1PM2V5AQQTFP1HZXZG5J5BJTP7BN0A8WLBZYMBJIRU7BWTYCNXTCQUD1UYWITEJIZR5EWWP1NM4OR40P6FTQL4NHKIA870UAFXSPRF0AIK_45YNRU98ZQOZQNJFKNF89FW9" is not valid for "VarString(utf8mb4_0900_ai_ci, 180, SQL: VarChar)"
    These can be ignored using the '--continue'
    

    After:

    A bad row was encountered while moving data.
    Bad Row: 
    "03AGDBQ24TPRIFU0LRPRHLHU8KBOK5SQSMCT8BMVFJNANULFUG4RDHNZPOV4PJNMN0DOD1PM2V5AQQTFP1HZXZG5J5BJTP7BN0A8WLBZYMBJIRU7BWTYCNXTCQUD1UYWITEJIZR5EWWP1NM4OR40P6FTQL4NHKIA870UAFXSPRF0AIK_45YNRU98ZQOZQNJFKNF89FW9" is not valid for column "street_physical" (type "VarString(utf8mb4_0900_ai_ci, 180, SQL: VarChar)")
    These can be ignored using the '--continue'
    

    WIP: BATS test still needs to be written

    opened by abmyii 16
  • tuple type changes

    tuple type changes

    opened by bheni 14
  • dolt sql-server error when using PostgreSQL mysql_fdw against it

    dolt sql-server error when using PostgreSQL mysql_fdw against it

    Since dolt sql-server is MySQL compatible. I am using PostgreSQL mysql_fdw to connect to Dolt as a remote database. I am getting the following error. When I connect to a real one MariaDB, it works fine.

    dolt_agencies is a foreign table.

                 List of relations
    

    Schema | Name | Type | Owner --------+-------------------+---------------+------- public | dolt_agencies | foreign table | rji

    [local]:5432 [email protected]_pdap=# select * from dolt_agencies; ERROR: failed to execute the MySQL query: Commands out of sync; you can't run this command now

    I am using PostgreSQL 13 with the latest mysql_fdw from their github repo.

    opened by richardji7 13
  • Vinai/dolt merge Part 1. Just Fast Forward Merge

    Vinai/dolt merge Part 1. Just Fast Forward Merge

    This pr starts the Dolt_Merge process that works with a fast forward.

    opened by VinaiRachakonda 13
  • Bh/delete optimizations

    Bh/delete optimizations

    no longer converts from sql.Row to row.Row before deleting.

    opened by bheni 12
  • [auto-bump] [no-release-notes] dependency by reltuk

    [auto-bump] [no-release-notes] dependency by reltuk

    :coffee: An Automated Dependency Version Bump PR :crown:

    Initial Changes

    The initial changes contained in this PR were produced by go geting the dependency.

    $ cd ./go
    $ go get github.com/dolthub/<dependency>/[email protected]<commit>
    

    Before Merging

    This PR must have passing CI and a review before merging.

    gms-bump 
    opened by coffeegoddd 0
  • [auto-bump] [no-release-notes] dependency by reltuk

    [auto-bump] [no-release-notes] dependency by reltuk

    :coffee: An Automated Dependency Version Bump PR :crown:

    Initial Changes

    The initial changes contained in this PR were produced by go geting the dependency.

    $ cd ./go
    $ go get github.com/dolthub/<dependency>/[email protected]<commit>
    

    Before Merging

    This PR must have passing CI and a review before merging.

    gms-bump 
    opened by coffeegoddd 0
  • [auto-bump] [no-release-notes] dependency by reltuk

    [auto-bump] [no-release-notes] dependency by reltuk

    :coffee: An Automated Dependency Version Bump PR :crown:

    Initial Changes

    The initial changes contained in this PR were produced by go geting the dependency.

    $ cd ./go
    $ go get github.com/dolthub/<dependency>/[email protected]<commit>
    

    Before Merging

    This PR must have passing CI and a review before merging.

    gms-bump 
    opened by coffeegoddd 0
  • replicate HEAD on commit

    replicate HEAD on commit

    • prototype commit replication
    • only works for cli, will work for SQL after https://github.com/dolthub/dolt/pull/2137/files is merged
    • because the init state is in cli, the target dataset in datas, and logic for manipulating datasets is constrained to doltdb, this is what fell out without rearranging dependencies or exposing private fields
    • type CommitHook func(ctx context.Context, ds Dataset, db Database) error isn't super flexible
    opened by max-hoffman 0
  • Support more revision spec in database names

    Support more revision spec in database names

    These work:

    show create table `test/0i4vscdluqolq3p6p8qrq5te916sr7c4`.foo;
    show create table `test/feature-branch`.foo;
    

    But any revision spec should be possible with the same syntax (these fail now):

    show create table `test/HEAD~2`.foo;
    show create table `test/feature-branch^`.foo;
    
    opened by zachmu 1
  • SQL method to examine schema diffs

    SQL method to examine schema diffs

    dolt_diff_table and friends are focused on the data diff between two commits. We need a similar way to examine schema diffs in the SQL context.

    Current methods to inspect historical schema:

    test> show create table `test/0i4vscdluqolq3p6p8qrq5te916sr7c4`.x;
    +-------+-----------------------------------------------------------------------------------------------------------------+
    | Table | Create Table
            |
    +-------+-----------------------------------------------------------------------------------------------------------------+
    | x     | CREATE TABLE `x` (
      `y` bigint NOT NULL,
      `z` bigint,
      PRIMARY KEY (`y`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +-------+-----------------------------------------------------------------------------------------------------------------+
    test> desc `test/0i4vscdluqolq3p6p8qrq5te916sr7c4`.x;
    +-------+--------+------+-----+---------+-------+
    | Field | Type   | Null | Key | Default | Extra |
    +-------+--------+------+-----+---------+-------+
    | y     | bigint | NO   | PRI |         |       |
    | z     | bigint | YES  |     |         |       |
    +-------+--------+------+-----+---------+-------+
    

    It would be nice if we also supported the following (currently syntax errors):

    show create table foo as of 'HEAD~';
    desc foo as of 'HEAD~';
    

    But these just give you the schema at a point in time, not a diff.

    Some ideas for structured schema diffs:

    1. More system tables: dolt_schema_diff_tablename
    2. Use the information_schema database or a custom dolt extension of it, similar to the above
    opened by zachmu 1
  • Can't build from source on FreeBSD

    Can't build from source on FreeBSD

    I am attempting to install dolt on FreeBSD, but get the following error when building from source:

    /home/private/dolt/go> go install ./cmd/dolt ./cmd/git-dolt ./cmd/git-dolt-smudge                                                                                                                                                                                                                                                
    # github.com/dolthub/go-mysql-server/internal/sockstate
    ../../go/pkg/mod/github.com/dolthub/[email protected]/internal/sockstate/sockstate.go:37:16: undefined: tcpSocks
    

    I note that undefined: tcpSocks also shows up in #113, in trying to compile for the browser, so it may have something to do with system resources available. I note I'd be fine running it without sockets and only via TCP connections.

    I am building from the current master (2bfa87e27b9733cb0c93b1c313dfbcf2b629381f), go version go1.16.7 freebsd/amd64, FreeBSD 12.2-RELEASE-p2 amd64.

    This is a hobby server test and not blocking critical work, but I'd appreciate if there were a fix. Happy to provide additional diagnostics.

    opened by noamross 1
  • Support for multi-table updates and deletes

    Support for multi-table updates and deletes

    Updates and deletes can't handle mentioning more than one table or joins right now.

    enhancement 
    opened by zachmu 1
  • `dolt add .` regression related to license file

    `dolt add .` regression related to license file

    ~/datasets/test>dolt init
    Successfully initialized dolt data repository.
    ~/datasets/test>curl https://creativecommons.org/licenses/by/3.0/legalcode.txt > LICENSE.md
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 19467    0 19467    0     0   124k      0 --:--:-- --:--:-- --:--:--  124k
    ~/datasets/test>dolt status
    On branch master
    Untracked files:
      (use "dolt add <table|doc>" to include in what will be committed)
    	new doc:        LICENSE.md
    ~/datasets/test>dolt add .
    Unknown error
    cause: "Creative Commons Legal Code
    
           Attribution 3.0 Unported
    
               CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
               LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
               ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
               INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
               REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
               DAMAGES RESULTING FROM ITS USE.
    
    ...
    
    opened by bheni 0
Releases(v0.28.4)
  • v0.28.4(Sep 16, 2021)

    Merged PRs

    dolt

    • 2143: Import fix to not put NullValue into types.Tuples for map values
    • 2142: Bump GMS
    • 2139: common library fetchRefSpec
      • consolidate getRefSpecs functions from cli/env
      • fetch argument switching matches git more closely -- specifying the remote is necessary, no default to origin
    • 2135: /go/libraries/doltcore/{env,doltdb,ref}: Add init.defaultBranch to Dolt Config mirrors Git config functionality:
      git init
      hint: Using 'master' as the name for the initial branch. This default branch name
      hint: is subject to change. To configure the initial branch name to use in all
      hint: of your new repositories, which will suppress this warning, call:
      hint:
      hint:   git config --global init.defaultBranch <name>
      
    • 2131: Create Dolt Database
    • 2125: Support GetDiffsWithFilter for keyless tables On dolthub we're using diff.NewAsyncDiffer instead of diff.NewRowDiffer to list row diffs (see here), which doesn't have support for diffing keyless tables (https://www.dolthub.com/repositories/ttest/keyless/pulls/1/compare). In order to use NewRowDiffer, we need to add a GetDiffsWithFilter method for keyless tables. I tried writing tests for this, but was having a hard time figuring out what the rows map for keyless tables should look like
    • 2112: Only show key name, not column tag number Closes #2107.

    go-mysql-server

    • 552: Fixed actual default collation representative
    • 551: Check Error when building Session
    • 549: Mutable DatabaseProvider refactor
    • 548: Fix Resolve Defaults
    • 547: Expose CREATE DATABASE to integrators Remove AddDatabase functionality from Catalog and DatabaseProvider. Must have a DatabaseProvider with a static set of Databases to construct a Catalog. New Databases can be created with CreateDatabase, which is now an integrator function.
    • 544: sql/plan: exchange_test.go: Sometimes these tests fail under -race because they are racey. Fix that.
    • 540: sql/expression/function/aggregation: Change aggregation functions to work better with group by expressions. The existing code seems to be expecting rows to arrive in order of the group by expression. But the analyzer does not arrange for that to happen. Instead, this PR changes the approach so that each aggregation function duplicates its Child expression(s) as part of its per-aggregation state. That way it can Eval against its per-group-by Child and get the correct results out of Distinct for example. This PR updates AVG, FIRST, LAST, MAX, MIN and SUM to do this. COUNT(DISTINCT ...) is handled by a special expression node instead, and nothing has been changed in Count or CountDistinct. group_concat also seems to handle DISTINCT itself, and so I have not changed anything there. Json aggregation did not look immediately amenable to combining with DISTINCT, because the Update functions seemed to error when the child expression returned nil, so I have not changed them either.

    vitess

    • 84: support for value and status keywords needed two features for mlflow:
      • column named value (alter table t modify value float(53) not null)
      • check named status (alter table a drop check status)
    • 83: Max/drop pk

    Closed Issues

    • 2107: Bad error message for foreign key constraint violation in import
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(25.73 MB)
    dolt-linux-amd64.tar.gz(26.12 MB)
    dolt-windows-amd64.msi(27.14 MB)
    dolt-windows-amd64.zip(26.47 MB)
    install.sh(3.03 KB)
  • v0.28.3(Sep 13, 2021)

    Merged PRs

    dolt

    • 2132: Fixed VRW reference issues Previously we were using memory value stores in some places, and everything seemed to be working, but I think our garbage collection changes exposed some inconsistencies that were causing bugs. This PR threads values stores to where they need to be and removes the majority of the places where we were using memory value stores. This also solves a multitude of fuzzer issues, including the corrupted database error: https://github.com/dolthub/fuzzer/issues/337 And also the cause of some rows not being found and silently causing some operations to no-op (bats test included): https://github.com/dolthub/fuzzer/issues/597
    • 2130: change panics to err on rollback
    • 2129: hoist editor parameters up for greater flexibility
    • 2126: inmem deaf
    • 2124: integration-tests: Fix MySQLDockerfile for go 1.17.1.
    • 2121: go/libraries/doltcore/sqle/altertests: Run unit tests in parallel.
    • 2120: sql dolt_push and dolt_fetch no concurrency
      • adds select dolt_push('origin', 'master') and select dolt_fetch('origin')
      • no locking
      • refspec management is kind of busted, but it was like that before i added the sql functions
      • fresh unit tests for sql push, fetch
      • fetch cli + sql needs to be consolidated, but in a different PR
    • 2119: Release dolt sql-client command
    • 2117: go: remotestorage: hedge_test.go: Fix these tests to be less flakey, use determinstic interleaving of goroutines and hedge requests by instrumenting hedger's time.After.
    • 2114: Bump Go version to 1.17
    • 2109: go/libraries/doltcore/dbfactory: Change our GRPC remote DB factory to take the GRPC dialer through a param. Prior to this change, we used to set a global variable in the dbfactory package which referred to whichever DoltEnv was loaded most recently. It was racey and it has pretty terrible semantics.
    • 2106: Give each SQL query in the shell its own context, and fix SIGTERM behavior for SQL shell Fixes https://github.com/dolthub/dolt/issues/2101 Fixes https://github.com/dolthub/dolt/issues/2025 Fixes https://github.com/dolthub/dolt/issues/1155 Fixes #871
    • 2104: Modify bad row error format Closes #2103. Before:
      A bad row was encountered while moving data.
      Bad Row:
      "03AGDBQ24TPRIFU0LRPRHLHU8KBOK5SQSMCT8BMVFJNANULFUG4RDHNZPOV4PJNMN0DOD1PM2V5AQQTFP1HZXZG5J5BJTP7BN0A8WLBZYMBJIRU7BWTYCNXTCQUD1UYWITEJIZR5EWWP1NM4OR40P6FTQL4NHKIA870UAFXSPRF0AIK_45YNRU98ZQOZQNJFKNF89FW9" is not valid for "VarString(utf8mb4_0900_ai_ci, 180, SQL: VarChar)"
      These can be ignored using the '--continue'
      

      After:

      A bad row was encountered while moving data.
      Bad Row:
      "03AGDBQ24TPRIFU0LRPRHLHU8KBOK5SQSMCT8BMVFJNANULFUG4RDHNZPOV4PJNMN0DOD1PM2V5AQQTFP1HZXZG5J5BJTP7BN0A8WLBZYMBJIRU7BWTYCNXTCQUD1UYWITEJIZR5EWWP1NM4OR40P6FTQL4NHKIA870UAFXSPRF0AIK_45YNRU98ZQOZQNJFKNF89FW9" is not valid for column "street_physical" (type "VarString(utf8mb4_0900_ai_ci, 180, SQL: VarChar)")
      These can be ignored using the '--continue'
      

      WIP: BATS test still needs to be written

    • 2102: sql server dolt_pull function no concurrency
      • no concurrency management, missing mutexes FetchRemoteBranch and FetchTag. Multiple server connections calling dolt_pull will overwrite each others tempfiles, but not disrupt the workingset
      • a lot of the more involved dolt_pull bats tests are tightly coupled to push and fetch. I'll clean those up when I add dolt_push and dolt_fetch
      • afaik there are no special errors for dolt_pull, underlying fetch and merge steps are responsible for themselves
    • 2100: Added escape-analysis script for Windows Builds on https://github.com/dolthub/dolt/pull/2097
    • 2098: /go/store/types: Don't compare v against itself
    • 2097: /go/utils: Escape analysis annotation tool for Goland Generates Escape Analysis annotations when files are changed image
    • 2096: go/libraries/doltcore/table: Support partitioned table iterators for keyless tables.
    • 2093: RMariaDB mysql-integration-test executes the standard query/response set, and then tests prepared statements separately.
    • 2090: go.mod: Bump go-mysql-server to pick up date handling for YYYY-M-D format. Fixes #2088.
    • 2080: Changed logging format to take advantage of logger changes in gms New log message format sample:
      2021-08-31T12:04:36-07:00 DEBUG [conn 1] Starting query {connectTime=2021-08-31T12:04:36-07:00, query=SHOW VARIABLES LIKE 't%_isolation'}
      
    • 2076: Refactor index editor This takes the same approach to the index editor that was used with the table editor. It also has to thread a bunch of stuff through in order to create the appropriate editors in different situations.
    • 2049: Bh/dbea refactor
    • 2032: Method to add a commit and update working set together atomically

    go-mysql-server

    • 538: sql/datetimetype.go: Handle parsing dates like 2021-8-3 correctly.
    • 537: server/handler.go: Have ComPrepare correctly return null result schema metadata for write statements. This fixes our server's interaction with clients which expect the result metadata for a write statement to be NULL. One such client is RMariaDB. See: https://github.com/dolthub/dolt/issues/2084.

    Closed Issues

    • 2103: Column names are not shown in a readable way when table imports fail
    • 2101: in the sql shell: describe stopped working after hitting ctrl-c during a query
    • 2025: dolt sql shell has static query time
    • 1155: catch interrupts in dolt sql during query execution / output
    • 871: Dolt handles NOW() incorrectly
    • 2088: Some values fail to convert from POSIXct (R) to DATETIME (Dolt)
    • 2084: Data doesn't transfer to Dolt from R using the RMariaDB client
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(25.70 MB)
    dolt-linux-amd64.tar.gz(26.08 MB)
    dolt-windows-amd64.msi(27.10 MB)
    dolt-windows-amd64.zip(26.43 MB)
    install.sh(3.03 KB)
  • v0.28.2(Sep 1, 2021)

    Merged PRs

    dolt

    • 2086: go/go.mod,integration-tests/mysql-client-tests: Bump go-mysql-server to pick up fix for prepared statement writes resultset metadata.
    • 2078: Better case handling for system tables
    • 2077: Fixed sql-client requiring repository
    • 2075: go/cmd/dolt: Handle SIGINT, SIGTERM with a context cancel. Also install a handler for sql-server so that the server gets stopped cleanly when we receive SIGINT or SIGTERM.
    • 2074: Auto Increment Values should reset for a table after its been dropped This table fixes a bug where a table is dropped and then readded but its next auto increment value didn't reset.
    • 2072: go/cmd/dolt: commands/sqlserver: Add configuration settings for tls_key, tls_cert and require_secure_transport.
    • 2071: Removed case sensitivity for Dolt system tables
    • 2067: Addresses different types of panics with remotes/fetches Issue: #2048 This pr addresses three issues with fetching remotes.
      1. A panic with fetching a remote in the form "remotes/.." that is invalid
      2. A panic when an added remote that is then fetched is invalid
      3. A lack of error when fetching an invalid remote
    • 2065: Print table deltas in a consistent order (currently hash order)
    • 2064: Performance improvements for code paths which create empty tuples
    • 2045: Implement --author for dolt revert and DOLT_REVERT()

    go-mysql-server

    • 537: server/handler.go: Have ComPrepare correctly return null result schema metadata for write statements. This fixes our server's interaction with clients which expect the result metadata for a write statement to be NULL. One such client is RMariaDB. See: https://github.com/dolthub/dolt/issues/2084.
    • 536: Better configurable logging support.
    • 535: Added function to parse column type strings to SQL types.
    • 532: Implement the CONVERT_TZ() SQL function.

    Closed Issues

    • 2084: Data doesn't transfer to Dolt from R using the RMariaDB client
    • 2048: Dolt fetch on unknown remote formatted with remotes/ panics
    • 2052: client version mismatch with aws remote
    • 1373: Dolt system tables are case sensitive
    • 2042: dolt_revert() SQL function needs --author option
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(27.02 MB)
    dolt-linux-amd64.tar.gz(27.42 MB)
    dolt-windows-amd64.msi(28.38 MB)
    dolt-windows-amd64.zip(27.73 MB)
    install.sh(3.03 KB)
  • v0.28.1(Aug 30, 2021)

    Merged PRs

    dolt

    • 2061: Fix bug on deleting parents of user created directory Addresses issue #2052
    • 2041: Added a global commit lock
    • 2040: drop primary key does not fail on foreign key conflict if fallback index exists this is what I need for MLflow, which errored in the original implementation:
      dolt sql -q "CREATE table parent (pk int, val int, primary key (pk, val), key `backup` (val))"
      dolt sql -q "CREATE table child (pk int, val int, foreign key (val) references parent (val))"
      dolt sql -q "alter table parent drop primary key"
      
    • 1901: dolt_remote table read path This PR originally supported reading and writing a dolt_remotes system table. It is far bigger than necessary to just support the write path. But the write path code here still works. The SessionStateAdaptor refactor removed write path support, so a lot of the code is currently dead. The Insert/Update/Delete code and bats tests still work if we implement SessionStateAdaptor.AddRemote and SessionStateAdaptor.DeleteRemote, so I think the code is worth keeping. I refactored the CLI functions in the process of adding Insert/Delete/Update to avoid duplication, though it is unnecessary until dolt_remote writes are fixed.

    go-mysql-server

    • 534: server/server: Support configuring TLSConfig in the vitess Listener.
    • 529: Vinai/load file

    Closed Issues

    • 2052: client version mismatch with aws remote
    • 1125: Error in merge error messaage
    • 2046: "not like" syntax is broken for Null values.
    • 1968: Add support for LOAD_FILE()
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.99 MB)
    dolt-linux-amd64.tar.gz(27.39 MB)
    dolt-windows-amd64.msi(28.34 MB)
    dolt-windows-amd64.zip(27.70 MB)
    install.sh(3.03 KB)
  • v0.28.0(Aug 24, 2021)

    Merged PRs

    dolt

    • 2023: global system var for sql-server session branch setting @@GLOBAL.dolt_sql_server_branch_ref overwrites the branch for new sql-server connections. Setting the variable does not change the current connection's branch. If the variable is set to an invalid ref (ex: branch does not exist), the behavior is undefined for new connections.
      > set GLOBAL dolt_sql_server_branch_ref = 'refs/heads/new'
      Query OK, 1 row affected (0.00 sec)
      mysql> select @@GLOBAL.dolt_sql_server_branch_ref;
      +-------------------------------------+
      | @@GLOBAL.dolt_sql_server_branch_ref |
      +-------------------------------------+
      | refs/heads/new                      |
      +-------------------------------------+
      1 row in set (0.00 sec)
      mysql> select active_branch();
      +-----------------+
      | active_branch() |
      +-----------------+
      | master          |
      +-----------------+
      mysql> exit
      Bye
      $ mysql --user root --host=0.0.0.0 -p tmp1
      mysql> select active_branch();
      +-----------------+
      | active_branch() |
      +-----------------+
      | new             |
      +-----------------+
      1 row in set (0.00 sec)
      
    • 2021: Changed TEXT types to use BlobKind Previously we were using types.String at the noms layer to handle our TEXT types. This works for relatively small strings, but causes issues when using larger strings (such as a 2GB string). I'm not sure of the point at which performance tanks/crashes occur using types.String, but types.Blob can handle a string of arbitrary length (up to our allowed maximum of 4GB for sure). This also matches how our BLOB types are implemented. We do make use of the StringDefaultType variable all over the codebase, which was a LONGTEXT field. This has been changed to a VARCHAR(16383) field to preserve the expected behavior (passing in a types.String to the default string type for example). This does mean that our length limit is no longer 4GB, however I don't think we were ever reaching the VARCHAR limit to begin with, so this switch should be fine for all of our pre-existing logic. Additionally, the original string implementation remains (along with a LegacyStringDefaultType for system tables), so old repositories will continue to reference the old type as expected. This will only affect new tables. It was bad practice that we always used LONGTEXT to begin with. Our Go and bats tests make extensive use of LONGTEXT already (it was our only supported string type for a while), so minimal testing needed to be written. This PR also modifies types.Blob to properly sort, as previously it sorted by hash (which is the default for types that are an extension of sequence). Adding a proper Less function has broken some expected behaviors in noms for blobs, but they're not being used at all in Dolt, therefore it seems safe? Fixing these behaviors would entail a lower-level change, one which I didn't deem worth. Lastly, besides the large collection of small bug fixes here and there, I bumped the feature version. Any new tables that contain a TEXT type (of which there will probably be numerous) will be unable to be read by the previous version of Dolt (as they're missing the new blobStringType), and will throw an unknown error.
    • 2006: disk backed edit accumulator

    go-mysql-server

    • 530: add engine tests for dateparse Follow-up to https://github.com/dolthub/go-mysql-server/pull/523
    • 529: Vinai/load file
    • 523: implement built-in function str_to_date Closes #518 This PR implements the STR_TO_DATE MySQL function. In places where the spec is ambiguous, I'm attempting to match the behavior of MySQL version 8 from my manual testing. I need to implement a few more parsers and add more test cases to cover the expected behavior.
      go test  -cover github.com/dolthub/go-mysql-server/sql/parse/dateparse
      ok  	github.com/dolthub/go-mysql-server/sql/parse/dateparse	0.163s	coverage: 89.3% of statements
      

      cc @zachmu

    Closed Issues

    • 1968: Add support for LOAD_FILE()
    • 2002: [Bug] Simple inserts sometimes not saved
    • 531: implement auto increment ddl support
    • 518: Implement built-in STR_TO_DATE
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.97 MB)
    dolt-linux-amd64.tar.gz(27.37 MB)
    dolt-windows-amd64.msi(28.33 MB)
    dolt-windows-amd64.zip(27.69 MB)
    install.sh(3.03 KB)
  • v0.27.4.2(Aug 19, 2021)

    Merged PRs

    dolt

    • 2036: fix concurrent map edit
    • 2035: Added skipped bats test for some dolt conflicts and associated warnings I was seeing This test tests the conflict resolution workflow where you get conflicts, resolve using --ours or --theirs but still want to modify the working set. It also tests the output of dolt conflicts cat when there are no conflicts.
    • 2031: /.github/workflows/ci-performance-benchmarks-report.yaml: fix missing curly brace
    • 2019: Skipped bats test for non-deterministic table import behavior Skipped bats test for duplicate rows in a table import -u --continue producing non-deterministic imports when repeated
    • 2012: Fixed error handling in fetch, dropped error in schema import This supercedes #1575
    • 1988: Vinai/alter drop pks

    go-mysql-server

    • 528: Hacky version of read committed isolation level, which begins a new t… …ransaction on every statement. Basically it's read committed, but without the ability to turn off auto commit
    • 523: implement built-in function str_to_date Closes #518 This PR implements the STR_TO_DATE MySQL function. In places where the spec is ambiguous, I'm attempting to match the behavior of MySQL version 8 from my manual testing. I need to implement a few more parsers and add more test cases to cover the expected behavior.
      go test  -cover github.com/dolthub/go-mysql-server/sql/parse/dateparse
      ok  	github.com/dolthub/go-mysql-server/sql/parse/dateparse	0.163s	coverage: 89.3% of statements
      

      cc @zachmu

    • 516: Vinai/add drop pks

    Closed Issues

    • 1928: Support OpenSUSE with Dolt
    • 315: Altering primary key not supported via SQL
    • 872: Dolt allows changing primary key column order
    • 518: Implement built-in STR_TO_DATE
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.95 MB)
    dolt-linux-amd64.tar.gz(27.35 MB)
    dolt-windows-amd64.msi(28.30 MB)
    dolt-windows-amd64.zip(27.66 MB)
    install.sh(3.04 KB)
  • v0.27.4(Aug 16, 2021)

    Merged PRs

    dolt

    • 2017: if no working or staged hash exists in the repo file use head
    • 2013: Andy/alter drop pks

    go-mysql-server

    • 528: Hacky version of read committed isolation level, which begins a new t… …ransaction on every statement. Basically it's read committed, but without the ability to turn off auto commit
    • 519: Fix explicit DEFAULT value in insert query It seems that go-mysql-server is not compatible with insert query like:
      INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)
      

      Whereas DEFAULT is just to specify deleted columns should use column default value explicitly. The issue could be demostrated using below code:

      package main
      import (
      dbsql "database/sql"
      sqle "github.com/dolthub/go-mysql-server"
      "github.com/dolthub/go-mysql-server/auth"
      "github.com/dolthub/go-mysql-server/memory"
      "github.com/dolthub/go-mysql-server/server"
      _ "github.com/go-sql-driver/mysql"
      )
      func main() {
      db, _ := dbsql.Open("mysql", "root:@tcp(127.0.0.1:3307)/test")
      defer db.Close()
      query := `CREATE TABLE users (
      id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      deleted tinyint(1) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (id)
      ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4`
      stmt, _ := db.Prepare(query)
      stmt.Exec()
      _, err := db.Exec("INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)")
      if err != nil {
      panic(err.Error())
      }
      stmtOut, _ := db.Prepare("SELECT `deleted` FROM `users` WHERE `id` = 1")
      defer stmtOut.Close()
      deleted := true
      err = stmtOut.QueryRow().Scan(&deleted)
      if err != nil {
      panic(err.Error())
      }
      if deleted == true {
      panic("Wrong deleted value")
      }
      }
      var engine *sqle.Engine
      func init() {
      engine = sqle.NewDefault()
      db := memory.NewDatabase("test")
      engine.AddDatabase(db)
      config := server.Config{
      Protocol: "tcp",
      Address:  "localhost:3307",
      Auth:     auth.NewNativeSingle("root", "", auth.AllPermissions),
      }
      s, _ := server.NewDefaultServer(config, engine)
      go s.Start()
      }
      
      `db.Exec("INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)")` will result in error:
      Error 1105: plan is not resolved because of node '*plan.Values'
      

      This pull request should avoid such issue by turning explicit DEFAULT in insert query to implicit.

    Closed Issues

    • 1782: Conflict Logging/Resolution for UNIQUE KEYs
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.90 MB)
    dolt-linux-amd64.tar.gz(27.30 MB)
    dolt-windows-amd64.msi(28.25 MB)
    dolt-windows-amd64.zip(27.61 MB)
    install.sh(3.03 KB)
  • v0.27.3(Aug 13, 2021)

    Merged PRs

    dolt

    • 2009: fix concurrent map edit issue
    • 2004: Regression test for issue 1131
    • 2003: Added Dolt Revert If any conflicts or constraints are generated then the revert is aborted. Git handles these as a special merge case (with a special git revert --abort command and all). Additionally, if multiple commits are specified then they're all reverted in a single commit (versus Git reversing each commit in a separate commit).
    • 1999: Removed hard-coded html in docs for sql-server command Identified by #845
    • 1998: Bats test for return code behavior of checking out current branch Fixes #836
    • 1996: Skipped test for error when resetting a renamed table This reproduces the failures in #751
    • 1994: Added a test for git config and HOME env var Fixes #562
    • 1993: Fix and unskip keyword test This fixes #560
    • 1986: Andy/auto increment refactor
    • 1985: go/libraries/doltcore/env/actions/commitwalk: Optimize commitwalk a bit.
    • 1983: Update BATS README Add the prerequisites to running bats tests to the README
    • 1982: go/go.mod: Bump fslock.
    • 1976: Cleanup from transaction migration First batch of cleanup, getting rid of uses of RepoStateWriter as much as possible. To push this farther requires new abstractions that can handle updating the HEAD, head commit, and working roots at the same time, which is the next step.
    • 1974: Optimize merge by skipping tables without edits 10x speedup for the Nautobot database: before:
      % time dolt --prof cpu merge add-ipaddress
      Updating uaimen5cq6jucq3abr85klgj0g594qc1..d3922cbd8fop4ast7ohl9mm4d3dn3632
      extras_objectchange | 1 +
      ipam_ipaddress      | 1 +
      2 tables changed, 2 rows added(+), 0 rows modified(*), 0 rows deleted(-)
      dolt --prof cpu merge add-ipaddress  83.78s user 3.75s system 567% cpu 15.433 total
      

      after:

      % time dolt --prof cpu merge add-ipaddress
      Updating uaimen5cq6jucq3abr85klgj0g594qc1..d3922cbd8fop4ast7ohl9mm4d3dn3632
      extras_objectchange | 1 +
      ipam_ipaddress      | 1 +
      2 tables changed, 2 rows added(+), 0 rows modified(*), 0 rows deleted(-)
      dolt --prof cpu merge add-ipaddress  2.27s user 0.17s system 158% cpu 1.545 total
      
    • 1938: Bh/gen cs

    go-mysql-server

    • 519: Fix explicit DEFAULT value in insert query It seems that go-mysql-server is not compatible with insert query like:
      INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)
      

      Whereas DEFAULT is just to specify deleted columns should use column default value explicitly. The issue could be demostrated using below code:

      package main
      import (
      dbsql "database/sql"
      sqle "github.com/dolthub/go-mysql-server"
      "github.com/dolthub/go-mysql-server/auth"
      "github.com/dolthub/go-mysql-server/memory"
      "github.com/dolthub/go-mysql-server/server"
      _ "github.com/go-sql-driver/mysql"
      )
      func main() {
      db, _ := dbsql.Open("mysql", "root:@tcp(127.0.0.1:3307)/test")
      defer db.Close()
      query := `CREATE TABLE users (
      id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      deleted tinyint(1) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (id)
      ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4`
      stmt, _ := db.Prepare(query)
      stmt.Exec()
      _, err := db.Exec("INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)")
      if err != nil {
      panic(err.Error())
      }
      stmtOut, _ := db.Prepare("SELECT `deleted` FROM `users` WHERE `id` = 1")
      defer stmtOut.Close()
      deleted := true
      err = stmtOut.QueryRow().Scan(&deleted)
      if err != nil {
      panic(err.Error())
      }
      if deleted == true {
      panic("Wrong deleted value")
      }
      }
      var engine *sqle.Engine
      func init() {
      engine = sqle.NewDefault()
      db := memory.NewDatabase("test")
      engine.AddDatabase(db)
      config := server.Config{
      Protocol: "tcp",
      Address:  "localhost:3307",
      Auth:     auth.NewNativeSingle("root", "", auth.AllPermissions),
      }
      s, _ := server.NewDefaultServer(config, engine)
      go s.Start()
      }
      
      `db.Exec("INSERT INTO `users` (`id`, `deleted`) VALUES (1, DEFAULT)")` will result in error:
      Error 1105: plan is not resolved because of node '*plan.Values'
      

      This pull request should avoid such issue by turning explicit DEFAULT in insert query to implicit.

    vitess

    • 83: Max/drop pk

    Closed Issues

    • 2008: Generational NBS Concurrent Map Writes Panic
    • 579: Support multiple concurrent connections modifying the working set in SQL server
    • 1795: Quickstart install requires executing remote code as root
    • 1823: dolt fetch prints many empty lines to terminal
    • 1817: Add more features to CREATE TABLE SELECT
    • 1772: Should be a parse error
    • 1684: dolt clone errors due to timeout on poor connections
    • 1564: Add commit hash functionality to dolt ls --verbose
    • 1551: dolt sql --multi-db-dir does not ignore broken dolt repositories
    • 1774: write_file and write_pandas raise DoltException on Windows
    • 1520: Certain JOINS Unexpectedly take a lot of time
    • 1609: Binary Bug Asked To Be Submitted By Zachmu (Dolt v0.26.2)
    • 1428: Support CONSTRAINT ... PRIMARY KEY syntax in CREATE TABLE
    • 1388: Dolt : SQL queries : via a JavaScript library!
    • 1383: Bad error message for ALTER TABLE error
    • 1969: feature request: dolt commit revert
    • 1340: DOLT SQL Functions Need Additional Testing for Autocommit
    • 1320: UPDATES in shell that throw errors occasionally return changes (e.g. diff is non-empty)
    • 1319: You can delete every branch in Dolt from SQL
    • 1227: Windows paths not understood by dolt add in Powershell
    • 1173: Reset hard does not delete newly created docs (ex. readme(
    • 1160: dolt sql-server runs on occupied port
    • 1154: Views broken starting in v0.22.7 for coronavirus dataset
    • 1131: Weird Index bug
    • 562: dolt does not respect the $HOME env var
    • 1135: Match MySQL on execution order when missing ORDER BY clause
    • 1114: LIKE returns bad results
    • 1054: dolt_commit_ancestors causes Python 8.0.21 connector to throw unknown error
    • 1006: Accept more date formats
    • 1004: CREATE INDEX requires case-sensitive column names
    • 964: Editing database in a separate process with server running causes weird ODBC connection error
    • 963: benchmark for full table scan
    • 880: Index lookups on timestamp columns don't work
    • 879: Make timestamp and date columns directly comparable with string literals
    • 846: dolt sql-server --help should mention the way databases are specified
    • 898: Don't require quoting AS OF expressions for branch names, hashes
    • 836: Match Git exit codes when checking out current branch
    • 815: Use-Case proposition: Machine Learning Ground Truth Curation
    • 833: mysql-connector-python fails to connect to dolt sql-sever
    • 810: Dropping and creating a table with the same name creates a peculiar status message
    • 808: feature: GPT-3 integration
    • 798: Dolt CLI does not recognize tables created in an active SQL shell session
    • 792: Filters do not seem to be functioning properly on Dolt history tables
    • 501: Add Dolt login hints to permission denied erros
    • 756: From User: No way to dolt fetch/merge/push against sql-server via SQL/odbc
    • 742: dolt should look for .dolt directory in descending directory tree
    • 739: Schema and ColCollection
    • 722: Bug in documentation caused by being in a repo
    • 720: Save query succeeds with dud input
    • 718: dolt push behavior does not seem to match docs
    • 717: dolt schema export doesn't have a commit option
    • 593: dolt schema import assigns sequential tags starting at 0. Sure to cause tag collisions if importing multiple tables.
    • 580: tighter coupling of GitHub release tags and commit graph
    • 560: Valid SQL column names are not handled correctly by dolt sql
    • 532: Long running queries on dolthub.com timeout with confusing UI error message
    • 520: Dolt SQL: Support 'on duplicate key update'
    • 504: Remote requests on sql commands
    • 477: Strange error message when a column has been dropped
    • 464: dolt_docs to conform to other feature tables
    • 442: Panic using dolt push --set-upstream
    • 440: Update with a datetime field not behaving correctly
    • 410: Broken JSON import
    • 405: Sub-select has no access to variable in external scope
    • 397: Panic in SQL when WHERE clause uses computed column
    • 1611: Run a remote Dolt, perhaps several
    • 374: Reordering columns can get table to invalid state (no primary key)
    • 314: SQL shell must be reloaded to write to newly created columns
    • 309: dolt clone has bad error message when not logged in
    • 226: piping large .sql files requires significant memory
    • 141: Dolt SQL shell backspace weirdness
    • 53: Can create empty column name using appropriately formatted CSV
    • 1641: Dolt: dolt login will create new credentials even when I'm already logged in
    • 1615: Git-Dolt: Consider changing pointer file format to JSON
    • 1627: Dolt: For large imports, need some sort of progress output
    • 1633: dolt: dolt push when behind your remote returns 0 exit code. should be 1
    • 1635: dolt: dolt config --list does not respect local overrides
    • 1973: dolt merge --abort and DOLT_MERGE("--abort"); do not reset staging index
    • 1977: Creating Boolean type field in table in dolthub UI fails.
    • 480: any performance benchmark for dolt?
    • 517: can someone pls provide the instructions on how to port rocksdb as storage backend?
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.90 MB)
    dolt-linux-amd64.tar.gz(27.30 MB)
    dolt-windows-amd64.msi(28.25 MB)
    dolt-windows-amd64.zip(27.61 MB)
    install.sh(3.03 KB)
  • v0.27.2(Aug 4, 2021)

    Merged PRs

    dolt

    • 1972: Reset staging index on dolt merge --abort fix for https://github.com/dolthub/dolt/issues/1973
    • 1967: Edit dolt merge ret type again
    • 1965: Fixed panic when merging a branch that still contains a table that was deleted in the target Also some other panics, and added more merge tests. Cleaned up merge short circuit code, and clarified the behavior when one branch edits a table another deletes during a merge.
    • 1963: expose commit parent refs
    • 1960: Find common ancestor using transitive ref closure
    • 1959: Max/push panic found in aktify:
      > dolt push origin ''
      panic: runtime error: index out of range [0] with length 0
      goroutine 1 [running]:
      github.com/dolthub/dolt/go/libraries/doltcore/ref.ParseRefSpecForRemote(0x0, 0x0, 0x7fff638f2e23, 0x0, 0x0, 0x7fff638f2e23, 0x0, 0x0)
      /src/libraries/doltcore/ref/ref_spec.go:64 +0x8ec
      github.com/dolthub/dolt/go/libraries/doltcore/ref.ParseRefSpec(...)
      /src/libraries/doltcore/ref/ref_spec.go:55
      github.com/dolthub/dolt/go/cmd/dolt/commands.parsePushArgs(0x1f4d800, 0xc00009f500, 0xc00009fef0, 0xc000232630, 0xc0000f8880, 0xc00009fef0, 0x2afb310)
      /src/cmd/dolt/commands/push.go:164 +0x2ff
      github.com/dolthub/dolt/go/cmd/dolt/commands.PushCmd.Exec(0x1f4d800, 0xc00009f500, 0xc0003e7e00, 0x9, 0xc00003a0a0, 0x2, 0x2, 0xc000232630, 0x9)
      /src/cmd/dolt/commands/push.go:108 +0x21a
      github.com/dolthub/dolt/go/cmd/dolt/cli.SubCommandHandler.Exec(0x1c67904, 0x4, 0x1c7e4c4, 0x11, 0xc00042ac80, 0x26, 0x26, 0x0, 0x1f4d800, 0xc00009f500, ...)
      /src/cmd/dolt/cli/command.go:165 +0x4c2
      main.runMain(0x0)
      /src/cmd/dolt/dolt.go:296 +0x123e
      main.main()
      /src/cmd/dolt/dolt.go:131 +0x2a
      
    • 1951: go: env/actions/branch: Move and delete branch also update working sets.

    Closed Issues

    • 579: Support multiple concurrent connections modifying the working set in SQL server
    • 1966: merge panics when merging a table that was deleted in the target branch
    • 1943: dolt sql cannot execute
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.87 MB)
    dolt-linux-amd64.tar.gz(27.28 MB)
    dolt-windows-amd64.msi(28.23 MB)
    dolt-windows-amd64.zip(27.58 MB)
    install.sh(3.03 KB)
  • v0.27.1(Jul 29, 2021)

    Merged PRs

    dolt

    • 1957: Allow setting head ref session var, e.g. @@mydb_head_ref to change branches Also fixed a bug where it wasn't being updated on a branch change
    • 1954: go/libraries/doltcore/env/actions/commitwalk: Cache commit meta during the topological walk to avoid n^2 work materializing it over and over.
    • 1949: Branch and commit-qualified database names enabled by default
    • 1947: Change force commit to bypass conflicts and constraint violations Previously --force only bypassed invalid foreign keys. With the addition of constraint violations, this check has been rendered redundant, and --force seems like it should bypass all blockers on commit anyway.
    • 1946: go/go.mod: Override indirect mongo-driver version to keep vulnerability scanner clean.
    • 1945: Small fixes Super small fixes
    • 1941: Vinai/dolt merge ret type Fixes #1937
    • 1939: Add Bats Testcase for importing and exporting timestamps Addresses https://github.com/dolthub/dolt/issues/1903

    go-mysql-server

    • 510: Accept limit / offset as BindVar This should fix #509
    • 508: adds the time.Time utc format For some reason time.Time.UTC does not have a standard format defined in the time.go package. This adds the functionality here. cc. https://stackoverflow.com/questions/33119748/convert-time-time-to-string Fixes: https://github.com/dolthub/dolt/issues/1903

    vitess

    • 82: Max/status Status can be used as a constrain name and referenced from a constraint expression.

    Closed Issues

    • 1937: Change result type for dolt_merge()
    • 509: Bug where using parameter for limit in prepare statement
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.87 MB)
    dolt-linux-amd64.tar.gz(27.28 MB)
    dolt-windows-amd64.msi(28.22 MB)
    dolt-windows-amd64.zip(27.57 MB)
    install.sh(3.03 KB)
  • v0.27.0(Jul 21, 2021)

    Transactions Enabled by default. Dolt now generates Foreign Key constraint conflicts.

    Merged PRs

    dolt

    • 1935: fix initial gcGen and exit gc early if there is nothing to do
    • 1932: Vinai/push error check Addresses #1835
    • 1930: No-op bad alter table auto increment Pr does 2 things
      1. Fix panic on linked issue
      2. Actually allow you to modify a column to add an AI
    • 1929: Reworked verify-constraints This reworks dolt verify-constraints so that it, by default, writes to the constraint violations map on the table struct, while also only verifying the diff from the working set and HEAD. Due to these changes, I also added parameters that disable table struct updates (--output-only) and also allow you to verify all of the rows (--all, which is a diff against an empty root value to simplify the logic). Lastly, table names are now optional, and omitting all table names will verify the constraints of every table. On the SQL side I added verify_constraints([tables...]) and verify_constraints_all([tables...]), which are equivalent to the CLI command with and without the --all parameter respectively except in output, as they return a SQL bool (1 for no violations, 0 for violations). The user has to manually query the system tables. When running either version of verify-constraints, we do not clear the previous map. This way we retain previous violations such as unique key violations, which cannot be caught through these functions.
    • 1926: Vinai/updt client
    • 1920: Further attempts to fix ACCESS_DENIED error on Windows This attempts to fix the additional errors seen in the following issue: https://github.com/dolthub/dolt/issues/1774 We've previously released a PR (https://github.com/dolthub/dolt/pull/1811) that seemed successful at "fixing" an ACCESS DENIED error that would occur on table import when GC was running and the manifest was being renamed. That PR, however, did not touch any other rename within the codebase, nor any deletions (which can also trigger this bug). The above mentioned issue points to deletions, therefore this PR attempts to fix those plus any others by implementing the same strategy employed by the manifest renames and applying it to every deletion and rename in the project. I also investigated the linked issues inside of the above mentioned issue (https://github.com/golang/go/issues/32088 and https://github.com/golang/go/issues/34681). The sharemode issue does not seem to be the exact issue we are seeing here, as adapting the fix repository (https://github.com/alexbrainman/goissue34681) into our code and having every file creation and opening use the updated syscalls did not result in any improvement.
    • 1913: Additional Constraint Violation Fixes This PR has a few things. Most notably, we no longer allow fast forward merges if a merge may cause a constraint violation. This decision was discussed internally. Additionally, I've modified the command line messages to properly respond to the presence of constraint violations, which includes blocking some functionality until they have been resolved. Lastly are general fixes and whatnot.
    • 1911: update readme for sql-server
    • 1908: go/libraries/doltcore/merge: resolve.go: Slightly improve BadRow error message when failing a conflicts resolve.
    • 1907: print types in noms show command Old output
      map {
      "IP_OP": #mt0robnd5t9nr7gj5gch2eec60u9a8k0,
      }
      

      New output

      Map<String,Ref<Map<Tuple<Union<String,Uint>>,Tuple<Union<>>>>> - map {
      "IP_OP": #mt0robnd5t9nr7gj5gch2eec60u9a8k0,
      }
      
    • 1906: Trying out the new logo
    • 1905: Added a simple shell for exploring a noms dataset
    • 1904: PUSH_LOG env var
    • 1902: Fixed noms manifest assuming V4
    • 1893: go/libraries/doltcore/doltdb: Prohibit deleting the last branch ref in the dataset.
    • 1892: fix: infer_schema treat leading zero numbers as strings
    • 1891: dolt roots command
    • 1890: Enable SQL transactions by default, and begin writing working set to database instead of repo_state.json file This change includes migration code to initialize the working set of existing databases that lack a working set db value at runtime. It begins to remove the repo state writer / reader abstraction for setting working set changes, but doesn't completely eliminate it. An additional refactoring pass will eliminate it completely once this is in. It introduces two new doltdb domain objects: WorkingSet: contains the root values and merge state for a working set Roots: a simple container object to wrap up the head, working, and staged roots to enable library code that modifies the working set to be purely functional
    • 1889: Add mysql_fdw read path test case
    • 1885: Bh/push pull temptf
    • 1876: Vinai/ai transactions
    • 1870: FK & UNQ Constraint Violation Tests Tests for https://github.com/dolthub/dolt/pull/1852 This only tests the merge logic.
    • 1852: FK & UNQ Constraint Violations Implements foreign key and unique key constraint violations. Tests may be found at https://github.com/dolthub/dolt/pull/1870
    • 1743: Bh/delete optimizations no longer converts from sql.Row to row.Row before deleting.

    go-mysql-server

    • 505: Vinai/ai noop
    • 503: Fix json number conversion
    • 502: From unixtime Extension of #490
    • 497: Add transactions test Adds tests for transactions and auto increment values.
    • 493: Fix Children() function of IndexedTableAccess Fix #478

    vitess

    • 81: Max/pk constraint
      sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1105, "syntax error at position 205 near 'PRIMARY'")
      [SQL:
      CREATE TABLE experiments (
      experiment_id INTEGER NOT NULL AUTO_INCREMENT,
      name VARCHAR(256) NOT NULL,
      artifact_location VARCHAR(256),
      lifecycle_stage VARCHAR(32),
      CONSTRAINT experiment_pk PRIMARY KEY (experiment_id),
      CONSTRAINT experiments_lifecycle_stage CHECK (lifecycle_stage IN ('active', 'deleted')),
      UNIQUE (name)
      )
      

    Closed Issues

    • 579: Support multiple concurrent connections modifying the working set in SQL server
    • 1856: Panic on ALTER TABLE restaurants AUTO_INCREMENT = 2;
    • 1923: Delete's busted in batch mode
    • 1835: Nil pointer dereference when pushing without specifying branch
    • 1819: Table alias bug for subquery
    • 1820: dolt_commit_diff_$tablename breaks if filter clause is not pushed down
    • 1307: error in error message
    • 1288: Some notes and questions about Prolly Trees
    • 752: Rename table then hard reset
    • 773: Merging schema changes
    • 779: date conversion panic
    • 791: Bad error message for duplicate key update
    • 801: Unrelated column rename causes foreign key constraint failure
    • 817: Weird error message for AS OF when text is passed without quotes
    • 624: A dolt clone file://... of an invalid file remote does not error.
    • 659: NULL values written to Noms tuple
    • 647: Column ordering is wrong for select * of a subquery.
    • 680: Panic on UPDATE that uses a JOIN
    • 876: Dolt sql shell quits when the user pushes delete key on a blank line
    • 493: Can't update a non-null column that has a null value
    • 431: Dolt Schema Export/Import can't be used together?
    • 450: Dolt fetch/branch create identical/hidden branches?
    • 484: Merge stats are not accurate
    • 499: templating bug in error message
    • 1636: dolt: dolt config --global --add currently succeeds
    • 231: Querying large tables using order by uses up memory and doesn't complete
    • 1063: Naked DELETE does not trigger ON DELETE triggers
    • 1915: Rebase?
    • 1614: Dolt: SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP()) Fails
    • 398: Panic in SQL when calling functions on *
    • 459: Must test dolt sql-server in bats
    • 516: Datagrip cannot connect
    • 582: SQL regressions in 0.16.0
    • 631: Support for foreign keys
    • 640: MySQL Performance Benchmark
    • 853: Add an -a option to Dolt commit to commit all tables in the working set
    • 893: push to google storage gives me a strange error
    • 954: Multi table joins are not performant
    • 1055: [Bug Report] Segfault When Running LS From Self-Compiled Dolt
    • 1069: Certain naked function calls not supported in Dolt
    • 1091: Session variables need to be lower cased in config
    • 1092: segfault
    • 1348: Foreign key violation error message includes confusing tag number
    • 1420: Implement a dolt_working_heads system table.
    • 1511: Large IN clauses against indexed columns should be performant.
    • 1775: Foreign key violation error when inserting NULLs to foreign key columns
    • 1780: dolt sql-server error when using PostgreSQL mysql_fdw against it
    • 1773: Foreign key constraints not enforced in SQL MERGE()
    • 1862: Multi Table Update does not work in Dolt
    • 1816: Update GoLang version
    • 1838: cat / diff leave output colored after SIGINT
    • 373: dolt_history_* and dolt_diff_* tables don't work for tables created in the working set
    • 430: Merge Panics on table add/drop
    • 448: 2/3 examples in dolt/samples don't work
    • 292: Merging can create two columns with the same name
    • 257: dolt table import --pk option, dolt schema import --pks option
    • 253: dolt 0.12.0 push error: invalid cross-device link
    • 252: Support regular files (with regular Git semantics)
    • 234: Not able to change column data type on existing data set
    • 153: Dolt: Segmentation fault on pull
    • 151: Dolt should provide a way to ignore unsupported-but-known SQL commands instead of returning an error.
    • 150: Dolt does not correctly prevent conflicting tag numbers from being reused.
    • 136: Sql create table silently drops unrecognized columns from primary key
    • 102: Import table from CSV does not by default add "not null" constraints to inferred primary keys
    • 59: Incorrect output when trying to pull from an empty remote
    • 56: dolt table create --help is completely wrong
    • 51: dolt distinguishes the type of an argument based on the presence of an extension
    • 201: create table without primary key in schema causes unrecovered panic
    • 244: Nightly regression test for dolt SQL correctness
    • 1631: Dolt: enforce SQL table naming conventions in dolt table create
    • 1632: dolt: got a panic when doing a merge from a remote with conflicts
    • 1634: dolt: push and pull a remote repository should say "Already up to date"
    • 1630: Dolt: allows importing of non-UTF-8 characters
    • 1629: Dolt: Says failed to merge schemas when changing strings to ints/floats
    • 1628: Dolt: Schema diff no worky for changing primary keys
    • 1626: Dolt: Panic on .psv import
    • 1625: Need to reserve tag numbers on drop column
    • 1624: ensure nullability for primary key columns
    • 1622: Dolt: Diff with two revisions is backwards
    • 1621: Dolt: Improve error message for bad diff arguments
    • 1620: SQL conversion mode for CSV import
    • 1619: Dolt: dolt status panics on an empty repo
    • 1618: bad formatting in some help text
    • 1868: Dolt table export to csv's with Json fields is not json encoded strings.
    • 1617: Store default column values in schema
    • 1616: Dolt: dolt clone dies with ugly error when cloning a remote just created on DoltHub
    • 1897: Addition of Docker image
    • 1638: Dolt: Bad error on excel import of non excel file
    • 1639: Dolt: Bad error message for invalid schema on json import
    • 1637: Dolt: Funky error message for duplicate row insert
    • 1640: Dolt: Can create a table with a blob type. Not supposed to be able to.
    • 1653: Dolt: dolt table select --hide-conflicts does not work
    • 1644: Dolt: Dolt table export does not quote lists with commas
    • 1646: Dolt: Disk space gets bigger on dolt table import when you don't commit the change
    • 1651: Dolt merge murdered my table?
    • 1652: Should Diffs handle schema changes better
    • 1655: documentation/errors regarding --schema
    • 1650: --ours nor --theirs useful in conflict resolution
    • 1649: Dolt: Feature Request: dolt table import -c --pk=auto
    • 1648: Dolt: Weird error message on Dolt diff when changing schema
    • 1647: Dolt schemas should use "type" instead of "kind"
    • 1645: Dolt: Duplicate column name in put-row puts last. Should error?
    • 1643: Dolt: Undetected Schema merge conflict
    • 1642: Dolt: Name a table and branch the same, dolt checkout ambiguous
    • 1654: Weird dolt import bug
    • 1225: VALUES not accessible by variable name in ON DUPLICATE KEY UPDATE
    • 1900: table alias bug
    • 1855: dolt push of hospital-price-transparency-v2 segfaults
    • 1896: dolt sql-server gives diffrent data than running commands on box
    • 477: Cannot convert JSON number to number
    • 478: Cannot transform IndexedTableAccess nodes
    • 172: Support for prepared statements
    • 474: JSON string comparison seems broken (change in behavior from v0.6.0 and v0.10.0)
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.81 MB)
    dolt-linux-amd64.tar.gz(27.20 MB)
    dolt-windows-amd64.msi(28.17 MB)
    dolt-windows-amd64.zip(27.52 MB)
    install.sh(3.03 KB)
  • v0.26.11(Jul 1, 2021)

    Merged PRs

    dolt

    • 1883: read tuple types to fix seen-structs issue
    • 1880: Improve Error message when merge fails because of different primary keys This is much more descriptive IMO, but lmk if you have suggestions for how to word it.
    • 1879: Rewrite jq test
    • 1875: go/cmd/dolt/commands/diff.go: Return VerboseError rather than panic Fixes #1874
    • 1873: Fix csv export types
      • JSON strings were not serialized in CSV writing
      • convert Dolt rows to SQL Rows, and lean on the SqlColToStr to correctly parse values to strings.
      • manually handle nil values to match bats tests CSV export format
    • 1864: Andy/database provider

    go-mysql-server

    • 488: Modify ReadOnlyDatabaseHarness
    • 487: Andy/read only database
    • 486: Andy/database provider Adds a DatabaseProvider abstraction, allowing integrators to add their own logic to database resolution
    • 485: sql/plan: {update,delete}.go: Correctly return an error for unsupported UPDATEs and DELETEs against joins and subqueries.

    Closed Issues

    • 1874: Panic when diffing 2 tables with same name and different primary key sets
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.63 MB)
    dolt-linux-amd64.tar.gz(27.02 MB)
    dolt-windows-amd64.msi(27.98 MB)
    dolt-windows-amd64.zip(27.33 MB)
    install.sh(3.04 KB)
  • v0.26.10(Jun 25, 2021)

    99% SQL Correctness by SQL Logic Test and major write performance improvement to 7X MySQL on writes as measured by sysbench.

    Merged PRs

    dolt

    • 1857: Andy/cmp chunk write panic fix
    • 1847: go/libraries/doltcore/sqle/sqlfmt/schema_fmt.go: Add AlterTableModifyColStmt
    • 1845: Added bats tests for dolt log --merges, --parents, and --min-parents Tested these options added in: #1831
    • 1842: reset output colors before exiting when interrupt encountered

    go-mysql-server

    • 483: added JSON_OBJECT() sql function
    • 482: Vinai/fix bit type parsing Fixes parsing for bit type

    Closed Issues

    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.62 MB)
    dolt-linux-amd64.tar.gz(27.02 MB)
    dolt-windows-amd64.msi(27.96 MB)
    dolt-windows-amd64.zip(27.32 MB)
    install.sh(3.04 KB)
  • v0.26.9(Jun 16, 2021)

    Merged PRs

    dolt

    • 1832: ctx to WithFilters
    • 1831: --merges, --parents, --min-parents options for dolt log
    • 1828: Fixed #1824: Bug with adding index on merge Fixes https://github.com/dolthub/dolt/issues/1824
    • 1827: Add test case for bytes parse bug Fixes #1818

    go-mysql-server

    • 473: sql/analyzer: indexed_joins: Use indexes in more cases where join condition includes AND ... IS [NOT] NULL.
    • 472: Fixed a bug involving aliases in filter pushdown, and made partial pushdown of filter predicates possible
    • 471: sql/analyzer: Add support for using indexes in joins where ON condition includes top level OR clauses. This adds support for concatenating the results from two more index lookups against a subordinate table in order to find the rows matching a join condition structured as indexed_col = ... OR different_indexed_col = ....
    • 469: add ctx to WithFilters
    • 468: Parse empty bytes Fixes: https://github.com/dolthub/dolt/issues/1818

    Closed Issues

    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.59 MB)
    dolt-linux-amd64.tar.gz(26.97 MB)
    dolt-windows-amd64.msi(27.93 MB)
    dolt-windows-amd64.zip(27.29 MB)
    install.sh(3.03 KB)
  • v0.26.8(Jun 14, 2021)

    Merged PRs

    dolt

    • 1813: go/utils/publishrelease: install.sh: Install x86_64 binaries on MacOS M1.
    • 1812: go: fkconstrain: check: Correctly handle types.Null values in tuples being checked.

    go-mysql-server

    • 467: Add FIRST_VALUE
    • 465: Improve lock statement parsing
    • 464: sql/analyzer: finalize_unions: Fix bug where we avoided finalizing union query plans.
    • 461: json array contains single element, and conversion fixes fixes json_contains issue where checking a single element in an array fails, and conversion from json to string.

    Closed Issues

    • 1802: LOCK TABLES errors out on a mysqldump
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.57 MB)
    dolt-linux-amd64.tar.gz(26.96 MB)
    dolt-windows-amd64.msi(27.91 MB)
    dolt-windows-amd64.zip(27.27 MB)
    install.sh(3.03 KB)
  • v0.26.7(Jun 9, 2021)

    Merged PRs

    dolt

    • 1799: Bump gms
    • 1793: thread context through to function creation in dolt
    • 1789: Add pr to test found rows on UPDATE
    • 1784: bump gms and fix issues
    • 1770: Add skipped bats test for blanks (nulls) failing on csv import/update
    • 1769: Expand dolt reserved namespace
    • 1766: Vinai/create temp tables This pr allows for the creation of temporary tables.
    • 1765: /{.github,go}: bump min go version to 1.15
    • 1763: Transaction tests and bug fixes for savepoints

    go-mysql-server

    • 459: Add transaction status flag to handler
    • 457: Datetime fixes
    • 456: Fixed MEDIUMINT over the server not returning negative values Super simple fix. We should make some Script tests that work over the server, but we can do that at some later point.
    • 455: thread context through to function creation
    • 454: sql/analyzer/aliases.go: getTableAliases: Appropriately handle scope in recursive calls.
    • 453: Fix functionality for CLIENT_FOUND_ROWS
    • 450: Vinai/wire protocol updates
    • 448: initial comparison and like calcs based on collation Currently the LIKE operator always does a case sensitive match. This should be based on the collation. This puts initial support in for doing per collation comparison and like calculations. Currently the comparison changes are disabled as the codebase uses the compare function for more than just WHERE clause calculations which sometimes need to be case sensitive.
    • 447: sql/analyzer: Fix index search for certain expressions which were not using table aliases appropriately.
    • 445: Allow limits and offsets to use value args (? in prepared statements) This fixes #439
    • 442: Vinai/temporary tables
    • 441: Test fixes for savepoints
    • 440: /{.github,go}: bump min go version to 1.15

    vitess

    • 79: Add transaction flag Signed-off-by: Vinai Rachakonda [email protected]
    • 78: Add the found rows connection flag to the protocol Signed-off-by: Vinai Rachakonda [email protected]
    • 76: Disallow non integer values for limit and offset, allow value args

    Closed Issues

    • 443: Support Insert opeartion for sqlx.
    • 439: Error: Unsupported feature: LIMIT with non-integer literal
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.53 MB)
    dolt-linux-amd64.tar.gz(26.92 MB)
    dolt-windows-amd64.msi(27.87 MB)
    dolt-windows-amd64.zip(27.23 MB)
    install.sh(2.90 KB)
  • v0.26.6(May 27, 2021)

    Merged PRs

    dolt

    • 1753: Transaction tests for dolt, and couple small bug fixes for transactions
    • 1749: remotestorage: Add some simple fetch/pull metrics instrumentation.
    • 1748: Vinai/improve persisting super schemas for COMMIT
    • 1746: Added mini rollback functionality for statements that error This fixes https://github.com/dolthub/dolt/issues/1738 Previously, whenever we failed a statement we never wrote a new root, however with the addition of transactions, we now update the root on both success and failure. As a result, an incorrect behavior is now surfacing in more interfaces. The bug is that any core data manipulation statement (INSERT, REPLACE, UPDATE, DELETE) writes to the table editor as rows are modified. However, if one of the rows throws an error (such as from a duplicate key or foreign key violation), the entire statement's work is supposed to be discarded, but that wasn't happening. This adds that functionality by updating the interfaces (https://github.com/dolthub/go-mysql-server/pull/429) to denote the start and end points of a statement, along with alteration of the edit accumulators. There is a performance penalty, but it seems to be relatively small (<2% regression on local comparisons). My true preference would be a more major rewrite to the table editor, reducing the operations to just two (Insert and Delete, similar to the current IndexEditor), and changing the edit accumulator system to a branching model (with one "central" editor accumulator and smaller accumulators focused on only that specific statement, where changes are "merged" back to the "central" accumulator). It would also be much clearer and cleaner than the PR code, and perhaps a tad faster than the current code. But that's for the future.
    • 1744: Mark the session state clean upon init I don't love this... it's meant to address this failure in dolthub: https://github.com/dolthub/ld/pull/6605 Read-only is also kind of a bad name, it still writes to the chunk store if you issue a write query, it just won't call WriteRootValue when a transaction is committed Thoughts?
    • 1741: fixes infinite loop A deadlock can occur when the chunk size is greater than the maximum chunk size and a chunk with children gets removed, but it isn't removed from the withBufferedChildren map.
    • 1740: Removed flushing on foreign key checks for tables with pks Currently foreign keys necessitate a flush whenever you want to check a table editor's indexes for a partial key. With the recent index editor rewrite adding an efficient way to check partial keys, we can extend that and use it for foreign key checks as well.
    • 1739: Improve fetch and pull performance and reliability. Allow URLs to be refreshed when signing credentials are expired or revoked. Increase small fetch concurrency. Limit hedged downloads to one per fetch. Avoid hedging large downloads for now.
    • 1737: Fix tests for changes in go-mysql-server, upgrade same

    go-mysql-server

    • 437: /.github/workflows/format.yml: enable autoformatting
    • 435: /.github/workflows/bump-dependency.yaml: remove working dir, doesnt exist
    • 434: Rewrote transaction tests to be much more succinct, and added several more
    • 433: Fixed non-deterministic test query
    • 432: Repro test case for ErrFieldMissing bug
    • 431: Fixed foreign key errors in NTC test setup
    • 430: Fixed bug in field indexes related to pushdown of indexes in subqueries
    • 427: Initial percent_rank fn
      • percent_rank function implemented, which is basically the step function quantile of column-sorted rows within a partition.
      • moved helpers to window/window.go
      • created WindowExpression interface to facilitate helper function re-use (there are multiple ways of doing that, extra interface isn't super necessary but made sense to me at the time) todo:
      • bats with great expectation specific query
    • 426: added ErrIndexOutOfBounds test
    • 425: Bug fixes for date comparisons This fixes https://github.com/dolthub/dolt/issues/1572
    • 424: Transaction support This change:
      • Moves a bunch of transaction and other session management code out of Handler into Engine
      • Introduces a new set of tests around transactions
      • Fixes the error message for duplicate key violations
      • Removes AsyncNode and related code
      • Eliminates duplicate query parsing
    • 423: Vinai/distinct expressions This pr does the following
      1. Fix incorrect behavior with AVG
      2. Enable the use of DISTINCT within aggregation eg. SUM(DISTINCT )
      3. Enables the use of DISTINCT on aggregation that is grouped

    vitess

    • 74: add parsing for create temporary table

    Closed Issues

    • 1738: Session corrupted when certain self-referential foreign key constraint violated
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.46 MB)
    dolt-linux-amd64.tar.gz(26.85 MB)
    dolt-windows-amd64.msi(27.80 MB)
    dolt-windows-amd64.zip(27.15 MB)
    install.sh(2.90 KB)
  • v0.26.5(May 19, 2021)

    Merged PRs

    dolt

    • 1728: go/cmd/dolt: commands/{fetch,pull}: Turn off chunk caching on source DB when pulling and fetching.
    • 1725: go/libraries/doltcore/remotestorage: Improve URL refresh on download retries further.

    go-mysql-server

    • 422: Fix for hanging joins when the secondary table is empty using an in-memory strategy This fixes #222
    • 421: fix bug in join search
    • 420: Update sqlogic test harness and bump sqllogic dependency This pr enables users of gms to run and parse the sqllogic harness against all of the sqlogictests (with filtering). It also bump the sqllogic dependency
    • 419: [WIP]: LastIncrementId and name resolution collision fix
    • 418: Add ISNULL(expr) and compatible with Navicat Premium When I use Navicat Premium 15.0.28 to design tables. Get error: 1105 - function: 'isnull, maybe you mean ifnull?' not found After I implement ISNULL(expr). Get error: 1105 - column "PARTITION_DESCRIPTION" could not be found in any table in scope This RP is fixed this problem.

    Closed Issues

    • 1723: Hang for join
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.42 MB)
    dolt-linux-amd64.tar.gz(26.80 MB)
    dolt-windows-amd64.msi(27.76 MB)
    dolt-windows-amd64.zip(27.11 MB)
    install.sh(2.90 KB)
  • v0.26.4(May 17, 2021)

    Merged PRs

    dolt

    • 1716: Refresh signed URLs on fetch/pull to allow long-running fetches to succeed.
    • 1707: Reuse column tags when recreating identical tables in the working set.
    • 1706: Performance improvement: get rid of unnecessary and complicated table cache.
    • 1705: Rudimentary support for SQL ROLLBACK.

    Closed Issues

    • 1712: Autocommit Server Status flag not set correctly
    • 1711: sql import deadlocks
    Source code(tar.gz)
    Source code(zip)
    dolt-darwin-amd64.tar.gz(26.41 MB)
    dolt-linux-amd64.tar.gz(26.79 MB)
    dolt-windows-amd64.msi(27.74 MB)
    dolt-windows-amd64.zip(27.09 MB)
    install.sh(2.90 KB)
  • v0.26.3(May 10, 2021)

    Merged PRs

    dolt

    • 1688: integration-tests/bats: Add some simple bats tests to views in sql-server multi-head mode.
    • 1681: Fixed occasional panic from nil VRW on BLOB pks
    • 1667: Add dolt log functionality
    • 1666: Update some bats tests
    • 1665: Beginnings of SQL transaction support. Only START TRANSACTION and COMMIT are supported. Needs SAVEPOINT, ROLLBACK.
    • 1663: Fixed index editors getting to an invalid state on error.
    • 1658: Fixed index name handling & self foreign keys on commit.
    • 1608: Improve performance of GC.
    • go-mysql-server

      • 410: Commit transactions without beginning them, to support commit without a selected database
      • 409: Add the partitions table Adds the empty partition table
      • 404: sql/analyzer: Push filters under SubqueryAliases which they apply to. This allows optimizations to be applied to the filter clauses within the SubqueryAlias node, including pushdown and index lookup.
      • 403: sql/analyzer: Split analysis of subqueries so that once-after rules are applied uniformly.
      • 402: Added _binary support & REGEXP_LIKE Removed REGEXP_MATCHES as it does not exist in MySQL. It is a PostgreSQL function.
      • 401: Add the json_contains function.
      • 400: Support for transactions. Start transaction and Commit implemented so far, as well as @@autocommit handling
      • 398: Fixed view test script
      • 397: Changed default handling & delay fk table resolution
      • 396: /server: Unwrap netutil.ConnWithTimeouts in pollForClosedConnection
      • 395: Refactor nil check handling in check constraints.
      • 394: Fixed bug that only allowed some select statements as view definitions
      • 392: Fixed REPLACE logic to now match MySQL Previously we thought that REPLACE was a DELETE then INSERT, but this is not the actual order that MySQL takes.
      • 391: Install a format checker script and workflow.
      • 390: Adds the key column usage table https://dev.mysql.com/doc/refman/8.0/en/information-schema-key-column-usage-table.html

      vitess

      • 73: go/vt/sqlparser: Follow MySQL in making ORDER BY/LIMIT on left hand of UNION a syntax error.
      • 72: Added savepoint and friends

      Closed Issues

      • 1670: dolt merge-base
      • 1662: Bug: sql-server fails with TablePlus while introspecting schema due to UUID
      • 1659: GCP Authentication Fails on Google Colab
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(26.38 MB)
      dolt-linux-amd64.tar.gz(26.76 MB)
      dolt-windows-amd64.msi(27.72 MB)
      dolt-windows-amd64.zip(27.07 MB)
      install.sh(2.90 KB)
    • v0.26.2(Apr 27, 2021)

      Merged PRs

      dolt

      • 1598: gc changes for import New dolt table import flag --no-gc, and parameter tuning to run gcs less during import.
      • 1593: Fixed system variables
      • 1589: Fixes already on same branch error Addresses the issue here #1588
      • 1584: /go/libraries/doltcore/{doltdb, env/actions}: don't swallow commit error

      go-mysql-server

      • 389: Add information_schema.table_constraints
      • 387: Use a reliable source for the client net.Conn when running the client disconnect detection logic.
      • 385: Fix deadlock with exchange node go routines This fixes deadlocks in exchange node go routines which can happen when the exchange node is closed before all the data is read as occurs with a query that includes a limit clause. This also can occur if the context is canceled. These deadlocked go routines will retain references and prevent garbage collection.

      vitess

      • 71: go/mysql/conn.go: Expose underlying net.Conn of the mysql.Conn.
      • 70: Changed SET syntax
      • 69: Added ALTER COLUMN DEFAULT
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(25.75 MB)
      dolt-linux-amd64.tar.gz(26.13 MB)
      dolt-windows-amd64.msi(27.07 MB)
      dolt-windows-amd64.zip(26.43 MB)
      install.sh(2.90 KB)
    • v0.26.1(Apr 23, 2021)

      This release contains performance and correctness improvements.

      Merged PRs

      dolt

      • 1581: more conservative name regex update
      • 1580: Better error message for starting a server on a port in use
      • 1567: Performance improvements around unmarshalling schemas.
      • 1560: store/perf/suite: Improve testing for errors.
      • 1557: Add Max Connections flag for Dolt SQL-Server
      • 1552: /integration-tests/compatibility: Added compatibility tests, including large tables
      • 1549: Extended naming of foreign keys
      • 1548: Fixed FK issue #1546
      • 1547: cmd/dolt/commands: fix dropped errors in diff and ls.

      go-mysql-server

      • 382: Fixed system variables
      • 379: sql/plan/if_else.go: Handle conditional expressions evaluating to null as false.
      • 378: sql/{plan,analyzer}: Add hash lookup functionality for equality condition joins on already cached results.
      • 377: sql/plan/join.go: Improve correctness and testing of right joins with scope rows available.
      • 376: Bug fix: check constraints were being marked invalid for tables with upper case letters
      • 375: Improve an error message
      • 372: Improve TestModifyColumn tests
      • 371: Added ALTER COLUMN DEFAULT

      vitess

      • 68: Support multiple statements per ALTER
      • 67: fix separator parser for Group_Concat

      Closed Issues

      • 1569: Foreign key constraints inappropriately being enforced on DELETE of non-unique values
      • 1563: Quickly find the latest commit that's touched a table
      • 1546: Drop then add a table with a foreign key with the same name gives spurious error
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(25.71 MB)
      dolt-linux-amd64.tar.gz(26.09 MB)
      dolt-windows-amd64.msi(27.05 MB)
      dolt-windows-amd64.zip(26.40 MB)
      install.sh(2.90 KB)
    • v0.26.0(Apr 14, 2021)

      This release adds support for the CHECK constraint, and includes various bug fixes and performance improvements.

      Databases written by this release of Dolt cannot be read by earlier versions. Earlier versions must upgrade to at least this version. This is a failsafe mechanism to prevent loss of schema information on write caused by earlier Dolt versions not understanding how to persist newer schema constructs (CHECK constraints in this case).

      Merged PRs

      • 1541: /integration-tests/compatibility: Split Compatibility tests into forward and backward
      • 1540: Fixed TINYBLOB errors with specific inputs Similar to https://github.com/dolthub/dolt/pull/1528, except dealing with the kind. Still surprised this was not caught earlier, seems like it should be completely broken. Some test repos have had thousands of rows with a BLOB-type column and they all worked without issue.
      • 1538: Fixed UNIQUE index violations causing duplicate key errors
      • 1537: Support for CHECK constraints This is missing:
        1. Bats tests
        2. Feature version bump
      • 1536: libraries/doltcore/tables: fix two subpackage dropped errors
      • 1534: /go/libraries/doltcore/sqle: Fix SELECT INTO ... bug for AUTO_INCREMENT columns Fixes: #1491
      • 1533: replace io.Copy to improve clone perf Fixes https://github.com/dolthub/dolt/issues/1530 by replacing a call to io.Copy with a new function writeTo. Existing reader implementation replaces read calls to HTTP requests and larger read sizes here has a very big impact on Perf. takes gcs clone of 600MB repo from
        real    28m2.168s
        user    0m21.606s
        sys     0m15.104s
        

        to

        real  0m17.885s
        user  0m1.607s
        sys   0m2.443s
        

        has similar performance improvements for AWS repos and has small Dolthub clone perf improvements.

      • 1532: couple changes for aws errors
      • 1531: go/go.mod: Bump go-mysql-server.
      • 1528: Fixed some VARBINARY strings reading their length incorrectly Some VARBINARY strings were misreading their length, leading to other values reading garbage and erroring. Not sure how some VARBINARY strings were reading correctly, but this fixes the issue. Was caught by the fuzzer, but I stripped out the other queries for the bats test (still reproduces without them).
      • 1527: libraries/doltcore/fkconstrain: fix dropped errors This fixes two dropped error variables in libraries/doltcore/fkconstrain.
      • 1526: Fix AsyncDiffer wrong context for cancelation bug.
      • 1525: Andy/faster tag validation Previously we fully validated column tag uniqueness on every call to doltdb.PutTable(). This is a huge perf hit on the write path. We can safely eliminate this validation in the case where the old and new table schemas have the same types.Ref.
      • 1524: delete batches
      • 1523: Unskipped many engine plan tests, changed how skipping works
      • 1521: fixed dropped errors in libraries/doltcore/env This fixes dropped errors in libraries/doltcore/env and libraries/doltcore/envtestutils.
      • 368: Improvements and corrections for check constraints Biggest changes:
        1. Better validation
        2. Checks in CREATE TABLE statements work as expected now (poor validation before)
        3. ALTER TABLE DROP CONSTRAINT works as expected (doesn't assume a foreign key)
        4. Unnamed checks are expected to be named by integrators now
      • 365: Fix SELECT INTO ... bug for AUTO_INCREMENT columns
      • 363: sql/expression/case.go: Type a CASE expression by considering all its branches. Implements a lot of the typing behavior described here: https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#operator_case
      • 362: Give correct error code for duplicate database. Return a Vitess error with code ERDbCreateExists(1007) when trying to create a database that already exists
      • 360: Brought sql.PushdownTable back to memory.Table And made its implementation not reduce its schema (same as dolt). sql.FilteredTable has significant issues, so that one is still disabled by default.
      • 359: Added IsGenerated to sql.Index

      Closed Issues

      • 1535: Can I install dolt without sudo?
      • 1530: Slow cloning from google storage
      • 361: memory database with JSON column cannot be updated
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.28 MB)
      dolt-linux-amd64.tar.gz(27.67 MB)
      dolt-windows-amd64.msi(28.39 MB)
      dolt-windows-amd64.zip(27.74 MB)
      install.sh(2.90 KB)
    • v0.25.1(Apr 6, 2021)

      Added Features

      • Support for json type.
      • Support for partial indexes for multi-column indexes.

      Merged PRs

      • 1519: Added generated partial indexes for multi-column indexes This adds partial indexes to composite (multi-column) indexes. That means that INDEX (v1, v2, v3) now allows for partial matches, so accessing v1 and v1, v2 will make use of the index.
      • 1517: Vinai/tonic fixes latest Checking in a small bug fix that was found when running tonic commands.
      • 1514: /go/libraries/doltcore/schema/typeinfo: Removing feature flag for JSON type Removes feature flag for json type, making it available to users.
      • 1513: /go/libraries/doltcore/sqle/{integration_test, json}: Test large JSON docs Final checks before releasing JSON:
        • Round trip large JSON documents
        • Assert JSON values are structurally sharing
      • 1510: libraries/doltcore/env/actions: error handling This fixes dropped errors in libraries/doltcore/env/actions and replaces use of assert.NoError() with require.NoError().
      • 354: Fixed procedure params not being used in INSERT/REPLACE values Fixes https://github.com/dolthub/dolt/issues/1496
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.23 MB)
      dolt-linux-amd64.tar.gz(27.62 MB)
      dolt-windows-amd64.msi(28.34 MB)
      dolt-windows-amd64.zip(27.69 MB)
      install.sh(2.90 KB)
    • v0.25.0(Apr 2, 2021)

      This release fixes several bugs in query execution, and adds several new features:

      • FOUND_ROWS(), ROW_COUNT(), and LAST_INSERT_ID() information functions are now supported
      • dolt checkout . now works (same as dolt reset --hard)
      • Column aliases supported for subqueries and VALUES derived tables

      Merged PRs

      • 1508: add the tag name variable for the brew release
      • 1507: Added DELIMITER newline termination Fixes https://github.com/dolthub/dolt/issues/1495 DELIMITER had to be terminated by the previous delimiter, similar to other statements. However, MySQL does not have this requirement (a newline is adequate for termination). This PR removes this requirement.
      • 1505: Upgraded go-mysql-server and vitess, and unskipped a couple tests
      • 1504: Andy/json diff merge Implements diff and merge on the JSON type. The JSON type is still behind a feature flag
      • 1503: /go: Bump GMS
        • bump go-mysql-server
        • skip 2 queries
        • ~delete stale Noms perf tests~
        • updated dependency github.com/shirou/gopsutil
      • 1502: libraries/doltcore/rowconv: error handling This fixes dropped errors in libraries/doltcore/rowconv and replaces assert.NoError() with require.NoError() in tests.
      • 1501: go/go.mod: Bump vitess, pick up trailing spaces sql-server fix.
      • 1500: Fixed dropped errors in libraries/doltcore/row This fixes dropped errors in libraries/doltcore/row, as well as replacing assert.NoError() with require.NoError().
      • 1499: /go/libraries/doltcore/dtestutils: use Format_LD_1 in CreateTestEnv Switches to using Format_LD_1 instead of Format_7_18 in CreateTestEnv(). This covers most doltcore tests, including enginetests. One major difference between LD_1 and 7_18 is types.Float serialization format.
      • 1498: Vinai/dolt checkout period Adds dolt checkout . functionality.
      • 1494: Fix dropped errors in libraries/doltcore/doltdocs Fixes dropped errors, changes tests to use require.NoError().
      • 1493: go/utils/publishrelease/buildbinaries.sh: Use CGO_ENABLED=0 to statically link release binaries on Linux. This lets Dolt release binaries work on Linux distributions that do not use glibc, like Alpine. Fixes #1489.
      • 353: Column aliases for subqueries This depends on https://github.com/dolthub/vitess/pull/66, so tests won't pass yet (but pass with a local override)
      • 352: switch sql.Boolean columns in enginetests typestable to use 0 instead… … of false
      • 351: sql/analyzer: Make column resolution more reliable when a subquery alias is under a table alias node. Using a common table expression (and probably using a view), you can alias a common table expression. Some analyzer steps, and in particular prune_columns, assume the subquery alias is the name that the parent schema sees. This adds an analyzer pass that flattens nested table aliases and a table alias on a subquery alias into the bottom-most node.
      • 350: Fixed a number of bugs in aliases and name resolution revealed by recent changes to the parser Also added output schema verification to engine tests, and wrote some tests of same.
      • 349: ROW_COUNT(), FOUND_ROWS() and LAST_INSERT_ID() Implemented ROW_COUNT(), FOUND_ROWS() and LAST_INSERT_ID(), as well as support for SQL_CALC_FOUND_ROWS with a LIMIT clause.
      • 347: Vinai/binary func Adds the BINARY operator to gms
      • 66: Support for subquery / values column aliases
      • 65: go/vt/sqlparser/ast.go: SplitStatementToPieces: Avoid appending an empty "query" when splitting an incoming ComQuery.
      • 64: Strip quotes and backticks from select expressions

      Closed Issues

      • 1506: Long term assurance and insurance against liquidation
      • 1495: DELIMITER command does not work with non-interactive stdin
      • 1490: Can I just config dolt just as git?
      • 1489: how can i install dolt base on alpine image? failed...
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.23 MB)
      dolt-linux-amd64.tar.gz(27.61 MB)
      dolt-windows-amd64.msi(28.33 MB)
      dolt-windows-amd64.zip(27.68 MB)
      install.sh(2.90 KB)
    • v0.24.4(Mar 26, 2021)

      This is a patch release, fixing several bugs and improving performance.

      This release also enables the logging of bad rows during file import, and introduces the VALUES ROW(...) SQL syntax

      Merged PRs

      • 1487: Properly reverts the version string on Dolt as automation does the fix One day I will get automation right on the first try
      • 1485: 0.5
      • 1483: bump version string
      • 1481: libraries/doltcore/doltdb: fix dropped errors This supersedes #1465
      • 1479: Add few doltpy commands that broke with dolt compatibility changes Some bats that if failed indicate a doltpy incompatibility. The tests could be more involved, but the goal here isn't row-output correctness. This list will grow as I rewrite more dolt commands to use SQL features.
      • 1477: go/go.mod: Bump go-mysql-server.
      • 1476: bump dolt version
      • 1475: Vinai/log bad rows This pr adds the functionality of logging bad rows to the cli. Since these rows are logged StdErr the rows can be sent to a file as well.
      • 1474: go/libraries/doltcore/sqle/async_indexed_lookups.go: Fix leaking of results from one index lookup to another. When a query with an index lookup as a LIMIT, it's possible for the result iterator to be closed before all the index results have been streamed. When that happens, we can end up with queueRows goroutine which is enqueuing rows into a ring buffer that is going to be used by a different query later. This PR adds two mechanisms, one to stop the wrong results from being seen and to cancel the unnecessary work.
        1. RingBuffer gets an epoch, which is incremented on each Reset(). If a given Push does not match the current epoch, then nothing is added to the ring buffer.
        2. queueRows is run with a cancelable (sub-)Context, and that Context is canceled when the corresponding iterator is Closed().
      • 1472: Vinai/merge squash Introduces SQUASH() which merges a branch into the working set.
      • 1471: panic fix for 0 rows resolved fix panic that occurs when a delete query against a conflict table affects 0 rows
      • 345: Support for VALUES ROW(...) derived tables

      Closed Issues

      • 1470: Can not connect using mysql client
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.13 MB)
      dolt-linux-amd64.tar.gz(27.57 MB)
      dolt-windows-amd64.msi(28.21 MB)
      dolt-windows-amd64.zip(27.55 MB)
      install.sh(2.90 KB)
    • v0.24.3(Mar 23, 2021)

      This release adds partial support for the SIGNAL statement, along with the ability to declare conditions using DECLARE .. CONDITION. In addition, numerous performance improvements and bug fixes have been added.

      Merged PRs

      • 1469: Bump gms
      • 1467: Bug fix for active_branch() function
      • 1462: New select expression behavior
      • 1461: Tim's edits to quick start guide Just edited the lead in to be a little more hype.
      • 1458: Docs expansion Added a quickstart guide, FAQ, and roadmap.
      • 1457: use left right diff instead of top down due to bugs in top down
      • 1456: store/marshal: dropped error and test refactor This picks up a dropped error instore/marshal, changes the tests to use require.NoError instead of assert.NoError, and prunes some dead code.
      • 1455: Vinai/more dbeaver stuff This pr unblocks basic dbeaver functionality.
      • 341: JSON_OBJECTAGG This pr adds JSON_OBJECTAGG functionality: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_json-objectagg
      • 340: Vinai/UUID This pr adds UUID support cc: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_is-uuid
      • 339: Wrap all select expressions in aliases with their original string expression This makes the result set schema exactly match the select expressions in the query.
      • 338: Vinai/dbeaver fixes This pr allows for queries like CREATE TABLE x.table(pk int) when the mysql client is not set to x.
      • 337: Vinai/more table status fixes This pr fixes some mistakes in show table status where
        1. memory/table.go did not implement StatisticsTable
        2. ShowTableStatus is a part of Engine InformationSchema Tests
      • 335: Updates to SHOW TABLE STATUS
      • 63: VALUES statements
      • 62: Added SQL_CALC_FOUND_ROWS keyword
      • 60: add better parsing for show table status
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.11 MB)
      dolt-linux-amd64.tar.gz(27.55 MB)
      dolt-windows-amd64.msi(28.19 MB)
      dolt-windows-amd64.zip(27.53 MB)
      install.sh(2.90 KB)
    • v0.24.2(Mar 16, 2021)

      Improvements to JOIN correctness and performance.

      Merged PRs

      • 1449: Remove samples The samples stored in samples went stale. We will come up with a better place to store example Dolt usage that is not the root of our repository.
      • 1446: Add sponsor link to Dolt repository on GitHub
      • 1442: Added limited self referential foreign key support This only adds support for self referential foreign keys that consist of a single column, and also where the column with the constraint comes after the referenced column (in schema order).
      • 1440: Update Bats README
      • 1433: Fixed verify-constraints reporting NULLs as errors. Fixes https://github.com/dolthub/dolt/issues/1432
      • 1431: improved error message when committing without a name or email set. More granular error reporting for when a user or email is not provided.
      • 334: Fixed procedure parameters missing in subqueries
      • 333: SHOW CHARSET & SHOW ENGINE
      • 329: sql/analyzer: join_search: Update indexed join search to respect structural requirements on left and right joins.
      • 331: sql/{plan,analyzer}: {join,indexed_join}: Update join logic to work within subqueries when query scope is non-empty.
      • 59: Add vitess support for show charset

      Closed Issues

      • 1432: Creating commit for bounty PR did not validate foreign key constraints
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(27.01 MB)
      dolt-linux-amd64.tar.gz(27.45 MB)
      dolt-windows-amd64.msi(28.09 MB)
      dolt-windows-amd64.zip(27.44 MB)
      install.sh(2.90 KB)
    • v0.24.0(Mar 9, 2021)

      This release adds alpha support for the following SQL features:

      • Stored procedures
      • Common table expressions (WITH clause)
      • LOAD DATA statements

      Merged PRs

      • 1425: Upgraded go-mysql-server
      • 1419: Expose Load data and add a bunch of tests. This PR exposes LOAD DATA to Dolt. This is a relatively new path to import data into a dolt repo.
      • 1411: libraries/doltcore/schema/typeinfo: fix dropped errors This fixes a dropped test error and a dropped code error in libraries/doltcore/schema/typeinfo.
      • 1410: libraries/doltcore/schema/alterschema: fix dropped errors This fixes dropped test errors in libraries/doltcore/schema/alterschema.
      • 1409: libraries/doltcore/rebase: fix dropped errors This fixes dropped err variables in libraries/doltcore/rebase.
      • 1408: bump gms and jsonagg
      • 1407: libraries/doltcore/merge: fix dropped errors This fixes dropped code and test err variables in libraries/doltcore/merge.
      • 1406: diff printing fix Columns with % signs were being printed using printf style functions which were looking at %s and escape characters.
      • 1405: Turn off discord notify for now
      • 1403: add file copy helper method to iohelp package generally useful io helper method
      • 1402: diff between a range of values allows for performance improvements. Not used in dolt yet, but used by the bounty attribution code.
      • 1401: chunk store in a file no manifest needed Utility library used by bounties
      • 1391: libraries/doltcore/diff: fix dropped error This fixes a dropped err in libraries/doltcore/diff.
      • 1387: Refactoring error message in merge.go [ https://github.com/dolthub/dolt/issues/1307#issue-804175419 ] Issue ID : https://github.com/dolthub/dolt/issues/1307#issue-804175419
      • 1386: Added file names to bats tests Also edited some of the titles to cut down on redundancy since the file names are now in the title. This makes it far easier to see what test belongs in what file if a test ever fails.
      • 330: Support for WITH clauses (common table expressions)
      • 328: Vinai/load data quick fixes Add quick fixes from testing load data on the Dolt side.
      • 327: Add functionality and tests for JSON_ARRAGG. This pr does not include window function capabilities
      • 326: Added function stubs for unimplemented JSON functions 31 unimplemented JSON functions, including two aggregation functions JSON_ARRAYAGG and JSON_OBJECTAGG.
      • 58: Add json aggregate functions to ast.go
      • 57: Implemented common table expressions (WITH) Also removed a bunch of unused vitess-only constructs from the grammar.
      • 56: Capture the verbatim expression for select statements This is a bit hacky and currently breaks on embedded comments. But in general this lets us faithfully reproduce the verbatim select expression in the return schema, which is required for compatibility with some clients. Also makes expressions such as MAX(a as b) illegal, allowed before.
      • 55: Small parser fixes for stored procedures
      • 54: Vinai/load data basic network handling. Basic steps for packet management. Have text with files up to 1gb. Definitely some more work to be done here in the future. Is it optimal to write everything to a file or can we do something better? Regardless, I think this is a good enough start for Max to get unblocked while I continue to build more functionality.
      • 52: Allow reserved words as column names for CREATE TABLE statements Needs tests
      • 51: Vinai/load data p1
      • 50: Removed CODE keyword
      • 49: Max/float53 adds support and tests for FLOAT(prec), which will help with pandas table creation.

      Closed Issues

      • 1399: Switching from current branch to current branch causes changes to appear lost
      • 1397: When dolt will support silicon M1 chip ?
      • 1395: Data_
      • 1389: stray characters in dolt diff output
      Source code(tar.gz)
      Source code(zip)
      dolt-darwin-amd64.tar.gz(26.98 MB)
      dolt-linux-amd64.tar.gz(27.41 MB)
      dolt-windows-amd64.msi(28.05 MB)
      dolt-windows-amd64.zip(27.40 MB)
      install.sh(2.90 KB)
    • Owner
      DoltHub
      DoltHub
      ACID key-value database.

      Coffer Simply ACID* key-value database. At the medium or even low latency it tries to provide greater throughput without losing the ACID properties of

      Eduard 27 Aug 31, 2021
      VictoriaMetrics: fast, cost-effective monitoring solution and time series database

      VictoriaMetrics VictoriaMetrics is a fast, cost-effective and scalable monitoring solution and time series database. It is available in binary release

      VictoriaMetrics 4.9k Sep 21, 2021
      A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.

      NutsDB English | 简体中文 NutsDB is a simple, fast, embeddable and persistent key/value store written in pure Go. It supports fully serializable transacti

      徐佳军 1.7k Sep 18, 2021
      An embedded key/value database for Go.

      bbolt bbolt is a fork of Ben Johnson's Bolt key/value store. The purpose of this fork is to provide the Go community with an active maintenance and de

      etcd-io 4.8k Sep 16, 2021
      RadonDB is an open source, cloud-native MySQL database for building global, scalable cloud services

      OverView RadonDB is an open source, Cloud-native MySQL database for unlimited scalability and performance. What is RadonDB? RadonDB is a cloud-native

      RadonDB 1.6k Sep 24, 2021
      A decentralized, trusted, high performance, SQL database with blockchain features

      中文简介 CovenantSQL(CQL) is a Byzantine Fault Tolerant relational database built on SQLite: ServerLess: Free, High Availabile, Auto Sync Database Service

      CovenantSQL 1.2k Sep 19, 2021
      "Go SQL DB" is a relational database that supports SQL queries for research purposes

      A pure golang SQL database for database theory research

      auxten 596 Sep 22, 2021
      immudb - world’s fastest immutable database

      immudb Note: The master branch is the joint point for all ongoing development efforts. Thus it may be in an unstable state and should not be used in p

      CodeNotary 3.1k Sep 25, 2021
      Graviton Database: ZFS for key-value stores.

      Graviton Database: ZFS for key-value stores. Graviton Database is simple, fast, versioned, authenticated, embeddable key-value store database in pure

      null 404 Aug 12, 2021
      Owl is a db manager platform,committed to standardizing the data, index in the database and operations to the database, to avoid risks and failures.

      Owl is a db manager platform,committed to standardizing the data, index in the database and operations to the database, to avoid risks and failures. capabilities which owl provides include Process approval、sql Audit、sql execute and execute as crontab、data backup and recover .

      null 24 Sep 23, 2021
      Redwood is a highly-configurable, distributed, realtime database that manages a state tree shared among many peers

      Redwood is a highly-configurable, distributed, realtime database that manages a state tree shared among many peers. Imagine something like a Redux store, but distributed across all users of an application, that offers offline editing and is resilient to poor connectivity.

      Redwood 475 Sep 22, 2021
      A simple Git Notes Key Value store

      Gino Keva - Git Notes Key Values Gino Keva works as a simple Key Value store built on top of Git Notes, using an event sourcing architecture. Events a

      Philips Software 22 Sep 2, 2021
      The lightweight, distributed relational database built on SQLite.

      rqlite is a lightweight, distributed relational database, which uses SQLite as its storage engine. Forming a cluster is very straightforward, it grace

      rqlite 8.9k Sep 21, 2021
      BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support

      BuntDB is a low-level, in-memory, key/value store in pure Go. It persists to disk, is ACID compliant, and uses locking for multiple readers and a sing

      Josh Baker 3.5k Sep 25, 2021
      Kivik provides a common interface to CouchDB or CouchDB-like databases for Go and GopherJS.

      Kivik Package kivik provides a common interface to CouchDB or CouchDB-like databases. The kivik package must be used in conjunction with a database dr

      Kivik 217 Sep 25, 2021
      CockroachDB - the open source, cloud-native distributed SQL database.

      CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters. What is CockroachDB? Docs Quickstart C

      CockroachDB 22.1k Sep 17, 2021
      pure golang key database support key have value. 非常高效实用的键值数据库。

      orderfile32 pure golang key database support key have value The orderfile32 is standard alone fast key value database. It have two version. one is thi

      null 5 Sep 20, 2021
      EliasDB a graph-based database.

      EliasDB EliasDB is a graph-based database which aims to provide a lightweight solution for projects which want to store their data as a graph. Feature

      Matthias Ladkau 831 Sep 9, 2021
      A tool to monitor git repositories and automatically pull & push changes

      git-o-matic A tool to monitor git repositories and automatically pull & push changes Installation Packages & Binaries Arch Linux: gitomatic Binaries f

      Christian Muehlhaeuser 993 Sep 24, 2021