Bot releases are visible (Hide)
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
st_pointfromtext
, st_linestringfromtext
, st_polygonfromtext
and testsconstraint namedx unique (full_name)
in create table statement.show tables
produces inscrutable error in sql-client
dolt table import
Published by github-actions[bot] almost 3 years ago
LIMIT
queries to fail non-deterministically under sql-server.Published by github-actions[bot] almost 3 years ago
doltdb.Table
doltdb.Table
to extract its backing types.Struct
.doltdb
package, in-memory objects are coupled with the persistent types
objects that are used to de/serialize them to/from disk. The intention of this refactor and subsequent work is to decouple storage details from persistent objects. For example, schema.Schema
is an in-memory abstraction that has a separate utility in the encoding
package to read/write schemas to/from disk. This has created a clean separation of concerns for schema.Schema
, and makes it easy to swap out serialization formats.generating test file
Running the current version of import
Successfully initialized dolt data repository.
Rows Processed: 1000000, Additions: 1000000, Modifications: 0, Had No Effect: 0
Import completed successfully.
real 0m47.759s
user 1m16.795s
sys 0m25.848s
Running version 0.34.5
Rows Processed: 1000000, Additions: 1000000, Modifications: 0, Had No Effect: 0
Import completed successfully.
real 0m37.736s
user 1m12.005s
sys 0m30.281s
BackgroundThreads
, finalizing when we are done with the engine0.34.5
and saw linear scaling, just as we'd hope. There are some cases that are handled very inefficiently, and I left some strategies on how to solve them listed in the comments, which I will probably implement at a later time.> SELECT a6, x5, b2+a6, e4 FROM t6, t4, t5, t2 WHERE b4 in (434,267,535,407,331,2,921,469) AND c5=819 AND d6 in (192,129,970,151) AND (c2=728 OR 806=c2 OR 141=c2)
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x1e2c6d3]
goroutine 1 [running]:
github.com/dolthub/go-mysql-server/sql/expression.(*GetField).Name(...)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/expression/get_field.go:82
github.com/dolthub/go-mysql-server/sql/analyzer.comparisonSatisfiesJoinCondition({0x2d03fbe8, 0xc0013df5e0}, 0xc0013df580)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:50 +0x2d3
github.com/dolthub/go-mysql-server/sql/analyzer.expressionCoversJoin.func1({0x29e5070, 0xc0013df5e0})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:61 +0x5b
github.com/dolthub/go-mysql-server/sql/expression.InspectUp.func1({0x29e5070, 0xc0013df5e0})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/expression/transform.go:61 +0x39
github.com/dolthub/go-mysql-server/sql/expression.InspectUp.func2({0x29e5070, 0xc0013df5e0})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/expression/transform.go:68 +0x27
github.com/dolthub/go-mysql-server/sql/expression.TransformUp({0x29e5070, 0xc0013defc0}, 0xc00016dfc8)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/expression/transform.go:53 +0x13d
github.com/dolthub/go-mysql-server/sql/expression.InspectUp({0x29e5070, 0xc0013defc0}, 0xc00016e020)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/expression/transform.go:67 +0xad
github.com/dolthub/go-mysql-server/sql/analyzer.expressionCoversJoin({0x29e5070, 0xc0013defc0}, 0x3cd6108)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:58 +0x3f
github.com/dolthub/go-mysql-server/sql/analyzer.replaceCrossJoins.func1.1({0x29d3b00, 0xc0013df580})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:93 +0x318
github.com/dolthub/go-mysql-server/sql/plan.TransformUp.func1({{0x29d3b00, 0xc0013df580}, {0x29d3b00, 0xc0013df440}, 0x0, {0x37ff6f8, 0x0, 0x0}})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:98 +0x4f
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d3b00, 0xc0013df420}, {0x29d3b00, 0xc0013df440}, 0x0, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016e778)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:91 +0x6ba
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d3b00, 0xc0013df440}, {0x29d3b00, 0xc0013df460}, 0x0, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016e778)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:72 +0x41f
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d3b00, 0xc0013df460}, {0x29d3fc8, 0xc0013df480}, 0x0, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016e778)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:72 +0x41f
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d3fc8, 0xc0013df480}, {0x0, 0x0}, 0xffffffffffffffff, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016e778)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:72 +0x41f
github.com/dolthub/go-mysql-server/sql/plan.TransformUpCtx({0x29d3fc8, 0xc0013df480}, 0x100c00016e7e8, 0x100e674)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:53 +0xbd
github.com/dolthub/go-mysql-server/sql/plan.TransformUp({0x29d3fc8, 0xc0013df480}, 0x203000)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:97 +0x45
github.com/dolthub/go-mysql-server/sql/analyzer.replaceCrossJoins.func1({0x29d3fc8, 0xc0013df480})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:85 +0x159
github.com/dolthub/go-mysql-server/sql/plan.TransformUp.func1({{0x29d3fc8, 0xc0013df480}, {0x29d45f8, 0xc0013cd200}, 0x0, {0x37ff6f8, 0x0, 0x0}})
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:98 +0x4f
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d3fc8, 0xc0013df2e0}, {0x29d45f8, 0xc0013cd200}, 0x0, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016eca0)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:91 +0x6ba
github.com/dolthub/go-mysql-server/sql/plan.transformUpCtx({{0x29d45f8, 0xc0013cd200}, {0x0, 0x0}, 0xffffffffffffffff, {0x37ff6f8, 0x0, 0x0}}, 0x0, 0xc00016eca0)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:72 +0x41f
github.com/dolthub/go-mysql-server/sql/plan.TransformUpCtx({0x29d45f8, 0xc0013cd200}, 0x1d9c087, 0xc0013b6ec0)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:53 +0xbd
github.com/dolthub/go-mysql-server/sql/plan.TransformUp({0x29d45f8, 0xc0013cd200}, 0xc0007dbb01)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/plan/transform.go:97 +0x45
github.com/dolthub/go-mysql-server/sql/analyzer.replaceCrossJoins(0x26a3cc2, 0x26a0458, {0x29d45f8, 0xc0013cd200}, 0xc0013cd200)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/replace_cross_joins.go:78 +0x45
github.com/dolthub/go-mysql-server/sql/analyzer.(*Batch).evalOnce(0x29d45f8, 0xc00096d740, 0xc0007dbb60, {0x29d45f8, 0xc0013cc5d0}, 0x104e534)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/batch.go:93 +0x1e7
github.com/dolthub/go-mysql-server/sql/analyzer.(*Batch).Eval(0xc0006b9350, 0x37ff6f8, 0xc0007dbb60, {0x29d45f8, 0xc0013cc5d0}, 0x1)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/batch.go:54 +0x145
github.com/dolthub/go-mysql-server/sql/analyzer.(*Analyzer).analyzeWithSelector(0xc0007dbb60, 0xc00054eb40, {0x29d45f8, 0xc00096d740}, 0x0, 0x271def0)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/analyzer.go:376 +0x314
github.com/dolthub/go-mysql-server/sql/analyzer.(*Analyzer).Analyze(...)
/Users/vinairachakonda/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/analyzer.go:348
...
SHOW COUNT(*) {WARNINGS, ERRORS}
SHOW {WARNINGS,ERRORS} LIMIT ...[, ...]
SHOW {,SESSION,GLOBAL} VARIABLES {LIKE,WHERE} ...
SHOW FULL PROCESSLIST
RENAME USER
, CREATE ROLE
, DROP ROLE
, SHOW GRANTS
, and a portion of CREATE USER
. The rest of CREATE USER
, along with GRANT
and REVOKE
will come in the next PR.DROP USER
was implemented to test the name variations, so refer to the tests in parse_test.go
for how account names work (and to see why the changes were necessary). All parser tests were validated against a MySQL 8.0 instance.user@host
, and both user
and host
must be separate strings. The parser treated @
as a standard letter, and we used regex matching in GMS and Dolt to catch "invalid" names (@@system_var
is valid but what@@
is invalid). My first pass was to treat the entire account name as a string and split it using a regex, however I could not get it to pass all of the parser tests. This was the only way I could make it work with all tests passing.DROP USER '';
looks like weird syntax, but an empty name means that all names match. In this case, you can assign some dbs/tables to be available to everyone.DROP USER ``;
is valid, but failed as we returned an error on empty quoted identifiers. MySQL allows empty quoted identifiers to parse, but rejects them as invalid names depending on the query. This has been fixed.ast_permissions.go
to put all of the statements dealing with users, grants, etc. For me, ast.go
operates very slowly and occasionally hangs for a few minutes, so I'm putting my new statements in a new file for now. I doubt you'll have pushback, but if so I can merge the file back into ast.go
when I'm done.dolt sql -q "select dolt_checkout('main')"
does not checkout mainHASH IN
fails on arithmetic, function nodesPublished by github-actions[bot] almost 3 years ago
dolt init
before configuring user.email
and user.name
results (correctly) in error; however, the CLI hint itself is incorrect:
Author identity unknown
*** Please tell me who you are.
Run
dolt config --global user.email "[email protected]"
dolt config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name not allowed
The proposed commands for identity configuration do not include the --add
flag, resulting in a new error message: Exactly one of the -add, -get, -unset, -list flags must be set.
--add
flag to the proposed commands.sql.PrimaryKeySchema
, implement new PrimaryKeyAlterableTable
methods, add new TestPkOrdinals
enginetests.schemaImpl
and the serialized schema has a new field for PK ordinalssql.Schema
for printing/vizualizationSHOW CREATE TABLE
does not print the correct order still)parse_test.go
for new error.CREATE TABLE
,sql.PrimaryKeySchema
even for keyless tables.CREATE TABLE LIKE
and CREATE TABLE SELECT
are handled separatelysql.PrimaryKeyAlterableTable
now includes PrimaryKeySchema()
and Pks()
create table t (a int primary key)
succeedscreate table t (a int not null primary key)
succeedscreate table t (a int null primary key)
failscreate table t(a int null not null ...)
if they want.--force
option to dolt checkout
dolt blame
columns headers are shifted to the left by onePublished by github-actions[bot] almost 3 years ago
behavior:
disable_client_multi_statements: false
in the config.yaml for the server.null
to supported syntax for column definitionsINSERT INTO ... VALUES ()
insert into test_tb values ()
insert into test_tb () values ()
insert into test_tb values (), (), ...
insert into test_tb () values (), (), ...
Published by github-actions[bot] almost 3 years ago
conflict_source.go
to just return ErrNoConflicts
when there are no conflicts rather than printing an empty table.resolve.go
to call ClearConflicts()
when there are zero rows in conflict after resolving table.dolt_conflicts_test
, as that now returns a ErrNoConflicts
.EXPLAIN
statements), this also allows for another scenario to match indexes, although we're still missing a fairly important one. I'll list the scenarios below (assume an index over columns (v1
, v2
, v3
).WHERE v1 = 5 AND v3 = 2
is now used by indexes as we can still filter on v1 = 5
using the same principles that partial indexes use. v3 = 2
may not allow for rows to be skipped on the integrator's side when reading from their internal store, but may allow for them to be skipped when returning to the engine (removing the conversion to a sql.Row
from the integrator's implementation which should be a fairly substantial speed increase).(v1 > 1 AND v3 > 1) OR (v1 < 4 AND v2 < 4)
will now combine the two ranges (separated by OR
). Reducing the prefix limitation has greatly increased the index match possibility. Just to note, the returned indexes are sorted by whether they're an exact match, then by how many expressions are a prefix, then by the index size, and lastly by the index name, so you should always get the "best" index for any given set of expressions.v1
, v3
, v2
) is another index then the above example will match to two different indexes (both being a perfect prefix to an index). There is a way to get around this by taking note of which index has been used previously if multiple indexes share the same columns (or some indexes are subsets/supersets of some other indexes), however this was attempted and abandoned due to the added complexity and time it would take to implement.(v1 > 1 AND v3 > 1) OR (v2 < 4)
As the (v2 < 4)
is missing the first index expression (v1
), therefore no index is used here (one is used by MySQL, which was tested to confirm that one should be in this case). Again this would be fixed by taking note of which indexes have already been used, as we only need the prefix to be matched one, and then all other sets of expressions just need to be subsets.existsNonZeroValues
to avoid this.AND
conjugates can be split and checked individually for join candidacy. If multiple conjugate trees match the join expression, a new conjugate AND
of the subtrees are used as the join condition.insert into test_tb values ()
insert into test_tb () values ()
insert into test_tb values (), (), ...
insert into test_tb () values (), (), ...
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] almost 3 years ago
SELECT * FROM table ORDER BY id LIMIT 100 OFFSET 100
Published by github-actions[bot] almost 3 years ago
GetField
is converted to Literal
max_allowed_packet = 67108864
system variable to limit set size?Published by github-actions[bot] almost 3 years ago
database/branch
syntax or calling use <database>/<branch>
in replicated database mode will attempt to fetch the new branch.dolt_skip_replication_errors
config option. Allow erroring in certain cases of misconfigured or unavailable replication, rather than erroring in a way that makes the sql-server unavailable.WHERE ... IN (...)
in some cases.dolt push
does not make a new line if it pushes somethingdolt fetch
prints extra new linesPublished by github-actions[bot] almost 3 years ago
dolt dump
command that dumps all tables to doltdump.sql
file in current directory../dolt/config.json
with a sqlserver.globals.
prefixsql.SystemVariables
singletondolt_engine_mode = 'permissive'
is set (used a lot in the bats tests)Published by github-actions[bot] almost 3 years ago
dolt checkout
and sql-connect-to-branch functionality available even when the configured default branch for the sql-server or CLI do not exist.dolt_branch
INSERT
and UPDATE
, allowing for replication outside of atomic dolt commits.AS OF
clause in JOIN
clauseselect dolt_merge('other');
returns error code for "up to date" statusPublished by github-actions[bot] almost 3 years ago
A bug fix release which includes fixes for UPDATE queries in BEGIN blocks of a trigger and filter clauses on subqueries that include Window functions.
Published by github-actions[bot] almost 3 years ago
Published by github-actions[bot] about 3 years ago
sequenceSplitter
interface for rollingValueHasherstatus
column identifier in INSERT
statementsdolt pull
is trying to do a commit for a ff mergedolt table import -u businesses WA.csv
fails with fatal error: out of memory
foreign_key_checks = 0
should allow out-of-order creation of foreign key constraints