Bot releases are visible (Hide)
Published by github-actions[bot] almost 2 years ago
prepared
, execute
, and deallocate
information_schema.columns
tableinformation_schema
database and its tables accessible to all users.as of <identifer>
STATISTICS
and COLUMNS
info schema tables
sub_part
for STATISTICS
table.column_default
, datetime_precision
, extra
and other columns for COLUMNS
table.cardinality
column for STATISTICS
table as it's not supported in Dolt yet.privileges
column for COLUMNS
table for now. (in progress)FunctionName()
method to create the string statement of the function itself. The FunctionName()
method returns the name of the function in all lower cases. This makes it so that all Dolt supported MySQL functions are consistent to what MySQL returns for queries such as SHOW CREATE TABLE
or the column_default
of information_schema.COLUMNS
table.BOOL
and TINYINT
data types the same with INT8
, but MySQL explicitly defines BOOL
as tinyint(1)
, which is different from tinyint
for TINYINT
data types.COLUMNS
table yet.GROUP BY
is not collation aware when grouping!GROUP BY
statement that includes a textual column, the column's collation needs to be taken into account when creating the aggregation groups.CREATE TABLE test (id bigint, title varchar(255) collate utf8mb4_0900_ai_ci, PRIMARY KEY(id));
INSERT INTO `test` (title) VALUES ('val1'), ('VAL1'), ('val2'), ('VAL2')
SELECT COUNT(*) FROM test GROUP BY title
We should expect the result of the SELECT
to contain two rows, as there are only two groups when grouping by title. Even though we've inserted 4 unique values, the utf8mb4_0900_ai_ci
with which the column is collated is case insensitive, so in practice, 'val1' = 'VAL1'
and 'val2' = 'VAL2'
when grouping. This is not the current behavior.collations.go
so that we can write the weight string directly into the grouping key's hasher and continue using the same code for the existing HashUint
API.select ab.* from ab join pq on a = p where b = (select y from xy where y in (select v from uv where v = b)) order by a;
The join and two scopes appear necessary to trigger the original bug. The join's children will be unresolved when we index the inner scopes, whereas a single relation scope's child will be a resolved table. The two scopes provide a gap for determining cachability in the middle scope while the child scope still had a deferredColumn
, which previously permitted caching.PREPARE
, EXECUTE
, and DEALLOCATE
DATETIME
and TIMESTAMP
TRUNCATE
with foreign keys doesn't always workdelimiter
statement without requiring query terminatorerror reading from or writing to noms: new manifest created with non 0 lock
when running dolt in docker.call dolt_backup()
doesn't work if called on a sql-server started in a parent directory.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.91 | 1.4 |
groupby_scan | 12.98 | 17.95 | 1.4 |
index_join | 1.27 | 5.0 | 3.9 |
index_join_scan | 1.21 | 4.25 | 3.5 |
index_scan | 32.53 | 58.92 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.13 | 9.22 | 2.9 |
select_random_points | 0.32 | 0.84 | 2.6 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 33.12 | 68.05 | 2.1 |
types_table_scan | 74.46 | 204.11 | 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 | 11.24 | 4.1 |
oltp_insert | 1.37 | 3.07 | 2.2 |
oltp_read_write | 5.37 | 18.61 | 3.5 |
oltp_update_index | 1.44 | 5.18 | 3.6 |
oltp_update_non_index | 1.42 | 5.57 | 3.9 |
oltp_write_only | 2.26 | 9.06 | 4.0 |
types_delete_insert | 2.91 | 12.08 | 4.2 |
writes_mean_multiplier | 3.3 |
Overall Mean Multiple | 2.9 |
---|
Published by github-actions[bot] almost 2 years ago
In numeric contexts, MySQL treats a hexadecimal literal like a BIGINT UNSIGNED (64-bit unsigned integer).
AssertErrPrepared
, which allowed many tests to incorrectly pass.validateUnionSchemasMatch
is still never run for prepared queries).TestSingleScriptPrepared
to more easily debug prepared script testsnull
unitcreate database
/alter database
:
to parse resulted in the changes you see in token.go
. There may be a better way to go about it, but I don't want to spend more time on it since this appears to work.error reading from or writing to noms: new manifest created with non 0 lock
when running dolt in docker.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.97 | 1.5 |
groupby_scan | 13.22 | 17.95 | 1.4 |
index_join | 1.27 | 4.91 | 3.9 |
index_join_scan | 1.21 | 4.18 | 3.5 |
index_scan | 33.12 | 59.99 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.13 | 9.39 | 3.0 |
select_random_points | 0.31 | 0.83 | 2.7 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 33.12 | 66.84 | 2.0 |
types_table_scan | 75.82 | 200.47 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.19 | 10.84 | 3.4 |
oltp_insert | 1.52 | 3.07 | 2.0 |
oltp_read_write | 5.37 | 17.95 | 3.3 |
oltp_update_index | 1.52 | 4.91 | 3.2 |
oltp_update_non_index | 1.52 | 5.18 | 3.4 |
oltp_write_only | 2.35 | 8.74 | 3.7 |
types_delete_insert | 3.25 | 10.84 | 3.3 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
filter-branch --all
now rewrites tags, added --branches
flag+-------------------------------------+-----------+----------+-------+
| name | mean_mult | med_mult | stdd |
+-------------------------------------+-----------+----------+-------+
| dolt_commit_ancestors_commit_filter | 6.89 | 7.65 | 0.377 |
| dolt_commits_commit_filter | 6.08 | 6.74 | 0.311 |
| dolt_diff_log_join_on_commit | 1.39 | 1.36 | 5.834 |
| dolt_diff_table_commit_filter | 37.77 | 40.8 | 1.756 |
| dolt_diffs_commit_filter | 25.8 | 29.53 | 0.738 |
| dolt_history_commit_filter | 25.52 | 27.95 | 0.799 |
| dolt_log_commit_filter | 4.64 | 5.14 | 0.401 |
+-------------------------------------+-----------+----------+-------+
-f
flag, in which case the two working sets are combined (as is the current behavior).Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.91 | 1.4 |
groupby_scan | 12.98 | 18.28 | 1.4 |
index_join | 1.25 | 5.0 | 4.0 |
index_join_scan | 1.21 | 4.25 | 3.5 |
index_scan | 32.53 | 61.08 | 1.9 |
oltp_point_select | 0.16 | 0.54 | 3.4 |
oltp_read_only | 3.13 | 9.39 | 3.0 |
select_random_points | 0.32 | 0.84 | 2.6 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 33.12 | 66.84 | 2.0 |
types_table_scan | 75.82 | 207.82 | 2.7 |
reads_mean_multiplier | 2.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.3 | 11.24 | 3.4 |
oltp_insert | 1.64 | 3.13 | 1.9 |
oltp_read_write | 5.57 | 18.28 | 3.3 |
oltp_update_index | 1.73 | 5.37 | 3.1 |
oltp_update_non_index | 1.67 | 5.88 | 3.5 |
oltp_write_only | 2.48 | 8.74 | 3.5 |
types_delete_insert | 3.43 | 12.3 | 3.6 |
writes_mean_multiplier | 2.9 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
information_schema
tables' schemas.finalizeSubquery
, not in resolveSubquery
. Otherwise we will push a filter with a GetField index that could be rearranged when the parent scope is finalized.CrossJoin
scope visibility and disposing mem caches for IndexedInSubqueryFilter
crossJoinIter
was the only join iterator that wasn't taking in a parentRow
with outer scope values and passing that row prefix to its children. There's some low-hanging fruit to refactor the joinIter
s to reduce duplication, but it didn't seem high priority, so I stopped short of that. Fixes: https://github.com/dolthub/dolt/issues/4926IndexedInSubqueryFilter
and included that fix here. There were also some dispose
member and Dispose
functions in the join iterators that I verified were not used anywhere, so I pulled those out to tidy up.> select y, (select 1 where y = 1) is_one
from xy join uv on x = v
order by y;
+---+--------+
| y | is_one |
+---+--------+
| 0 | 1 |
| 0 | 1 |
| 1 | NULL |
| 1 | NULL |
+---+--------+
We select the correct field now when the subquery is finalized after the parent scope is fixed:
> select y, (select 1 where y = 1) is_one
from xy join uv on x = v
order by y;
+---+--------+
| y | is_one |
+---+--------+
| 0 | NULL |
| 0 | NULL |
| 1 | 1 |
| 1 | 1 |
+---+--------+
:
to parse resulted in the changes you see in token.go
. There may be a better way to go about it, but I don't want to spend more time on it since this appears to work.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.91 | 1.4 |
groupby_scan | 12.98 | 17.95 | 1.4 |
index_join | 1.27 | 4.91 | 3.9 |
index_join_scan | 1.21 | 4.18 | 3.5 |
index_scan | 32.53 | 59.99 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.13 | 9.39 | 3.0 |
select_random_points | 0.32 | 0.83 | 2.6 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 32.53 | 66.84 | 2.1 |
types_table_scan | 74.46 | 207.82 | 2.8 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.97 | 11.04 | 3.7 |
oltp_insert | 1.42 | 3.07 | 2.2 |
oltp_read_write | 5.47 | 17.63 | 3.2 |
oltp_update_index | 1.52 | 4.91 | 3.2 |
oltp_update_non_index | 1.47 | 5.28 | 3.6 |
oltp_write_only | 2.35 | 8.74 | 3.7 |
types_delete_insert | 3.07 | 11.24 | 3.7 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
--datasets
flag to dolt branch
to list all dat…push.autoSetupRemote
config variableGetGCKeepers
> select y, (select 1 where y = 1) is_one
from xy join uv on x = v
order by y;
+---+--------+
| y | is_one |
+---+--------+
| 0 | 1 |
| 0 | 1 |
| 1 | NULL |
| 1 | NULL |
+---+--------+
We select the correct field now when the subquery is finalized after the parent scope is fixed:
> select y, (select 1 where y = 1) is_one
from xy join uv on x = v
order by y;
+---+--------+
| y | is_one |
+---+--------+
| 0 | NULL |
| 0 | NULL |
| 1 | 1 |
| 1 | 1 |
+---+--------+
LIKE
expressions to take advantage of indexesLIKE
expressions over string columns should take advantage of prefix indexes.select 2000.0 / 250000000.0 * (24.0 * 6.0 * 6.25 * 10.0);
is fixed, but the decimal scale is incorrect (made issue for it)insert.Source
is a *plan.With
.DECLARE
variables and cursors. I implemented nesting support by giving all variables a procedure-unique ID, with the scope determining which ID is resolved. A flat slice of IDs are far simpler to track than a proper tree structure.RowIter
reads the current state of the table, rather than the state that the RowIter
generated with.any_value()
and option to enforce strict group by@@sql_mode
called ONLY_FULL_GROUP_BY
, which makes it so select statements over group by must contain columns that are part of the group by. Before, dolt was always strict about group by selects, now (to match MySQL) we are not strict by default.any_value()
which bypasses the ONLY_FULL_GROUP_BY
if it is set.GetGlobalVariable
and GetSessionVariable
to convert sql.SetTypes
to strings.any_value
on duplicate key
clause missing visibility into tables in subqueries and ctesRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.91 | 1.4 |
groupby_scan | 12.75 | 18.28 | 1.4 |
index_join | 1.25 | 5.0 | 4.0 |
index_join_scan | 1.21 | 4.25 | 3.5 |
index_scan | 32.53 | 59.99 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.07 | 9.22 | 3.0 |
select_random_points | 0.32 | 0.84 | 2.6 |
select_random_ranges | 0.37 | 1.23 | 3.3 |
table_scan | 32.53 | 66.84 | 2.1 |
types_table_scan | 75.82 | 204.11 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.13 | 10.84 | 3.5 |
oltp_insert | 1.52 | 3.07 | 2.0 |
oltp_read_write | 5.67 | 18.28 | 3.2 |
oltp_update_index | 1.7 | 5.0 | 2.9 |
oltp_update_non_index | 1.7 | 5.18 | 3.0 |
oltp_write_only | 2.57 | 8.74 | 3.4 |
types_delete_insert | 3.36 | 11.04 | 3.3 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] almost 2 years ago
conjoiner
to conjoinStrategy
which is now only responsible for deciding when to conjoin and which tableSpecs
to conjoin. A common implementation of conjoin()
is used in all casesgetRecordRanges(requests []getRecord)
to the chunkSource
interface, rather than asserting past the interface in NomsBlockStore.GetChunkLocations
dolt_conflict_id
column. The column is a hash of the primary keys for a keyed table (or the value hash of the row for a keyless table) and the from_root_ish
column. The dolt_conflict_id
column uniquely identifies a conflict.dolt sql -q "select * from dolt_conflicts_t;"
+----------------------------------+---------+-----------+--------+----------+---------------+----------+------------+-----------------+------------------------+
| from_root_ish | base_pk | base_col1 | our_pk | our_col1 | our_diff_type | their_pk | their_col1 | their_diff_type | dolt_conflict_id |
+----------------------------------+---------+-----------+--------+----------+---------------+----------+------------+-----------------+------------------------+
| b6qeivhltgrm2la9057uis84eav5n2rl | 1 | NULL | 1 | -100 | modified | 1 | 100 | modified | +Z9y2YEvo0d1ZupbzGiyrQ |
+----------------------------------+---------+-----------+--------+----------+---------------+----------+------------+-----------------+------------------------+
dolt table export
was previously appending "Successfully exported data." to the end of the csv file when using the redirect syntax (e.g. dolt table export hospitals > hospitals.csv
). The success message didn't get appended when redirect syntax wasn't used (e.g. dolt table export hospitals hospitals.csv
). This fix makes it so that both formats work as expected.TestJoinQueriesPrepared
in DoltTestJoinQueriesPrepared
enginetest function.--messageTest
where Test
is taken as the value for the --message
param).--
flags).SHOW DATABASES
TestJoinQueriesPrepared
in GMSTestJoinQueriesPrepared
enginetest function and unskipping a few join tests that are working now.information_schema.columns.dataType
and information_schema.columns.colType
dataType
column in the information_schema.columns
table didn't match MySQL when there were columns that had collations. dBeaver reads in metadata from information_schema.columns
, and when there was an error, it threw an error saying that the table was read-only.resolveInsert
rule before resolveColumns
, and adds fixes for a richer post-analyze insert Source while resolving the root insert scope.NULL
instead of errors, and throw warningstime()
CURSOR
support.show databases
information_schema.columns.dataType
which Dolt sets incorrectly when there are collationsdolt table export
prints Successfully exported data.
to STDOUT, should be STDERRTEXT
and BLOB
column typesdolt reset --hard
DECIMAL
value in union
query loses precision and scale informationRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.86 | 1.4 |
groupby_scan | 13.22 | 17.95 | 1.4 |
index_join | 1.25 | 5.0 | 4.0 |
index_join_scan | 1.18 | 4.25 | 3.6 |
index_scan | 32.53 | 59.99 | 1.8 |
oltp_point_select | 0.16 | 0.52 | 3.2 |
oltp_read_only | 3.19 | 9.56 | 3.0 |
select_random_points | 0.32 | 0.83 | 2.6 |
select_random_ranges | 0.37 | 1.21 | 3.3 |
table_scan | 33.12 | 66.84 | 2.0 |
types_table_scan | 74.46 | 204.11 | 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.44 | 3.07 | 2.1 |
oltp_read_write | 5.47 | 17.95 | 3.3 |
oltp_update_index | 1.55 | 4.91 | 3.2 |
oltp_update_non_index | 1.52 | 5.18 | 3.4 |
oltp_write_only | 2.35 | 8.74 | 3.7 |
types_delete_insert | 3.13 | 11.24 | 3.6 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
our_
can now be updated on the dolt_conflicts_$tbl_name
tables. Updates on the our columns get translated to updates on the conflict source table.chunkJournal
, a log-based ChunkStore
that integrates into current NomsBlockStore
machinery. chunkJournal
implements tablePersister
and manifest
. When memtable
s are passed to Persist()
, their contents appended to the journal file at current offset and a journalChunkSource
(implementing chunkSource) is returned. journalChunkSource is an in-memory object containing offset metadata for reading back chunks from the journal file. The chunkJournal also persists root hash updates to the log via the manifest interface. This PR is adapted from #4803, instead of returning a unique journalChunkSource
on each Persist()
call, a single chunk source is returned repeatedly. The tableSet
naturally deduplicates these chunkSource
references by storing them in a chunkSourceSet
(#4860).CURSOR
support.EXPLAIN EXTENDED
, since it does the same thing as normal EXPLAIN
EXPLAIN
, DESCRIBE
, and DESC
are all interchangable, so we should be able to EXPLAIN tbl
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.91 | 1.4 |
groupby_scan | 12.75 | 17.95 | 1.4 |
index_join | 1.25 | 5.0 | 4.0 |
index_join_scan | 1.21 | 4.25 | 3.5 |
index_scan | 31.94 | 56.84 | 1.8 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.13 | 9.56 | 3.1 |
select_random_points | 0.32 | 0.83 | 2.6 |
select_random_ranges | 0.38 | 1.21 | 3.2 |
table_scan | 32.53 | 65.65 | 2.0 |
types_table_scan | 73.13 | 200.47 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.81 | 12.08 | 4.3 |
oltp_insert | 1.55 | 3.13 | 2.0 |
oltp_read_write | 5.47 | 18.61 | 3.4 |
oltp_update_index | 1.52 | 5.88 | 3.9 |
oltp_update_non_index | 1.47 | 6.32 | 4.3 |
oltp_write_only | 2.35 | 8.9 | 3.8 |
types_delete_insert | 2.91 | 13.7 | 4.7 |
writes_mean_multiplier | 3.4 |
Overall Mean Multiple | 3.0 |
---|
Published by github-actions[bot] almost 2 years ago
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.97 | 1.4 |
groupby_scan | 12.98 | 18.28 | 1.4 |
index_join | 1.27 | 5.0 | 3.9 |
index_join_scan | 1.21 | 4.25 | 3.5 |
index_scan | 32.53 | 59.99 | 1.8 |
oltp_point_select | 0.16 | 0.54 | 3.4 |
oltp_read_only | 3.13 | 9.91 | 3.2 |
select_random_points | 0.32 | 0.83 | 2.6 |
select_random_ranges | 0.37 | 1.27 | 3.4 |
table_scan | 33.12 | 66.84 | 2.0 |
types_table_scan | 74.46 | 204.11 | 2.7 |
reads_mean_multiplier | 2.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.36 | 10.65 | 3.2 |
oltp_insert | 1.55 | 3.07 | 2.0 |
oltp_read_write | 5.47 | 18.61 | 3.4 |
oltp_update_index | 1.61 | 5.0 | 3.1 |
oltp_update_non_index | 1.55 | 5.18 | 3.3 |
oltp_write_only | 2.52 | 8.74 | 3.5 |
types_delete_insert | 3.55 | 10.84 | 3.1 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] almost 2 years ago
loglevel
param to be case insensitive.loglevel
CLI param and log_level
YAML config key to be case insensitive.dawidd6/action-send-mail@v2
actionSIGTERM
from docker stop
datas.Database
dolt_gc
procedure that runs shallow online garbage collection (prunes unused table files). A more complete online garbage collection is coming soonuptime
relExpr
s in exprGroup
s and changes the finalizeSubqueries
analyzer rule so that it only runs once on each subquery, from the bottom of the plan tree, up.EXPLAIN EXTENDED
, since it does the same thing as normal EXPLAIN
EXPLAIN
, DESCRIBE
, and DESC
are all interchangable, so we should be able to EXPLAIN tbl
call mydb.test();
exceeded max analysis iterations (8)
EXPLAIN EXTENDED
Published by github-actions[bot] almost 2 years ago
/docker-entrypoint-initdb.d
they will have an error:2022-11-21 11:02:13+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
/usr/local/bin/docker-entrypoint.sh: line 98: docker_process_sql: command not found
This PR fixes it-- after
BenchmarkBlobBuilder/datasize:_3
BenchmarkBlobBuilder/datasize:_3-12 234128 5673 ns/op 2608 B/op 8 allocs/op
BenchmarkBlobBuilder/datasize:_4
BenchmarkBlobBuilder/datasize:_4-12 26074 41468 ns/op 17560 B/op 24 allocs/op
BenchmarkBlobBuilder/datasize:_5
BenchmarkBlobBuilder/datasize:_5-12 2737 378950 ns/op 133004 B/op 134 allocs/op
BenchmarkBlobBuilder/datasize:_6
BenchmarkBlobBuilder/datasize:_6-12 282 3974650 ns/op 1288281 B/op 1269 allocs/op
-- before
BenchmarkBlobBuilder
BenchmarkBlobBuilder/datasize:_3
BenchmarkBlobBuilder/datasize:_3-12 15231 75445 ns/op 460464 B/op 17 allocs/op
BenchmarkBlobBuilder/datasize:_4
BenchmarkBlobBuilder/datasize:_4-12 6844 171266 ns/op 923121 B/op 50 allocs/op
BenchmarkBlobBuilder/datasize:_5
BenchmarkBlobBuilder/datasize:_5-12 1875 549793 ns/op 1040770 B/op 270 allocs/op
BenchmarkBlobBuilder/datasize:_6
BenchmarkBlobBuilder/datasize:_6-12 273 4389403 ns/op 2668899 B/op 2543 allocs/op
doc_text
column to longtext
date_add()
and date_sub()
are warningsTIME()
and sql.Time
type in a separate PR.information_schema.column_statistics
show status
... limit 0, 200
in TopN plan, arithmetic was returning decimal type because 200
was handled asuint8
and 0
was int8
types, so if the both the values are any non-matching int type, the values are converted to int64
for +
and -
operations.call mydb.test();
dolt log
as of
queries fail in StarRocksdoc_text
column is varchar(16383)
, should be TEXT
HISTOGRAM
column in information_schema.COLUMN_STATISTICS
which Dolt does not provideRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.81 | 1.4 |
groupby_scan | 12.08 | 16.71 | 1.4 |
index_join | 1.14 | 4.57 | 4.0 |
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.91 | 8.74 | 3.0 |
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 | 3.19 | 9.06 | 2.8 |
oltp_insert | 1.67 | 2.66 | 1.6 |
oltp_read_write | 5.18 | 16.12 | 3.1 |
oltp_update_index | 1.61 | 4.1 | 2.5 |
oltp_update_non_index | 1.58 | 4.33 | 2.7 |
oltp_write_only | 2.39 | 7.56 | 3.2 |
types_delete_insert | 3.3 | 12.98 | 3.9 |
writes_mean_multiplier | 2.6 |
Overall Mean Multiple | 2.6 |
---|
Published by github-actions[bot] almost 2 years ago
...
2022-11-11T20:01:12.919Z ERROR process/process.go:273 finished unary call with code Unknown {"grpc.start_time": "2022-11-11T20:01:12Z", "grpc.request.deadline": "2022-11-11T20:11:12Z", "system": "grpc", "span.kind": "server", "grpc.service": "ld.services.dolthubapi.internal.v1alpha1.BountyService", "grpc.method": "ProcessMergeCommit", "request_id": "b947de69-f3d8-4b05-8d09-38cb2c11c326", "invocation_id": "01d9a1a2-0cc3-4619-b919-42a666a257d0", "error": "pq: duplicate key value violates unique constraint \"scoreboard_build_shards_pkey\"", "grpc.code": "Unknown", "grpc.time_ms": 102.431}
2022-11-11T20:01:12.920Z INFO request_logging/request_logging.go:21 beginning unary call {"grpc.start_time": "2022-11-11T20:01:12Z", "grpc.request.deadline": "2022-11-11T20:01:13Z", "system": "grpc", "span.kind": "server", "grpc.service": "grpc.health.v1.Health", "grpc.method": "Check", "invocation_id": "a149d64f-e063-4f7b-ae40-a304bf86f50e"}
2022-11-11T20:01:12.920Z INFO process/process.go:273 finished unary call with code OK {"grpc.start_time": "2022-11-11T20:01:12Z", "grpc.request.deadline": "2022-11-11T20:01:13Z", "system": "grpc", "span.kind": "server", "grpc.service": "grpc.health.v1.Health", "grpc.method": "Check", "invocation_id": "a149d64f-e063-4f7b-ae40-a304bf86f50e", "grpc.code": "OK", "grpc.time_ms": 0.124}
2022-11-11T20:01:12.922Z INFO zap/grpclogger.go:73 [transport]transport: loopyWriter.run returning. connection error: desc = "transport is closing" {"system": "grpc", "grpc_log": true}
panic: runtime error: index out of range [1] with length 1
goroutine 2252120 [running]:
github.com/dolthub/dolt/go/libraries/doltcore/remotestorage.(*DoltChunkStore).getDLLocs.func2.2.2()
external/com_github_dolthub_dolt_go/libraries/doltcore/remotestorage/chunk_store.go:603 +0x269
golang.org/x/sync/errgroup.(*Group).Go.func1()
external/org_golang_x_sync/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
external/org_golang_x_sync/errgroup/errgroup.go:72 +0xa5
dolt schema update-tag
. In cases where merge is throwing a schema tag conflict such as in #3963, it may be useful to manually update the tags.... limit 0, 200
in TopN plan, arithmetic was returning decimal type because 200
was handled asuint8
and 0
was int8
types, so if the both the values are any non-matching int type, the values are converted to int64
for +
and -
operations.ALTER DATABASE
queries.dolt init
doesn't fail when a non-option argument is providedRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.66 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 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.15 | 0.46 | 3.1 |
oltp_read_only | 2.86 | 8.58 | 3.0 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.81 | 62.19 | 2.0 |
types_table_scan | 70.55 | 186.54 | 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 | 10.46 | 3.6 |
oltp_insert | 1.55 | 2.66 | 1.7 |
oltp_read_write | 5.0 | 16.41 | 3.3 |
oltp_update_index | 1.47 | 4.74 | 3.2 |
oltp_update_non_index | 1.44 | 5.0 | 3.5 |
oltp_write_only | 2.22 | 7.84 | 3.5 |
types_delete_insert | 3.19 | 14.46 | 4.5 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
duplicate key update
test from doltdolt migrate
fails with "migration failed cause: Incorrect datetime value"Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.18 | 4.57 | 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 | 3.02 | 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 | 71.83 | 189.93 | 2.6 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.02 | 10.46 | 3.5 |
oltp_insert | 1.44 | 2.71 | 1.9 |
oltp_read_write | 5.18 | 16.71 | 3.2 |
oltp_update_index | 1.52 | 4.74 | 3.1 |
oltp_update_non_index | 1.47 | 5.0 | 3.4 |
oltp_write_only | 2.3 | 7.98 | 3.5 |
types_delete_insert | 3.07 | 12.75 | 4.2 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.7 |
---|
Published by github-actions[bot] almost 2 years ago
DoltIndexedTable
, which as far as I can tell is limited to the history tables.not
and is null
clauses with dolt diff tableRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.66 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.16 | 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.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 | 3.3 | 10.84 | 3.3 |
oltp_insert | 1.55 | 2.66 | 1.7 |
oltp_read_write | 5.18 | 17.01 | 3.3 |
oltp_update_index | 1.5 | 4.91 | 3.3 |
oltp_update_non_index | 1.44 | 5.28 | 3.7 |
oltp_write_only | 2.26 | 8.13 | 3.6 |
types_delete_insert | 3.25 | 13.22 | 4.1 |
writes_mean_multiplier | 3.0 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
dolt merge --no-ff --no-commit
, now it does not fast-forward and commit. It leaves the working set with changes.dolt merge
behavior should more closely match git merge
Published by github-actions[bot] almost 2 years ago
HAVING
visibility into outer scopeErrNonAggregatedColumnWithoutGroupBy
ErrNonAggregatedColumnWithoutGroupBy
and tests for validation with opaque nodes.Published by github-actions[bot] almost 2 years ago
DOLT_ROOT_PATH=. dolt backup restore <remote> subfolder/reponame
ErrNonAggregatedColumnWithoutGroupBy
ErrNonAggregatedColumnWithoutGroupBy
and tests for validation with opaque nodes.Published by github-actions[bot] almost 2 years ago
CHAR
, VARCHAR
, BINARY
, and VARBINARY
) columns.BLOB
and TEXT
though.doltIndex
now has a prefixLengths
field which is a []uint16
> create table t (v varchar(2), index (v(1)));
> insert into t values ("aa"), ("ba"), ("bb"), ("bc"), ...;
> select v from t where v = "aa";
The query here should be able to take advantage of the secondary index; it should do a range prefix lookup over the table for just the rows that start with "a"
, then apply an equality filter over the resulting table. Currently, it will just do a full table scan.div
operation and more edge cases with precision for all arithmetic operationsYYYYMMDDHHMMSS
or YYYYMMDD
depending on what's defined. This applies to all arithmetic operations.12.4ag3.2jgw499
is parsed as number 12.4
, and a942.6ng488
is parsed as 0
.Int64
values are converted to Uint64
type values including negative numbers._binary
introducer conversion is not supported yet. E.g. these are not supported:
_binary b'0001' | b'0010'
_binary X'0008' << 8
BINARY NULL & NULL
BINARY NULL >> 4
We don't support bit-wise compliment operation ~
and BIT_COUNT
function yet.Index
interface to handle prefix lengths, and add in-memory implementationSHOW CREATE TABLE
displays the prefix lengths specified for secondary indexesqualifyColumns
up higher in analyzer rules orderqualifyColumns
analyzer rule up to the second position in the DefaultRules
batch (resolveNaturalJoins
still needs to run first to resolve duplicate column names.)Expressions()
implementation, I had to special case GroupBy in qualifyColumns to handle identifying alias references in the grouping expressions that were defined in the projection expressions.dolt merge --no-ff <branch>
(no message) and dolt merge --no-ff --no-commit <branch>
are still committingPublished by github-actions[bot] almost 2 years ago
dolt log main...branchA
dolt log main branchA --not $(dolt merge-base main branchA)
dolt_log('main...branchA')
dolt log A B --not $(dolt merge-base --all A B)
dolt log
:dolt log A B
dolt log A B ^C
dolt log A ^B ^C
dolt log A --not B C
// The aggregation node must provide input dependencies for parent projections.
// Each parent expression can depend on zero or many aggregation expressions.
// There are two basic kinds of aggregation expressions:
// 1) Passthrough columns from scope input relation.
// 2) Synthesized columns from in-scope aggregation relation.
This is only relevant for expression that reference aggregations, which is somewhat curious. So for example, in select x/y, x/count(y) from x
, the x/y
expression is executed entirely in the child aggregation node. x/count(y)
is separated into two steps, 1) evaluate count(y)
and passthrough x
, and then evaluate arithmetic x/count(y)
in the parent projection. The error here is we were failing to expose the x
passthrough to the parent operator that evaluated the division.mod
operation%
can be operated on decimal values.ErrEmptyCachedResult
sentinel. This is only possible in joinIter currently.sql_mode
VARCHAR
and CHAR
text types despite not actually using the prefix for lookups. This PR allows dolt
to throw the right errors./
operation result in decimal type except for float type column reference/
, always results in decimal type value. Only exception is that if there is float type column reference on either side of the operator, it should result in float type value.ROUND
and FLOOR
functionsdolt table import -u --continue
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 2.71 | 1.4 |
groupby_scan | 12.08 | 17.01 | 1.4 |
index_join | 1.16 | 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.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.26 | 62.19 | 2.1 |
types_table_scan | 70.55 | 189.93 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.68 | 11.65 | 3.2 |
oltp_insert | 1.86 | 2.66 | 1.4 |
oltp_read_write | 5.47 | 16.71 | 3.1 |
oltp_update_index | 1.89 | 5.18 | 2.7 |
oltp_update_non_index | 1.86 | 5.37 | 2.9 |
oltp_write_only | 2.71 | 7.98 | 2.9 |
types_delete_insert | 3.75 | 15.55 | 4.1 |
writes_mean_multiplier | 2.7 |
Overall Mean Multiple | 2.6 |
---|
Published by github-actions[bot] almost 2 years ago
MemoryQuotaProvider
dolt
binary by 8MB, from 75 to 67MB.sql_mode
show keys from information_schema.columns
panicsdolt sql-client
panics if passed a branch scoped databasedolt sql-client -q
does not acceot multiple statementsdolt sql-client --no-auto-commit
still commitsIN
predicate returns wrong results when used with GROUP BY ... HAVING
subqueryRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.0 | 2.71 | 1.4 |
groupby_scan | 12.52 | 16.71 | 1.3 |
index_join | 1.21 | 4.57 | 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.74 | 2.9 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.12 | 3.2 |
table_scan | 30.26 | 63.32 | 2.1 |
types_table_scan | 69.29 | 189.93 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.13 | 12.08 | 3.9 |
oltp_insert | 1.61 | 2.71 | 1.7 |
oltp_read_write | 5.28 | 17.01 | 3.2 |
oltp_update_index | 1.58 | 5.28 | 3.3 |
oltp_update_non_index | 1.64 | 5.57 | 3.4 |
oltp_write_only | 2.39 | 8.13 | 3.4 |
types_delete_insert | 3.25 | 16.12 | 5.0 |
writes_mean_multiplier | 3.1 |
Overall Mean Multiple | 2.8 |
---|
Published by github-actions[bot] almost 2 years ago
dolt reset --hard
server
package.pushdownSort
was able to replace a missing column reference with an alias reference when that column was aliased, but it wasn't able to correctly replace compound expressions such as ORDER BY BINARY(mytable.mycol)
due to how we tracked only the missing column references and didn't consider the sort field expression as a whole.README.md
had an updated example, but the actual _example/main.go
file did not. I've expanded the example file a bit to include information on setting up users, and slightly simplified the README.md
example. I've also added tests for everything, so that if anything breaks, we'll know we need to update both the example file and the README.md
portion.ComPrepare
to SQLError
ComStmtExecute
, ComMultiQuery
, and ComQuery
to SQLError
so that the correct error codes would be sent to clients. This change adds that support to ComPrepare
, too.CastSQLError
a little bit./_example
.~/go-mysql-server/_example$ go build
~/go-mysql-server/_example$ ./_example
$ mysql --host=127.0.0.1 --port=3306 --database=mydb -u root
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.9-Vitess
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select * from mytable;
+----------+-------------------+-------------------------------+---------------------+
| name | email | phone_numbers | created_at |
+----------+-------------------+-------------------------------+---------------------+
| Evil Bob | [email protected] | ["555-666-555","666-666-666"] | 2018-04-18 09:41:13 |
| Jane Doe | [email protected] | [] | 2018-04-18 09:41:13 |
| John Doe | [email protected] | ["555-555-555"] | 2018-04-18 09:41:13 |
| John Doe | [email protected] | [] | 2018-04-18 09:41:13 |
+----------+-------------------+-------------------------------+---------------------+
4 rows in set (0.00 sec)
CREATE TABLE AS SELECT ...
plan.InsertInto.Source
independently from Destination
, and is not considered one of InsertInto
's children. It is evaluated much later in the analysis process in the rule resolveInsertRules
in a similar way as subqueries (we recurse the analyzer on it). This is problematic if we want to reference tables from Source
.InsertInto.Source
and added extra logic to correctly index those tables' columns.on duplicate key update <expr>
in that the LHS of the expr can only see Insert.Destination
while the RHS can see Insert.Destination
and Insert.Source
.InsertInto.Source
before doing anything else, but I wasn't able to get that working yet.SELECT NOW(), DATE_ADD(NOW(), INTERVAL 14 DAY), dolt_version();
+----------------------------+----------------------------------+----------------+
| NOW() | DATE_ADD(NOW(), INTERVAL 14 DAY) | dolt_version() |
+----------------------------+----------------------------------+----------------+
| 2022-10-18 18:53:24.406345 | 2022-11-01 18:53:24.406345 | 0.50.4 |
+----------------------------+----------------------------------+----------------+
1 row in set (0.02 sec)
_example/main.go
raises panicRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.3 | 17.32 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.82 | 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.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 | 63.32 | 2.1 |
types_table_scan | 70.55 | 189.93 | 2.7 |
reads_mean_multiplier | 2.6 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.36 | 11.04 | 3.3 |
oltp_insert | 1.7 | 2.76 | 1.6 |
oltp_read_write | 5.47 | 17.01 | 3.1 |
oltp_update_index | 1.7 | 4.82 | 2.8 |
oltp_update_non_index | 1.61 | 5.18 | 3.2 |
oltp_write_only | 2.43 | 8.13 | 3.3 |
types_delete_insert | 3.3 | 13.22 | 4.0 |
writes_mean_multiplier | 2.8 |
Overall Mean Multiple | 2.7 |
---|