Bot releases are visible (Hide)
Published by github-actions[bot] almost 2 years ago
// SWITCH TO DOLT v0.50.8
rm -rf .dolt
dolt init
dolt sql -q "create table payment(payment_id int primary key);"
dolt sql -q "create table subscription(id int primary key, payment_id int);"
dolt sql -q "alter table subscription add constraint subscription_pm_fk foreign key (payment_id) references payment(payment_id);"
dolt add .
dolt commit -m "commit from the past"
// SWITCH TO MAIN
dolt sql -q "drop table subscription";
dolt sql -q "drop table payment";
dolt sql -q "create table payment(payment_id int primary key);"
dolt sql -q "create table subscription(id int primary key, payment_id int);" #A
dolt sql -q "alter table subscription add constraint subscription_pm_fk foreign key (payment_id) references payment(payment_id);" #B
dolt add .
dolt commit -m "commit from the future"
You can see this by running dolt status
after line (A) and then line (B).UnresolvedQualifiedColumn
when the missing column is qualified with a table name. I've run Dolt tests locally and confirmed there shouldn't be any other test failures in the next bump.ALTER DATABASE
queries.dual
only for select from statements if used without back-ticksDROP TABLE CASCADE
dolt sql < file.sql
that shows the progress of a SQL loadRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.76 | 1.4 |
groupby_scan | 12.3 | 17.01 | 1.4 |
index_join | 1.18 | 4.65 | 3.9 |
index_join_scan | 1.14 | 3.89 | 3.4 |
index_scan | 30.81 | 53.85 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 69.29 | 186.54 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.91 | 10.84 | 3.7 |
oltp_insert | 1.39 | 2.76 | 2.0 |
oltp_read_write | 5.09 | 17.01 | 3.3 |
oltp_update_index | 1.44 | 4.82 | 3.3 |
oltp_update_non_index | 1.44 | 5.18 | 3.6 |
oltp_write_only | 2.22 | 8.13 | 3.7 |
types_delete_insert | 3.02 | 12.98 | 4.3 |
writes_mean_multiplier | 3.1 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
server_query
in favor of dolt sql-client
in batsdolt_diff_summary
table functiondolt_diff_summary('main..feature', 'table')
(equivalent to dolt_diff_summary('main', 'feature', 'table')
)dolt_diff_summary('main...feature', 'table')
dolt_diff
table functiondolt_diff('main..feature', 'table')
(equivalent to dolt_diff('main', 'feature', 'table')
)dolt_diff('main...feature', 'table')
dolt sql-client --query
dolt diff A..B
dolt diff A..
dolt diff A...B
dolt diff A...
dolt diff --merge-base A B
chunkReader.extract()
, converted public methods to private methods for…NOT NULL
constraint. We can either not sample tables or just not apply the NOT NULL
constraintl. I chose to not apply the NOT NULL
constraint. Additionally, the sampling change makes it possible to incorrectly make certain columns UNISIGNED INT
, when they contain negative numbers. I changed it so infer will always treat columns as signed, so integers that are too large/small for signed int will become strings.server_query
in favor of dolt sql-client
in bats testsserver_query
requires python and has a non-descriptive interface. dolt sql-client
allows for a native dolt interface to a running dolt sql-server
that is easier to read and maps better to the rest of the bats tests.UnresolvedQualifiedColumn
when the missing column is qualified with a table name. I've run Dolt tests locally and confirmed there shouldn't be any other test failures in the next bump.show keys from information_schema.columns
information_schema.columns
as a separate node type, treats it just like any other ResolvedTable.
OnceBefore
batch, rather than default rules, and 2) splitting it up into multiple passes that each have a single purpose. I found in the process of 1) that the previous rules had a lot of side effects and unintended ordering constraints, so introduced new rules and tweaked others to eliminate those.sql.Projector
, that unites GroupBy
, Window
, and Project
if a caller just needs to get the projected expressions.QueryProcess
node we create is bound to the current context's PID. This is not the same PID as the context that will execute a statement created from that template, which results in ProcessList metadata not being properly cleaned up after a query has finished processing.select * from ab
inner join uv on a = u
full join pq on a = p
memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (innerJoin 2 1) (innerJoin 1 2)
└── G5: (leftJoin 4 3)
"Relational expression" each have their own expression group, within which several physical/concrete implementation can reside. An expression group is defined in terms of expression group relationships, not physical implementations, because the output from any relational expression within a group will be the same. Groups are usually keyed by a hash of the operator type and the child group keys, or in the case of scalar expression by the literal parameter values (this last point will be useful for prepared statements).joinOrderBuilder
.memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (indexedJoin 1 2) (indexedJoin 2 1) (innerJoin 2 1) (innerJoin 1 2)
└── G5: (indexedJoin 4 3) (leftJoin 4 3)
Hashed joins are added in the same manner:
memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (hashJoin 1 2) (hashJoin 2 1) (indexedJoin 1 2) (indexedJoin 2 1) (innerJoin 2 1) (innerJoin 1 2)
└── G5: (hashJoin 4 3) (indexedJoin 4 3) (leftJoin 4 3)
This memo is missing several components that would make it more useful, including other node and expression types. For example, filter pushdown would be much easier in the memo. You could imagine extending the memo above with sql.Expression tree memo groups (scalar relations). Canonical (simplified) expression groups only requiring one allocation, and the scalar expression group caches properties like table and column dependencies similar to relProp
column and table dependencies. We would need to build a memo prior to join planning to use filters for join planning, and run other transformation rules on the memo. I'd expect the memo to absorb rules over time, which will simplify transform logic and improve analyzer memory consumption. I added some starters to make this easier in the future, like codegen'd memo expressions, and a move towards visitor interfaces for IR transformations.ab.a = uv.u
+ uv.u = xy.x
=> ab.a = xy.x
).IS NULL
).exec_builder
, which i'd expect to expand to include more exprGroup types in the future.expandStars
in transposeRightJoins
.*plan.JoinNode
and differentiated based on its join type, which lets me bucket different join types more easily (refer to JoinType
type methods).Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.81 | 1.5 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.1 | 3.82 | 3.5 |
index_scan | 30.26 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 68.05 | 183.21 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.02 | 10.27 | 3.4 |
oltp_insert | 1.52 | 2.71 | 1.8 |
oltp_read_write | 5.28 | 17.01 | 3.2 |
oltp_update_index | 1.55 | 4.65 | 3.0 |
oltp_update_non_index | 1.55 | 5.0 | 3.2 |
oltp_write_only | 2.43 | 8.13 | 3.3 |
types_delete_insert | 3.25 | 11.45 | 3.5 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] almost 2 years ago
types.BoolKind
in very old databases(5049 - 6017) / 6017 = -16.09%
performance hit.goos: darwin
goarch: amd64
pkg: github.com/dolthub/dolt/go/store/nbs
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
BenchmarkFindPrefix
BenchmarkFindPrefix/benchmark_prefixIdx()
BenchmarkFindPrefix/benchmark_prefixIdx()-12 16069794 71.68 ns/op
BenchmarkFindPrefix/benchmark_findPrefix
BenchmarkFindPrefix/benchmark_findPrefix-12 22866360 52.23 ns/op
PASS
getPORT
helper functiongrep
, which caused errors and prevented us from fully checking if a port is in use.Published by github-actions[bot] almost 2 years ago
dolthub/dolt
and dolthub/dolt-sql-server
images.utf8mb4_0900_bin
to match e…dolt sql-server
. The server starts at 0.0.0.0:3306
, which allow connections from outside the container through port-mapping. User can define host and port through yaml configuration. The data directory is default to /var/lib/dolt/
directory in the container. It can be mounted with directory on host system. It's not recommended to define data_dir in configuration, which will cause mounting host system directory fail.^
ancestor specmemory.Table
doesn't implement RewriteableTable
select * from ab
inner join uv on a = u
full join pq on a = p
memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (innerJoin 2 1) (innerJoin 1 2)
└── G5: (leftJoin 4 3)
"Relational expression" each have their own expression group, within which several physical/concrete implementation can reside. An expression group is defined in terms of expression group relationships, not physical implementations, because the output from any relational expression within a group will be the same. Groups are usually keyed by a hash of the operator type and the child group keys, or in the case of scalar expression by the literal parameter values (this last point will be useful for prepared statements).joinOrderBuilder
.memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (indexedJoin 1 2) (indexedJoin 2 1) (innerJoin 2 1) (innerJoin 1 2)
└── G5: (indexedJoin 4 3) (leftJoin 4 3)
Hashed joins are added in the same manner:
memo:
├── G1: (tablescan: ab)
├── G2: (tablescan: uv)
├── G3: (tablescan: pq)
├── G4: (hashJoin 1 2) (hashJoin 2 1) (indexedJoin 1 2) (indexedJoin 2 1) (innerJoin 2 1) (innerJoin 1 2)
└── G5: (hashJoin 4 3) (indexedJoin 4 3) (leftJoin 4 3)
This memo is missing several components that would make it more useful, including other node and expression types. For example, filter pushdown would be much easier in the memo. You could imagine extending the memo above with sql.Expression tree memo groups (scalar relations). Canonical (simplified) expression groups only requiring one allocation, and the scalar expression group caches properties like table and column dependencies similar to relProp
column and table dependencies. We would need to build a memo prior to join planning to use filters for join planning, and run other transformation rules on the memo. I'd expect the memo to absorb rules over time, which will simplify transform logic and improve analyzer memory consumption. I added some starters to make this easier in the future, like codegen'd memo expressions, and a move towards visitor interfaces for IR transformations.ab.a = uv.u
+ uv.u = xy.x
=> ab.a = xy.x
).IS NULL
).exec_builder
, which i'd expect to expand to include more exprGroup types in the future.expandStars
in transposeRightJoins
.*plan.JoinNode
and differentiated based on its join type, which lets me bucket different join types more easily (refer to JoinType
type methods).Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.3 | 17.95 | 1.5 |
index_join | 1.47 | 4.65 | 3.2 |
index_join_scan | 1.44 | 3.89 | 2.7 |
index_scan | 30.81 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 3.02 | 8.74 | 2.9 |
select_random_points | 0.31 | 0.77 | 2.5 |
select_random_ranges | 0.36 | 1.14 | 3.2 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 70.55 | 189.93 | 2.7 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.43 | 8.9 | 2.6 |
oltp_insert | 1.61 | 2.76 | 1.7 |
oltp_read_write | 5.47 | 16.41 | 3.0 |
oltp_update_index | 1.7 | 4.1 | 2.4 |
oltp_update_non_index | 1.64 | 4.25 | 2.6 |
oltp_write_only | 2.43 | 7.84 | 3.2 |
types_delete_insert | 3.3 | 10.65 | 3.2 |
writes_mean_multiplier | 2.5 |
Overall Mean Multiple | 2.5 |
---|
Published by github-actions[bot] about 2 years ago
server_query
error on bad queries where we expect no results.--not
, --min-parents
, and --merges
to dolt_log table functionauto_increment
primary key to a keyless tableRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.86 | 1.5 |
groupby_scan | 12.52 | 17.32 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.14 | 3.82 | 3.4 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 69.29 | 186.54 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.76 | 9.73 | 3.5 |
oltp_insert | 1.47 | 2.76 | 1.9 |
oltp_read_write | 5.09 | 16.71 | 3.3 |
oltp_update_index | 1.42 | 4.41 | 3.1 |
oltp_update_non_index | 1.42 | 4.65 | 3.3 |
oltp_write_only | 2.22 | 7.98 | 3.6 |
types_delete_insert | 2.91 | 11.04 | 3.8 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
schema.Schema
--parents
and --decorate
to dolt_log
table function@@session.global_var = value
should failRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 2.66 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.89 | 3.5 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 68.05 | 186.54 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.25 | 9.39 | 2.9 |
oltp_insert | 1.58 | 2.76 | 1.7 |
oltp_read_write | 5.09 | 16.71 | 3.3 |
oltp_update_index | 1.47 | 4.25 | 2.9 |
oltp_update_non_index | 1.52 | 4.49 | 3.0 |
oltp_write_only | 2.26 | 7.84 | 3.5 |
types_delete_insert | 2.91 | 10.46 | 3.6 |
writes_mean_multiplier | 2.7 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x10 pc=0x10193c7f8]
goroutine 1 [running]:
github.com/dolthub/go-mysql-server/sql/parse.convertVal(0x0?, 0x14000e80520)
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/parse/parse.go:3392 +0x658
github.com/dolthub/go-mysql-server/sql/parse.ExprToExpression(0x0, {0x10282ae00?, 0x14000e80520?})
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/parse/parse.go:3100 +0x1ee4
github.com/dolthub/go-mysql-server/sql/parse.comparisonExprToExpression(0x10281e901?, 0x14000e86c80)
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/parse/parse.go:3491 +0x54
github.com/dolthub/go-mysql-server/sql/parse.ExprToExpression(0x0, {0x10282ab00?, 0x14000e86c80?})
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/parse/parse.go:3089 +0x1cb8
github.com/dolthub/go-mysql-server/sql/parse.ExprToExpression(0x0, {0x10282ada0?, 0x14000200e70?})
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/parse/parse.go:3164 +0x1594
github.com/dolthub/go-mysql-server/sql/analyzer.ConvertCheckDefToConstraint(0x14000cbdf88?, 0x14000cbe288)
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/sql/analyzer/check_constraints.go:317 +0xc4
github.com/dolthub/go-mysql-server.ColumnsFromCheckDefinition(0x10250f760?, 0x14000cbe3d0?)
/Users/dhruv/go/pkg/mod/github.com/dolthub/[email protected]/engine.go:583 +0x1c
github.com/dolthub/dolt/go/libraries/doltcore/merge.mergeChecks({0x102833588, 0x14000666e70}, {0x102833588, 0x14000667020}, {0x102833588, 0x14000667080})
/Users/dhruv/dolt/go/libraries/doltcore/merge/merge_schema.go:807 +0x31c
github.com/dolthub/dolt/go/libraries/doltcore/merge.SchemaMerge(0x1036fac40?, {0x10284f700, 0x1400065d920}, {0x10284f700, 0x1400065dc20}, {0x10284f700, 0x1400065dd40}, {0x1036fac40, 0x1})
/Users/dhruv/dolt/go/libraries/doltcore/merge/merge_schema.go:169 +0x5e0
github.com/dolthub/dolt/go/libraries/doltcore/merge.(*RootMerger).MergeTable(0x14000cbf0e0, {0x1028344d8, 0x14000e863c0}, {0x1036fac40, 0x1}, {0x0, {0x102824888, 0x140006611a0}, {0x1400066c6c0, 0x2c}}, ...)
/Users/dhruv/dolt/go/libraries/doltcore/merge/merge_rows.go:123 +0x1ec
github.com/dolthub/dolt/go/libraries/doltcore/merge.MergeRoots({0x1028344d8, 0x14000e863c0}, 0x1400067f1d0, 0x1400067f220, 0x1400067f3b0, {0x102824130, 0x14000e86500}, {0x102824130, 0x14000e86980}, {0x0, ...}, ...)
/Users/dhruv/dolt/go/libraries/doltcore/merge/merge.go:131 +0x62c
github.com/dolthub/dolt/go/libraries/doltcore/merge.MergeCommits({0x1028344d8, 0x14000e863c0}, 0x14000cbf3a8?, 0xb9ce7a80f36fd6ca?, {0x0, {0x102824888, 0x140006611a0}, {0x1400066c6c0, 0x2c}})
/Users/dhruv/dolt/go/libraries/doltcore/merge/merge.go:66 +0xf0
github.com/dolthub/dolt/go/libraries/doltcore/merge.ExecuteMerge({0x1028344d8, 0x14000e863c0}, 0x14000e863c0?, 0x14000eb6000)
/Users/dhruv/dolt/go/libraries/doltcore/merge/action.go:223 +0x9c
github.com/dolthub/dolt/go/cmd/dolt/commands.performMerge({0x1028344d8, 0x14000e863c0}, 0x14000eb6000?, 0x14000eb6000, {0x14000656280, 0x1e})
/Users/dhruv/dolt/go/cmd/dolt/commands/merge.go:497 +0xfc
github.com/dolthub/dolt/go/cmd/dolt/commands.MergeCmd.Exec({}, {0x1028344d8, 0x14000e863c0}, {0x14000668210, 0xa}, {0x1400004e1d0, 0x1, 0x1}, 0x1400066a090)
/Users/dhruv/dolt/go/cmd/dolt/commands/merge.go:184 +0x998
github.com/dolthub/dolt/go/cmd/dolt/cli.SubCommandHandler.handleCommand({{0x101e529aa, 0x4}, {0x101e6f2be, 0x11}, {0x0, 0x0}, {0x14000db6000, 0x2f, 0x2f}, 0x0}, ...)
/Users/dhruv/dolt/go/cmd/dolt/cli/command.go:237 +0x450
github.com/dolthub/dolt/go/cmd/dolt/cli.SubCommandHandler.Exec({{0x101e529aa, 0x4}, {0x101e6f2be, 0x11}, {0x0, 0x0}, {0x14000db6000, 0x2f, 0x2f}, 0x0}, ...)
/Users/dhruv/dolt/go/cmd/dolt/cli/command.go:186 +0x390
main.runMain()
/Users/dhruv/dolt/go/cmd/dolt/dolt.go:395 +0x6ec
main.main()
/Users/dhruv/dolt/go/cmd/dolt/dolt.go:140 +0x1c
linux/arm64
linux/arm64
addition to linux/amd64
architecture. Each will be pushed to DockerHub as separate tags, but both image will be available for latest
or <release_version>
tags.dolt_log
table functionselect * from dolt_log(<revision>..<revision>)
select * from dolt_log(^<revision>, <revision>)
Adding --not
and other arguments/options nextdolt_log
table functionselect * from dolt_log(<revision>)
(<revision>
is optional). Adding more options in a follow up PRbinlog_table.go
file. I originally removed it, but misread the feedback that said to not expose it rather than to remove it.GeometryCollection
dolt_diff
system tableGeometryCollection
pt. 3GeometryCollection
st_srid
st_swap
GeometryCollection
pt. 2multipolygon
GeometryCollection
st_geometrycollectionfromtext
st_geomcollfromtext
st_geomcollfromtxt
st_geomfromtext
st_astext
st_aswkt
st_dimension
GeometryCollection
pt. 1GeometryCollection
typeGeometryCollection
GeometryCollection
GeomCollection
st_aswkb
st_geometrycollectionfromwkb
st_geomcollfromwkb
MultiLineString
, MultiPolygon
, MultiPoint
and GeometryCollection
geometry typesRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.66 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.14 | 3.82 | 3.4 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 2.97 | 8.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 69.29 | 186.54 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.91 | 9.73 | 3.3 |
oltp_insert | 1.39 | 2.76 | 2.0 |
oltp_read_write | 5.09 | 16.71 | 3.3 |
oltp_update_index | 1.47 | 4.49 | 3.1 |
oltp_update_non_index | 1.44 | 4.65 | 3.2 |
oltp_write_only | 2.22 | 7.98 | 3.6 |
types_delete_insert | 3.19 | 10.84 | 3.4 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
MULTIPOLYGON
dolt config
variables to command descriptiondolt config
, which can be shown with --help
flag.MultiPolygon
pt. 3james/mpoly2
for better readabilityMultiPolygon
ST_ASGEOJSON
ST_GEOMFROMGEOJSON
MultiPolygon
pt. 2james/mpoly
for better readabilityMultiPolygon
ST_ASWKT
ST_GEOMFROMTEXT
MultiPolygon
pt. 1james/mline3
for better readabilitymultilinestring
comments and allocation lengthMultiPolygon
MULTIPOLYGON
ST_ASWKB
ST_GEOMFROMWKB
ST_MPOLYFROMWKB
ST_MULTIPOLYGEOMFROMWKB
MultiLineString
pt. 1MultiLineString
support for these sql functionsST_MULTILINESTRINGFROMWKB
ST_MULTILINESTRINGFROMTEXT
ST_MLINESTRINGFROMWKB
ST_MLINESTRINGFROMTEXT
ST_GEOMFROMWKB
ST_ASWKB
ST_ASTEXT
alter table t alter column set default c1 ('[]')
fails with TEXT, BLOB, GEOMETRY, and JSON types may only have expression default values
dolt sql < file.sql
that shows the progress of a SQL loadRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.89 | 3.5 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 2.97 | 8.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 69.29 | 186.54 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.55 | 11.45 | 3.2 |
oltp_insert | 1.58 | 2.81 | 1.8 |
oltp_read_write | 5.28 | 17.32 | 3.3 |
oltp_update_index | 1.61 | 5.18 | 3.2 |
oltp_update_non_index | 1.52 | 5.37 | 3.5 |
oltp_write_only | 2.39 | 8.43 | 3.5 |
types_delete_insert | 3.43 | 12.52 | 3.7 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
'
character with the correct `
character.dolt sql --file=<file.sql>
command--file
flag of dolt sql
command. It can be used with or without --batch
flag.MULTILINESTRING
IndexedTableAccess
, this adds it to regular explain and ResolvedTable
.MultiLineString
pt. 3james/mline2
for better readabilityMultiLineString
ST_GEOMFROMGEOJSON
ST_ASGEOJSON
MultiLineString
pt. 2james/mline
for better readabilityMultiLineString
ST_SWAP
ST_SRID
ST_DIMENSION
MULTILINESTRING
MultiLineString
pt. 1MultiLineString
support for these sql functionsST_MULTILINESTRINGFROMWKB
ST_MULTILINESTRINGFROMTEXT
ST_MLINESTRINGFROMWKB
ST_MLINESTRINGFROMTEXT
ST_GEOMFROMWKB
ST_ASWKB
ST_ASTEXT
os
, calling *os.File.Fd() will put the socket into blocking mode, makes SetDeadline methods stop working, etc. This syscall to SetNonblocking restores desired functionality.dolt sql < file.sql
that shows the progress of a SQL loaddolt_remotes
system table not accessible when connecting with a branch stringRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 17.01 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.26 | 52.89 | 1.7 |
oltp_point_select | 0.16 | 0.49 | 3.1 |
oltp_read_only | 3.07 | 8.9 | 2.9 |
select_random_points | 0.31 | 0.75 | 2.4 |
select_random_ranges | 0.36 | 1.14 | 3.2 |
table_scan | 30.81 | 61.08 | 2.0 |
types_table_scan | 70.55 | 183.21 | 2.6 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.86 | 11.04 | 3.9 |
oltp_insert | 1.42 | 2.76 | 1.9 |
oltp_read_write | 5.28 | 17.32 | 3.3 |
oltp_update_index | 1.47 | 5.0 | 3.4 |
oltp_update_non_index | 1.42 | 5.18 | 3.6 |
oltp_write_only | 2.3 | 8.28 | 3.6 |
types_delete_insert | 2.91 | 12.3 | 4.2 |
writes_mean_multiplier | 3.1 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] about 2 years ago
core.editor
if it's set, else it uses vim
editor to get commit message. If vim
is not installed on user's system, then it uses auto-generated commit message.insert ... on duplicate key update ...
for unique keysMultiPoint
typeread_geometry.go
and write_geometry.go
are part of types
packageread_geometry.go
and write_geometry.go
passthrough to sql implementation of Serialize
and Deserialize
prolly_indexes
uses references sql
implementations directlysql
/types
to read/write_geometry
os
, calling *os.File.Fd() will put the socket into blocking mode, makes SetDeadline methods stop working, etc. This syscall to SetNonblocking restores desired functionality.MULTIPOINT
and some refactoringFROMWKT
, when they should've been FROMTEXT
ST_POINTFROMWKT
-> ST_POINTFROMTEXT
ST_LINEFROMWKT
-> ST_LINEFROMTEXT
ST_POLYFROMWKT
-> ST_POLYFROMTEXT
ST_LINESTRINGFROMTEXT
ST_LINESTRINGFROMWKB
ST_POLYGONFROMTEXT
ST_POLYGONFROMWKB
ST_GEOMETRYFROMTEXT
ST_GEOMETRYFROMWKB
MULTIPOINT
ST_SWAP
ST_SRID
ST_ASWKB
ST_MULTIPOINTFROMWKB
ST_MULTIPOINTFROMTEXT
ST_MPOINTFROMWKB
ST_MPOINTFROMTEXT
ST_GEOMFROMWKB
ST_ASGEOJSON
ST_FROMGEOJSON
ST_DIMENSION
having
node access to all tables in itselfHAVING
clause can reference column that is not in its select result or group by result (there can be no group by clause). These column references are from tables in HAVING
node that it is not in its immediate children nodes.HAVING
can't be executed without GROUPBY
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.81 | 1.4 |
groupby_scan | 12.52 | 17.32 | 1.4 |
index_join | 1.16 | 4.49 | 3.9 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.81 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 183.21 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.91 | 9.73 | 3.3 |
oltp_insert | 1.5 | 2.76 | 1.8 |
oltp_read_write | 5.18 | 16.71 | 3.2 |
oltp_update_index | 1.47 | 4.41 | 3.0 |
oltp_update_non_index | 1.42 | 4.65 | 3.3 |
oltp_write_only | 2.26 | 7.98 | 3.5 |
types_delete_insert | 3.02 | 10.84 | 3.6 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
dolt
and push on every release[]string{""}
for JSON values in a long time, the README definitely needed an update.having
node access to all tables in itselfHAVING
clause can reference column that is not in its select result or group by result (there can be no group by clause). These column references are from tables in HAVING
node that it is not in its immediate children nodes.IndexedInSubqueryFilter
should be prevented when the static side of the join takes a dependency on the index lookup. The check is now looser, and opaque nodes cannot disallow the transform. When we introduce subqueries that do reference outer scopes, we will need to be more careful and do deeper validation.st_area
, st_perimeter
, st_length
st_area
is calculated using shoelace formula.st_perimeter
is a NOT supported in MySQL, but it is in PostGIS (a postgres plugin for spatial types): https://postgis.net/docs/ST_Perimeter.htmldual
tableprojectedAliases
in reorderProjection
rule.BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
fix for: https://github.com/dolthub/dolt/issues/4436
dual
only for select from statements if used without back-ticksCHECK TABLE
syntax.dolt_docs
when in conflictdolt sql-server
should ignore subdirectories that are not Dolt repos with a warningdolt dump
dolt_branches
table read-only.TestLoadData
fails with Dolt integratorFULLTEXT
key propertyST_AREA()
and ST_PERIMETER()
functionsgit-dolt update
should be able to update dolt repo and handle branch referencesdual
table has different behavior from MySQL, some cause panicsHAVING
can't be executed without GROUPBY
SERIAL
alias unsupportedSHOW TABLE CREATE
PRIMARY KEY
orderingRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.86 | 1.5 |
groupby_scan | 12.3 | 17.01 | 1.4 |
index_join | 1.16 | 4.49 | 3.9 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.26 | 51.94 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.58 | 2.9 |
select_random_points | 0.3 | 0.74 | 2.5 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 183.21 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.07 | 11.24 | 3.7 |
oltp_insert | 1.5 | 2.81 | 1.9 |
oltp_read_write | 5.18 | 17.32 | 3.3 |
oltp_update_index | 1.55 | 5.0 | 3.2 |
oltp_update_non_index | 1.55 | 5.37 | 3.5 |
oltp_write_only | 2.3 | 8.43 | 3.7 |
types_delete_insert | 3.13 | 12.52 | 4.0 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] about 2 years ago
sqle
__DOLT__
and __LD_1__
__DOLT__
. This change updates CI to continue running golang tests and BATS against the old NBF __LD_1__
BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
fix for: https://github.com/dolthub/dolt/issues/4436
COLLATE
had to immediately follow the column type in a column definition. As per the above issue, this is not a required rule in MySQL. The fix involved moving all collation-related options from the column_type
rule to the column_type_options
. This caused a conflict in column_type_options
, as column_default
also has a COLLATE
rule. The conflicting rule resolved to the following:
column_type_options DEFAULT value_expression COLLATE ID
For reference, this is the new COLLATE
rule in column_type_options
:
column_type_options COLLATE ID
Given the MySQL expression DEFAULT "xyz" COLLATE utf8mb4_bin
, it could match either rule, which caused the conflict. value_expression
is too permissive in this context, and although we filter out invalid expressions in GMS, we need to be more restrictive here in the parser to prevent conflicts. In addition, the above example should put the collation on the column, as it is not possible to add a collation to a default string literal (must use the expression form: DEFAULT ("xyz" COLLATE utf8mb4_bin)
).column_default
rule was updated to be vastly more restrictive. This also highlighted some tests in GMS that enforce incorrect behavior, but those have been fixed ahead-of-time, and will be incorporated into the bump PR.utc_timestamp
, utc_date
, etc. as default values without the need for parentheses. This is not allowed in MySQL, so I am unsure as to why we allowed them in the first place. Perhaps because they're similar to CURRENT_TIMESTAMP
, so we just allowed all of them? Regardless, the tests have been removed as they no longer pass (as they should not pass).Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.18 | 4.49 | 3.8 |
index_join_scan | 1.12 | 3.82 | 3.4 |
index_scan | 30.26 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.91 | 8.43 | 2.9 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 186.54 | 2.6 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.71 | 9.22 | 3.4 |
oltp_insert | 1.37 | 2.81 | 2.1 |
oltp_read_write | 5.09 | 16.41 | 3.2 |
oltp_update_index | 1.39 | 4.18 | 3.0 |
oltp_update_non_index | 1.39 | 4.41 | 3.2 |
oltp_write_only | 2.14 | 7.98 | 3.7 |
types_delete_insert | 2.91 | 10.65 | 3.7 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
__DOLT__
the default formatcall dolt_conflicts_resolve()
dolt_conflicts_resolve()
SQL procedureLIKE
and REGEXP_LIKE
__DOLT__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.52 | 17.01 | 1.4 |
index_join | 1.21 | 4.41 | 3.6 |
index_join_scan | 1.16 | 3.75 | 3.2 |
index_scan | 30.26 | 51.94 | 1.7 |
oltp_point_select | 0.15 | 0.48 | 3.2 |
oltp_read_only | 2.97 | 8.43 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 61.08 | 2.0 |
types_table_scan | 69.29 | 179.94 | 2.6 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.02 | 9.73 | 3.2 |
oltp_insert | 1.58 | 2.76 | 1.7 |
oltp_read_write | 5.28 | 16.71 | 3.2 |
oltp_update_index | 1.55 | 4.41 | 2.8 |
oltp_update_non_index | 1.52 | 4.65 | 3.1 |
oltp_write_only | 2.39 | 7.98 | 3.3 |
types_delete_insert | 2.97 | 11.87 | 4.0 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.6 |
---|
__LD_1__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 6.79 | 3.5 |
groupby_scan | 12.3 | 22.69 | 1.8 |
index_join | 1.21 | 16.71 | 13.8 |
index_join_scan | 1.14 | 16.12 | 14.1 |
index_scan | 30.81 | 70.55 | 2.3 |
oltp_point_select | 0.15 | 0.58 | 3.9 |
oltp_read_only | 2.97 | 9.91 | 3.3 |
select_random_points | 0.3 | 1.39 | 4.6 |
select_random_ranges | 0.35 | 1.39 | 4.0 |
table_scan | 30.81 | 66.84 | 2.2 |
types_table_scan | 70.55 | 211.6 | 3.0 |
reads_mean_multiplier | 5.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.36 | 19.65 | 5.8 |
oltp_insert | 1.79 | 8.13 | 4.5 |
oltp_read_write | 5.28 | 37.56 | 7.1 |
oltp_update_index | 1.79 | 9.39 | 5.2 |
oltp_update_non_index | 1.73 | 6.55 | 3.8 |
oltp_write_only | 2.52 | 26.68 | 10.6 |
types_delete_insert | 3.62 | 155.8 | 43.0 |
writes_mean_multiplier | 10.1 |
Overall Mean Multiple | 7.2 |
---|
Published by github-actions[bot] about 2 years ago
USE <database>/<branch>
query or reconnect to the server.FullOuterJoin
, SemiJoin
, and AntiJoin
.FullOuterJoin
uses a union distinct execution operator, which is correct but a lot slower than a merge join-esque operator.SemiJoin
and AntiJoin
rearrange subquery expression scopes. I separate resolve
and finalizeSubqueryExpressions
to perform decorrelation before predicate pushdown (where we were panicking on FixUpExpressions) and join ordering (we want to decorrelate scopes before join planning).COLLATE
had to immediately follow the column type in a column definition. As per the above issue, this is not a required rule in MySQL. The fix involved moving all collation-related options from the column_type
rule to the column_type_options
. This caused a conflict in column_type_options
, as column_default
also has a COLLATE
rule. The conflicting rule resolved to the following:
column_type_options DEFAULT value_expression COLLATE ID
For reference, this is the new COLLATE
rule in column_type_options
:
column_type_options COLLATE ID
Given the MySQL expression DEFAULT "xyz" COLLATE utf8mb4_bin
, it could match either rule, which caused the conflict. value_expression
is too permissive in this context, and although we filter out invalid expressions in GMS, we need to be more restrictive here in the parser to prevent conflicts. In addition, the above example should put the collation on the column, as it is not possible to add a collation to a default string literal (must use the expression form: DEFAULT ("xyz" COLLATE utf8mb4_bin)
).column_default
rule was updated to be vastly more restrictive. This also highlighted some tests in GMS that enforce incorrect behavior, but those have been fixed ahead-of-time, and will be incorporated into the bump PR.utc_timestamp
, utc_date
, etc. as default values without the need for parentheses. This is not allowed in MySQL, so I am unsure as to why we allowed them in the first place. Perhaps because they're similar to CURRENT_TIMESTAMP
, so we just allowed all of them? Regardless, the tests have been removed as they no longer pass (as they should not pass).ROW_FMT
table option, which caused a bats test to failPublished by github-actions[bot] about 2 years ago
dolt_diff()
table function to match dolt_diff_summary()
table function, which matches CLI command argument order.SQL
methods for Point
, LineString
, Polygon
, and Geometry
no longer return the hex formatted string, need to do a little extra work for prettier shell output.@@global.dolt_read_replica_force_pull
, which will turn read replica fetches into force pulls, allowing a read replica to true-up with a remote which has experienced a force push.dolt_diff_summary
table function is the same as CLI dolt diff --summary
command. It takes fromCommit, toCommit and tableName, which is optional.qualifyExpression
method so that the containing node can be used to switch on different alias visibility rulesFullOuterJoin
, SemiJoin
, and AntiJoin
.FullOuterJoin
uses a union distinct execution operator, which is correct but a lot slower than a merge join-esque operator.SemiJoin
and AntiJoin
rearrange subquery expression scopes. I separate resolve
and finalizeSubqueryExpressions
to perform decorrelation before predicate pushdown (where we were panicking on FixUpExpressions) and join ordering (we want to decorrelate scopes before join planning).SQL
method must return them in binaryalter column set default
error when its default expression fails the default expression rules. Previously the DDL succeeded and when an insert or any other query was performed the default would cause a continuous error.
alter table t alter column col1 set default '{\"bye\":1}'
-- errors with: TEXT, BLOB, GEOMETRY, and JSON types may only have expression default values
(number_of_fks)¹⁵ × 1.5
nodes in the tree. With just 3 foreign keys, we'd get a tree with roughly 22 million nodes, which would take forever to process.timestamp_test.go
file to grab an unused port. This prevents test failures due to requesting an already-in-use port. Not related to this PR in particular, but it was annoying to deal with so I fixed it.ROW_FMT
table option, which caused a bats test to failPARTITION
syntax for table creationtable_options
for statements like CREATE TABLE (column_definitions) table_options
better matches MySQLpartition_options
based off of https://dev.mysql.com/doc/refman/8.0/en/create-table.htmlreserved_sql_id
and only included sql_id
because I didn't think reserved keywords should be allowed as identifiers in insert into columns without being quoted, but it appears we have tests in Dolt that rely on that (e.g. sql-diff.bats calls: INSERT INTO test (pk, int, string, boolean, float, uint, uuid) values ...
) and I figured if we can support those without the quoting, it seems like a nice feature for customers, so I switched back to reserved_sql_id
.DROP DATABASE
when called on a database that initialized the sql-server-
in itDOLT_DIFF_SUMMARY
table functiondolt diff --summary
with cell-wise statisticssql_select_limit
should not apply to subqueriesdolt fetch upstream main
fails on VPS with 1GB RAM__LD_1__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 6.43 | 3.3 |
groupby_scan | 12.52 | 21.89 | 1.7 |
index_join | 1.18 | 16.41 | 13.9 |
index_join_scan | 1.14 | 15.55 | 13.6 |
index_scan | 30.26 | 71.83 | 2.4 |
oltp_point_select | 0.15 | 0.57 | 3.8 |
oltp_read_only | 2.97 | 9.56 | 3.2 |
select_random_points | 0.3 | 1.37 | 4.6 |
select_random_ranges | 0.35 | 1.37 | 3.9 |
table_scan | 30.81 | 68.05 | 2.2 |
types_table_scan | 68.05 | 215.44 | 3.2 |
reads_mean_multiplier | 5.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.76 | 19.65 | 7.1 |
oltp_insert | 1.61 | 7.98 | 5.0 |
oltp_read_write | 5.18 | 36.89 | 7.1 |
oltp_update_index | 1.52 | 9.39 | 6.2 |
oltp_update_non_index | 1.58 | 6.43 | 4.1 |
oltp_write_only | 2.43 | 26.2 | 10.8 |
types_delete_insert | 2.91 | 155.8 | 53.5 |
writes_mean_multiplier | 11.9 |
Overall Mean Multiple | 7.9 |
---|
__DOLT__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.52 | 17.32 | 1.4 |
index_join | 1.18 | 4.49 | 3.8 |
index_join_scan | 1.14 | 3.82 | 3.4 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.43 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.35 | 1.14 | 3.3 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 71.83 | 183.21 | 2.6 |
reads_mean_multiplier | 2.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.02 | 9.56 | 3.2 |
oltp_insert | 1.58 | 2.81 | 1.8 |
oltp_read_write | 5.18 | 16.71 | 3.2 |
oltp_update_index | 1.52 | 4.33 | 2.8 |
oltp_update_non_index | 1.47 | 4.65 | 3.2 |
oltp_write_only | 2.3 | 7.98 | 3.5 |
types_delete_insert | 3.07 | 10.84 | 3.5 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.6 |
---|
Published by github-actions[bot] about 2 years ago
UNIQUE KEY
s overlapping with primary keyssplitDiffResultRow
where a key existence is not being checked in a map. Specifically, ds.fromTo[i]]
defaulted to 0
(the zero value for int
) in the case where i
did not exist as a key in ds.fromTo
.types_table_scan
from 425 ms/q
-> 134 ms/q
, ~70% faster. The nightly benchmark should be around 2.5 (from 7.9).dolt commit
and CALL DOLT_COMMIT
-A
adds all tables (including new tables) to the staged set before committing.TempTableFilesDir()
return err if .dolt
is not found.dolt
dir is removed during runinng sql-server. Any connections will fail and it will cause the server to stop.JSON_TABLES
, due to abiguous ORDER BY
(number_of_fks)¹⁵ × 1.5
nodes in the tree. With just 3 foreign keys, we'd get a tree with roughly 22 million nodes, which would take forever to process.timestamp_test.go
file to grab an unused port. This prevents test failures due to requesting an already-in-use port. Not related to this PR in particular, but it was annoying to deal with so I fixed it.expr
argument to json_table
, the column must be part of a CROSS JOIN
and has to be on the left side of a cross join (reference). Oddly, you cannot reference the column directly nor through a subquery (stackoverflow reference).JSONTable
for when its under a Join and subquery expressiondolt diff
and dropped columnsdolt_diff_*
tables can't handle dropped columns from the tables they describe.-A
option to dolt commit
to add all new and modified tablesLIKE
and REGEXP_LIKE
__LD_1__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 6.55 | 3.3 |
groupby_scan | 12.52 | 22.69 | 1.8 |
index_join | 1.18 | 16.71 | 14.2 |
index_join_scan | 1.12 | 16.12 | 14.4 |
index_scan | 30.26 | 73.13 | 2.4 |
oltp_point_select | 0.15 | 0.57 | 3.8 |
oltp_read_only | 3.02 | 9.56 | 3.2 |
select_random_points | 0.31 | 1.39 | 4.5 |
select_random_ranges | 0.36 | 1.37 | 3.8 |
table_scan | 30.81 | 69.29 | 2.2 |
types_table_scan | 69.29 | 223.34 | 3.2 |
reads_mean_multiplier | 5.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.81 | 19.65 | 7.0 |
oltp_insert | 1.55 | 7.98 | 5.1 |
oltp_read_write | 5.28 | 36.89 | 7.0 |
oltp_update_index | 1.58 | 9.39 | 5.9 |
oltp_update_non_index | 1.47 | 6.55 | 4.5 |
oltp_write_only | 2.39 | 26.2 | 11.0 |
types_delete_insert | 2.91 | 155.8 | 53.5 |
writes_mean_multiplier | 11.9 |
Overall Mean Multiple | 8.0 |
---|
__DOLT__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.76 | 1.4 |
groupby_scan | 12.08 | 17.32 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.89 | 3.5 |
index_scan | 30.26 | 53.85 | 1.8 |
oltp_point_select | 0.15 | 0.46 | 3.1 |
oltp_read_only | 2.91 | 8.28 | 2.8 |
select_random_points | 0.3 | 0.74 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 69.29 | 193.38 | 2.8 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.02 | 10.84 | 3.6 |
oltp_insert | 1.58 | 2.81 | 1.8 |
oltp_read_write | 5.18 | 16.71 | 3.2 |
oltp_update_index | 1.61 | 4.91 | 3.0 |
oltp_update_non_index | 1.55 | 5.18 | 3.3 |
oltp_write_only | 2.3 | 8.28 | 3.6 |
types_delete_insert | 3.13 | 12.08 | 3.9 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] about 2 years ago
dolt sql-server
gets a new configuration option, --remotesapi-port
, which if supplied will cause the sql-server process to run a remotesapi service. The service will expose the databases in the sql-server for access as a dolt remote from a dolt CLI or sql-server process.go/utils/remotesrv
:
go/utils/remotesrv
now logs with logrusgo/utils/remotesrv
can serve gRPC and HTTP traffic over the same port.go/utils/remotesrv
gRPC service, when generating file server URLs, will echo the request's :authority
header as the hostname component of the host URL component if -http-host
is not supplied. This changes the old default, which was localhost
.dolt clone
, dolt push
, dolt pull
.unix_timestamp(<expr>)
to return 0 when it can't convert expr
to a dateunix_timestamp(<expr>)
returns 0
when the expression can't be converted to a date and logs a warning. This PR changes Dolt to have the same behavior. It also includes a bug fix for ctx.ClearWarnings
to correctly clear warnings.
mysql> select unix_timestamp(1577995200);
+----------------------------+
| unix_timestamp(1577995200) |
+----------------------------+
| 0 |
+----------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> select unix_timestamp("jason");
+-------------------------+
| unix_timestamp("jason") |
+-------------------------+
| 0.000000 |
+-------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+-----------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------+
| Warning | 1292 | Incorrect datetime value: 'jason' |
+---------+------+-----------------------------------+
1 row in set (0.00 sec)
LIKE
expressions into patterns that the standard regex parser would understand. Said parser does not support collations (as implemented in MySQL), therefore this is a custom-developed pattern matcher for LIKE
expressions that fully supports collations.LIKE
expression. We still need to implement full regex parsing to support REGEXP_LIKE
.. Once we have REGEXP_LIKE
completed, we may revert this back to the regex conversion process, but that will be no time soon.decimal.Decimal
type is hard to get the exact matching using its convert method, so result is checked in string format by using StringFixed()
method of the decimal.Decimal result value.reserved_sql_id
and only included sql_id
because I didn't think reserved keywords should be allowed as identifiers in insert into columns without being quoted, but it appears we have tests in Dolt that rely on that (e.g. sql-diff.bats calls: INSERT INTO test (pk, int, string, boolean, float, uint, uuid) values ...
) and I figured if we can support those without the quoting, it seems like a nice feature for customers, so I switched back to reserved_sql_id
.insert into
statementsinsert into t(pk, comment) values (1, 1)
. Comment is a keyword, but not a reserved keyword, so this is valid syntax, but our parser was failing on it.column_name_safe_reserved_keyword
to column_name_safe_keyword
, since the contents are keywords, but are not "reserved" keywords that need to be backtick quotedins_column_list
rule)avg
,count
,sum
,min
,max
from lists of reserved keywords, since they are not reserved in MySQL and can parse correctly in tests without being backtick quoted.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 6.55 | 3.4 |
groupby_scan | 12.3 | 22.28 | 1.8 |
index_join | 1.18 | 17.01 | 14.4 |
index_join_scan | 1.14 | 16.12 | 14.1 |
index_scan | 30.26 | 73.13 | 2.4 |
oltp_point_select | 0.15 | 0.57 | 3.8 |
oltp_read_only | 2.91 | 9.56 | 3.3 |
select_random_points | 0.3 | 1.37 | 4.6 |
select_random_ranges | 0.35 | 1.37 | 3.9 |
table_scan | 30.81 | 70.55 | 2.3 |
types_table_scan | 69.29 | 601.29 | 8.7 |
reads_mean_multiplier | 5.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.91 | 19.65 | 6.8 |
oltp_insert | 1.47 | 7.98 | 5.4 |
oltp_read_write | 5.09 | 36.89 | 7.2 |
oltp_update_index | 1.47 | 9.39 | 6.4 |
oltp_update_non_index | 1.44 | 6.55 | 4.5 |
oltp_write_only | 2.3 | 26.2 | 11.4 |
types_delete_insert | 2.97 | 155.8 | 52.5 |
writes_mean_multiplier | 11.9 |
Overall Mean Multiple | 8.3 |
---|
__DOLT__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.0 | 2.76 | 1.4 |
groupby_scan | 12.52 | 17.32 | 1.4 |
index_join | 1.18 | 4.57 | 3.9 |
index_join_scan | 1.16 | 3.96 | 3.4 |
index_scan | 30.26 | 54.83 | 1.8 |
oltp_point_select | 0.15 | 0.47 | 3.1 |
oltp_read_only | 2.97 | 8.28 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 64.47 | 2.1 |
types_table_scan | 70.55 | 569.67 | 8.1 |
reads_mean_multiplier | 3.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.55 | 11.65 | 3.3 |
oltp_insert | 1.58 | 2.81 | 1.8 |
oltp_read_write | 5.18 | 17.01 | 3.3 |
oltp_update_index | 1.58 | 5.18 | 3.3 |
oltp_update_non_index | 1.58 | 5.47 | 3.5 |
oltp_write_only | 2.43 | 8.28 | 3.4 |
types_delete_insert | 3.36 | 12.75 | 3.8 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 3.0 |
---|
Published by github-actions[bot] about 2 years ago
message.ItemAccess
, tree.Node
message.ItemAccess
(previously ItemArray
) to decrease memory footprint from 48 bytes to 10.tree.Node
to decrease memory footprint from 152 bytes to 56tree.nodeCache
now caches tree.Node
instead of chunks.Chunk
. This eliminates decode time for cache hits.tree.nodeCache
to improved access latency.-http-port
and -grpc-port
can be the same, in which case there is only one listener and both gRPC and file server traffic are served over the same port.:authority
header, with the supplied -http-port
, if no -http-host
is supplied. Changes the default behavior of remotesrv
to be that, rather than generating URLs with an authority component containing localhost
as the hostname.numberTypeImpl.SQL()
to convert from any typenumberTypeImpl
expects v
to already be the right type for the baseType
, this is not always the case.CASE
statements have an error guard for this behavior, which shouldn't be there.SQL()
methods that don't work for all types.LIKE
expressions into patterns that the standard regex parser would understand. Said parser does not support collations (as implemented in MySQL), therefore this is a custom-developed pattern matcher for LIKE
expressions that fully supports collations.LIKE
expression. We still need to implement full regex parsing to support REGEXP_LIKE
.. Once we have REGEXP_LIKE
completed, we may revert this back to the regex conversion process, but that will be no time soon.UpdateJoin
bug fixes--user
and --password
sql-server
args even if their is a config.yaml
IF()
function__LD_1__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 6.55 | 3.3 |
groupby_scan | 12.3 | 22.28 | 1.8 |
index_join | 1.16 | 16.71 | 14.4 |
index_join_scan | 1.12 | 16.12 | 14.4 |
index_scan | 30.81 | 71.83 | 2.3 |
oltp_point_select | 0.15 | 0.57 | 3.8 |
oltp_read_only | 2.97 | 9.56 | 3.2 |
select_random_points | 0.3 | 1.37 | 4.6 |
select_random_ranges | 0.35 | 1.37 | 3.9 |
table_scan | 31.37 | 68.05 | 2.2 |
types_table_scan | 69.29 | 612.21 | 8.8 |
reads_mean_multiplier | 5.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.13 | 19.65 | 6.3 |
oltp_insert | 1.67 | 7.98 | 4.8 |
oltp_read_write | 5.37 | 36.24 | 6.7 |
oltp_update_index | 1.73 | 9.22 | 5.3 |
oltp_update_non_index | 1.73 | 6.43 | 3.7 |
oltp_write_only | 2.43 | 26.2 | 10.8 |
types_delete_insert | 3.25 | 155.8 | 47.9 |
writes_mean_multiplier | 10.8 |
Overall Mean Multiple | 7.9 |
---|
__DOLT__
)Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.08 | 16.71 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.96 | 3.5 |
index_scan | 30.81 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.46 | 3.1 |
oltp_read_only | 2.97 | 8.28 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.36 | 1.12 | 3.1 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 70.55 | 580.02 | 8.2 |
reads_mean_multiplier | 3.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.48 | 11.24 | 4.5 |
oltp_insert | 1.34 | 2.76 | 2.1 |
oltp_read_write | 5.0 | 17.01 | 3.4 |
oltp_update_index | 1.27 | 5.09 | 4.0 |
oltp_update_non_index | 1.23 | 5.28 | 4.3 |
oltp_write_only | 2.07 | 8.28 | 4.0 |
types_delete_insert | 2.81 | 13.46 | 4.8 |
writes_mean_multiplier | 3.5 |
Overall Mean Multiple | 3.2 |
---|
Published by github-actions[bot] about 2 years ago
--author
flag to merge--skinny
flag to dolt diff
, which only shows primary keys and columns with changes.writeDiffResults
has been split into 2 functions - writeFilteredRows
and getDiffRows
. The former is responsible for printing the rows, while the latter function collects the relevant columns, depending on if the --skinny
flag is active.--skinny
flag is active.UpdateJoin
bug fixesLEAD()
window functionIF()
functiondolt diff --skinny
: Only show primary keys and columns with changes. Hide other columns.CALL DOLT_CHECKOUT()
on an existing branch give "branch already exists" errordolt_diff_<table>
only works if to_commit
is in your current branchdolt_merge
procedurePublished by github-actions[bot] about 2 years ago
LEAD()
window functionLAST_VALUE()
window function