Releases: dolthub/dolt
0.23.0
This release introduces several improvements to the query analyzer:
- Tables can now be joined to subqueries using indexes
- Indexes and other optimizations now work in
INSERT ... SELECT
statements - Null-safe equals operator (
<=>
)
Merged PRs
- 1303: go/go.mod: Bump go-mysql-server
- 295: Changed analysis to isolate the values side of an INSERT statement
Also cleaned up create trigger analysis, which broke when I did this at first. Now catches more errors than before. - 294: Fixed a bug in join planning for Inserts.
Table reordering was leaving nodes above the join with incorrect field indexes. This was getting fixed by other analyzer steps for some top-level nodes, but not Inserts. - 293: Implement NullSafeEquals: The <=> operator in MySQL.
- 292: Make join planning work for insert statements
- 291: Consider SubqueryAlias nodes when planning indexed joins.
0.22.14
This release addresses correctness bugs and provides performance improvements, as well as continuing to flesh Dolt's version control features as SQL functions.
Merged PRs
- 1298: change table projection implementation
- 1293: Insertion optimizations
Go from sql rows to types.Tuples directly and use those tuples for insertion without using row.Row. - 1289: Added DOLT_SQL_DEBUG_LOG and DOLT_SQL_DEBUG_LOG_VERBOSE environment vars
Used to turn on query analyzer debugging - 1287: Implement SQL dolt_checkout function
This pr adds DOLT_CHECKOUT functionality. - 290: pushdown to indexed tables
- 288: remove slow span tag
- 287: Update README.md to reference Dolt
- 286: Fixed several bugs preventing indexes from being used in some joins
- 285: Implemented JOIN_ORDER optimizer hints
Also:- Got rid of expensive comment stripping pass in the parser
- Fixed test behavior of MySQL executed comment statements like
/*!40101 SET NAMES utf8 */
- Made SHOW VARIABLES output sorted
- 284: Updated copyright headers and added missing ones
- 283: Fixed type bugs
Closed Issues
0.22.13
This release addresses a number of correctness bugs and improves query performance.
Merged PRs
- 1285: Upgraded to latest go-mysql-server, and added a skip for a new query plan test
- 1284: fix projected columns with single partition indexes
- 1280: o/libraries/doltcore/table/editor: Add ability to configure map editor flush interval with environment variables.
- 1269: Implement StatisticsTable interface to provide table statistics to the analyzer.
- 1267: Fix bug where batched inserts containing subqueires chose non flushing option..
- 1264: adds ability to redirect stdin from a file
- 282: Bug fix for pushing a projection down to a table in a subquery more than once
- 278: remove sync.Once from autoincrement expression
- 275: add StatisticsTable interface
- 274: Fixed various bugs in subquery execution, added table ordering optimization
Fixes many correctness issues in subquery execution:- Incorrect field indexes for subquery aliases in some cases
- Incorrect field indexes for subquery expressions in the case of column pruning in other parts of the query
- Queries selecting the same table more than once with aliases getting incorrect indexes applied
Also introduces performance enhancements: - Table ordering optimizations based on rows counts of tables in a join
- Better use of index pushdown for some join queries
- 273: Added the VALUES() function
Requested in: #1225
VALUES()
is deprecated in the latest versions of MySQL (as of version 8.0.20, released April 2020), but it is recent enough that I feel its inclusion in the engine is justified.
Closed Issues
0.22.12
This release has two notable features:
- Binary type support.
BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
now supported. dolt diff --cached
now supported
Other than that, this release contains performance improvements and bug fixes.
Merged PRs
- 1252: go/store/nbs: s3_table_reader: Parallelize loading large table file indexes.
- 1251: Implement
dolt diff --cached
command
Made this competing PR with the open source contributed so I could commit bats test changes in conjunction. - 1249: corrected sql row for init commit row in dolt_commit_ancestors table
- 1245: fixes panic in the atomic package
Theatomic
package has the following limitation on 32-bit platforms:On both ARM and x86-32, it is the caller's responsibility to arrange for 64-bit alignment of 64-bit words accessed atomically. The first word in a variable or in an allocated struct, array, or slice can be relied upon to be 64-bit aligned.
- 1242: projected column fixes
For both indexed and unindexed tables when the engine would call WithProjection on our sql.Table implementation we would return a new sql.Table that embedded the old one and had a member which was the list of projected columns. Then, when sql.Table.PartitionRows was called, it was called on the embedded object directly and the projected columns were not accessible. - 1240: Skip And Less Optimizations
- 1239: Decrease the number of allocations for indexed reads
- 1237: Fixed a grammatical mistake in the man page for dolt conflicts resolve.
- 1233: fix panic when key does not exist in table
- 1230: change panic to error for '.' in Dataset name
fix for #1144 - 1229: added sysbench scripts
- 1228: go/store/nbs: WithoutConjoiner() to configure NBS to not conjoin.
- 1221: cli output fix
fixes issues where printf formatting was being unintentionally applied for some cli output - 1220: Print pipeline fix
Fixes issue #1219 by not calling on an iterator after it's already returned EOF - 1218: remotestorage: Fix download aggregation to correctly aggregated based on prior chunk in batch, not first chunk.
- 1217: Restored proper DATE functionality
ForDATE
, we accidentally forgot to add the time truncation during the perf improvements, so this adds it back in. - 1215: Write to root on every loop of sql shell.
This pr fixes a bug where the root gets written on every loop of the dolt sql shell. - 1214: Automated release notes generation
- 1213: Read tuples from sequences directly without conversion to Values
Read tuples from sequences directly instead of using values. - 1212: decrease allocations made while reading values
- 1210: Vinai/refactor docs
This pr refactors DocsReadWriter to simplify the interface. It then removes many of the methods in environment.go that are related to the d
rw interface. - 1209: Added binary types to dolt
AddedBINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
types. - 271: add ability to remove rules
- 269: Fix: not check tcp6 socket state while ipv6 is disabled
If ipv6 is disabled on the system, tcp6 will not exist in the/proc/net
dir.
So open /proc/net/tcp6 will produce the error open /proc/net/tcp6: No such file or directory, we should not always check tcp6 socket state(
unless it is opened). - 268: Bug fix for #1219
Closed Issues
0.22.11
0.22.10
We are excited to announce 0.22.10 of Dolt. We include the usual slate of bug fixes and performance improvements, as well as:
DOLT_RESET
exposed in SQL, part of our roadmap of exposing all Dolt's version control features in SQLON DUPLICATE KEY
for defining behavior when a duplicate primary key is encountered
As usual, we are grateful for contributions and bug reports.
Merged PRs
- 1202: varint benchmark and decoding changes
- 1199: Adds dfuncs that can only be registered with Dolthub API
- 1192: Use map.IterRange for iterating over rows
BeforeAfter~/datasets/wikipedia-ngrams>GOMAXPROCS=1 time dolt sql -r null -q 'SELECT * FROM bigram_counts' 310.13 real 285.36 user 9.16 sys
~/datasets/wikipedia-ngrams>GOMAXPROCS=1 time dolt sql -r null -q 'SELECT * FROM bigram_counts' 253.91 real 233.10 user 9.67 sys
- 1190: go/cmd/dolt: Add debugging flag to run with Jaeger span reporting to localhost.
This adds a --jaeger flag to dolt CLI which installs a Jaeger Tracer as the
global opentracing Tracer. The Tracer is configured to report to an HTTP
collector running on http://localhost:14268, which is the port that docker
imagejaegertracing/all-in-one
listens on.
Also adds some parameters in places where Dolt constructs sql.Contexts to pass
the correct Tracer through.
Also adds a few new Span points, in things like nbs.Get and
metaSequenceImpl.getChildSequence. - 267: sql/plan/exchange.go: Increase exchange node row chan buffer to 16 * parallelis
m. - 265: Fixed bug in inserting literal NULL values as part of a SELECT statement
- 264: Fix bugs in union distinct semantics, allow them in inserts
- 263: Export the struct param for NNary
- 262: sql/plan: exchange.go: Recover from panics in goroutine spawned by iterPartitio
n. - 258: sql/session.go: NewSpanIter: Enable this when the tracer is not Noop.
- 257: disable projection on indexed join
Closed Issues
0.22.9
Merged PRs
- 1169: go/libraries/doltcore/sqle: Keyless tables don't have PK index -- fix describe panic
- 1167: C# test for alternate MySQL connector library, upgraded existing to u…
…se dotnet 5 (up from 3) - 1162: unrolled decode varint decode loop
30% faster on the benchmark in this PR.
BenchmarkUnrolledDecodeUVarint/binary.UVarint-8 1000000000 0.0372 ns/op
BenchmarkUnrolledDecodeUVarint/unrolled-8 1000000000 0.0258 ns/op - 1159: Bh/hang fix
Fixes #1153
and disables GC on import errors. - 1157: Address escaping in longtext/json
Longext is no longer being exported properly in json and csv. This pr fixes that. Cc linked comment. - 1151: Implement dolt status table
Implement the dolt_status table. Schema is of the form table_name, staged(bool), status, - 1149: /go/libraries/doltcore/sqle: move table cache to DoltSession, purge on root change
I'm ambivalent about where the table cache lives, but we need to have access to it when we change the root of asqle.Database
This PR purges the table cache when we change roots. IESET @@dolt_head = hashof(...)
. The intention is to limit the scope of edit sessio
ns, and table mutations in general, and contain them to the working root of asqle.Database
.
Currently there is a tricky reference chain within the table cache:sqle.tableCache
->sqle.WritableDoltTable
->sqle.sqlTableEditor
->table/editor.TableEditSesson
When we change roots in the database we also change the root within theTableEditSession
. They're both referencing the new working root.
Without purging the cache, we will keep old tables from the previous working root that still have a reference to theTableEditSession
.
This hasn't caused any issues (yet), but I think it's prudent to limit the scope and lifetime of these interconnected pieces of state. The
next step is to create a freshTableEditSession
each time we switch roots. - 256: added describe queries for keyless tables
- 255: This function implement an Naryfunction type.
Allows you to define sqle functions that have multiple children. - 254: Fixed UNHEX/HEX roundtrip
Simple fix but I ended up completely reevaluating our binary type implementation. Fixed a bug found in thecast
package we were using to
convert strings, and also changedUNHEX
to return the proper SQL type. - 252: Added hash functions
- 249: Alias bug fixes
Fixes a number of buggy behaviors involving column indexes and table name resolution.
Closed Issues
0.22.8
Merged PRs
- 1142: make script executable
- 1141: uncomment platform specific code
- 1139: index bug fix
- 1136: send map sizes for legacy diff summary
- 1134: Andy/ungate keyless tables
- 1133: Andy/keyless import/export
Adds keyless table support fordolt table import ...
.table import -c
now creates keyless tables if the-pk
option is not provided. - 1132: Added release automation for Dolt
The Release workflow is kicked off by the user hitting therun workflow
GUI, and then entering version.
The basic workflow is as follows:- bump-version
- checks out the code, and creates a branch, for example
v0.23.0-release
if the release parameter is0.23.0
- updates the version string
- snaps a commit
- creates a tag
- pushes the tag and branch
- create-release
- checks out the code at the newly created tag
- creates a release
- builds the binaries
- uploads the binaries to the release
- homebrew-bump
- creates a PR to bump the Homebrew formula
Possible enhancements - validate version string passed by user
- use GitHub API to create PR of release branch back to master
- notifications
- MSI creation
- 1130: Andy/keyless tables merge
- 1124: /go/libraries/doltcore/diff: Keyless Table Diff
- 1120: Vinai/docs read writer
This pr creates a DocsReadWriter which factors out some of the additional docs methods that were stuck in repo_state.json. Subsequent refac
toring across files to account for this change. - 248: additional tests
add a table with multiple keys
an index that has a subset of those keys in a different order
a couple queries - 246: Error changes for INSERT ON DUPLICATE KEY UPDATE
Closed Issues
- 1126: Incorrect Foreign Key error on merge
0.22.7
We are pleased to announce Dolt 0.22.7.
This release focuses on bug fixes, and performance improvements in SQL. In particular delivered huge performance improvements in our SQL implementation. You can find the scope of these performance improvements detailed on our benchmarks page.
Merged PRs
- 1116: partition ranges, covering indexes, smarter iterators
- 1111: README quotes changed bugfix for windows terminal
On the README there are instructions on how to add values into a table. The values in one portion have single quotes on the outside and have double-quotes for any string. While that format works in a Unix terminal, it doesn't work in - 1109: Attempt to add default decimal type to FromKind
- 1108: Fixed dolt status output incorrectly displayed for staged files
The functionprintStagedDiffs
always returned 0, even when there were diffs not staged. This return was also causing it to print inprintStatus
"nothing to commit, working tree clean". This was not the case.
I changedprintStagedDiffs
to return the number of the staged tables plus the number of staged docs instead. This prevents it from entering the if statement with the print also. - 1107: go/libraries/doltcore/{row, sqle, table}: Generalize TableReader
Createdtable.SqlTableReader
as a replacement for directly reading from table maps. Used it to replacetypes.MapIterator
insqle.doltTableRowIter
- 1106: Added verify-constraints command
- 1105: /MySQLDockerfile: peg version to match Gemfile.lock BUNDLED WITH
- 1103: /go/cmd/dolt: added feature flag for keyless schemas
- 1102: go/libraries/doltcore/{doltdb,table}: remove row access methods from doltdb.Table
Removed:- Table.GetRowByPKVals()
- Table.GetRow()
- Table.GetRows()
Had do to some refactoring along the way to fix dependency cycles.
Reversed dependencyrowconv -> pipeline
topipeline -> rowconv
- 1101: Ensure that MERGE() works properly with fast forward.
Added test case as well. - 1098: Export NewJSONReader to use in dolthubapi
- 1097: Fixed table import allowing NULLs in the primary key
Fixes #1096 - 1093: go/libraries/doltcore/table/editor: Convert TableEditor to interface
- 1090: Add --author, -m to COMMIT. Add --author to MERGE()
COMMIT('-m', 'hi', '--author', 'John Doe [email protected]')
MERGE('feature-branch', '--author', 'John Doe [email protected]') - 1089: Add the Dolt mascot to README
- 1088: fixed rand seed
- 1087: increase query parallelism from the default of 2 to 8
- 1085: split TableEditors and IndexEditor to their own package
- 1084: bats/: keyless spec
This is a set of skipped BATS tests that provide a spec for keyless tables. - 1082: Fixed internal index comparisons considering unnecessary parameters
Fixes #1081 - 1080: Fixed shell error loop on UNIQUE violation
Fixes #1079 - 1078: Upgraded to latest go-mysql-server with support for indexed joins on any number of tables
- 1075: Support for CURRENT_USER SQL function without ()
- 1074: Add dolt_commit error check when autocommit is off
Fails loudly when autocommit is off for dolt_commit. - 245: Fixed tuple comparisons
- 240: Enginetests for Keyless tables
- 239: naked functions
Fix for naked CURRENT_USER function call was in vitess, this just adds tests.
Closed Issues
- 1099: MERGE() is creating a new commit on FFs.
- 1096: Table import can allow NULLs in the primary key
- 1081: "string is too large for column"
- 1079: Indefinitely errors in SQL shell once a UNIQUE constraint has been violated
- 1071: Throw error in DOLT_COMMIT if autocommit is not true
- 241: expression.Tuple is uncomparable
0.22.6
Merged PRs
- 1068: Add -a flag to cli and DOLT_COMMIT
This pr adds a-a
flag todolt commit
andDOLT_COMMIT
. It stages all tables.
It also cleans up some of the previous work done in #1056 by removing all method handlers in repo_state and moving them to the RepoStateReader and RepoStateWriter
It does not refactor the RSR/RSW interfaces in environment.go. This will be done in a subsequent pr.
Closed Issues
- 1067: Support dolt commit -a