Bot releases are visible (Hide)
Published by github-actions[bot] 9 months ago
@@dolt_transaction_commit_message
@@dolt_transaction_commit
.dolt_ignore
in the working set should be ignored by most operations.dolt_ignore
commit_hash
in various dolt system tablesreplacePkSort
does not work over certain types of indexes as some indexes are unordered.nil
check for the idxSch
, leading to a panic when attempting to sort by columns in those mock indexesdolt log --stat
dolt log --stat
which prints the diffstat for each commit in the log.DROP
s on a table if that table was referenced in a FOREIGN KEY
did not account for when the table was self referencing. This PR fixes that and closes the gap in our testing for this area.default
and generated
column expressionsdefault
and generated
expressions when doing show create table ...
with backquotes anyways.CREATE TABLE
dolt_log
when you order by commit_hash
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 3.13 | 1.5 |
groupby_scan | 13.46 | 17.63 | 1.3 |
index_join | 1.34 | 5.28 | 3.9 |
index_join_scan | 1.25 | 2.26 | 1.8 |
index_scan | 33.72 | 63.32 | 1.9 |
oltp_point_select | 0.17 | 0.46 | 2.7 |
oltp_read_only | 3.36 | 8.13 | 2.4 |
select_random_points | 0.32 | 0.74 | 2.3 |
select_random_ranges | 0.39 | 0.92 | 2.4 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.77 | 6.09 | 1.1 |
oltp_insert | 3.02 | 3.07 | 1.0 |
oltp_read_write | 7.56 | 15.27 | 2.0 |
oltp_update_index | 3.02 | 3.13 | 1.0 |
oltp_update_non_index | 2.91 | 3.07 | 1.1 |
oltp_write_only | 4.33 | 7.43 | 1.7 |
types_delete_insert | 5.67 | 6.79 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.9 |
---|
Published by github-actions[bot] 9 months ago
ForeignKey.HashOf()
was silently ignoring the UnresolvedFKDetails
fields, due to using the wrong API to write the string values to the bytes.Buffer
. Using binary.Write
for a string (instead of bytes.Buffer.Write
) was resulting in an error, but the error was not captured, so it was silently ignored. This led to FK name collisions when @@FOREIGN_KEY_CHECKS
was disabled and the resolved column information wasn't populated to ensure a unique hash.foreign_key_test.go
, which had been skipped since the storage engine migration. I tried unsetting the UnresolvedFKDetails
fields when the FK is resolved, but that broke many tests – it seems that the code still relies on the UnresolvedFKDetails
fields being populated even when the FK is resolved.id serial primary key
SQL created by Drizzle in MySQL mode. Dolt can't execute.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.86 | 1.4 |
groupby_scan | 13.46 | 17.32 | 1.3 |
index_join | 1.32 | 5.0 | 3.8 |
index_join_scan | 1.25 | 2.18 | 1.7 |
index_scan | 33.72 | 62.19 | 1.8 |
oltp_point_select | 0.17 | 0.46 | 2.7 |
oltp_read_only | 3.36 | 7.98 | 2.4 |
select_random_points | 0.32 | 0.74 | 2.3 |
select_random_ranges | 0.39 | 0.9 | 2.3 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.57 | 5.88 | 1.1 |
oltp_insert | 2.71 | 2.91 | 1.1 |
oltp_read_write | 7.3 | 15.0 | 2.1 |
oltp_update_index | 2.81 | 3.02 | 1.1 |
oltp_update_non_index | 2.86 | 2.97 | 1.0 |
oltp_write_only | 4.03 | 7.3 | 1.8 |
types_delete_insert | 5.37 | 6.55 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 9 months ago
dolt rebase
commanddolt rebase
command which is supported by the dolt_rebase()
procedure.JoinNode
in Project
or Filter
or both. The logic that is supposed to skip null rows for update fails to skip when the node is not directly a JoinNode
. I don't know if there are other node types that should be handled the same way in the toJoinNode
function I added. This fix resolved the issues I was having.IndexedTableAccess
. It seems to set the root join filter to true
, with a nested node that has the actual filter. The true
filter causes the update skip logic to allow updates on every attempted join, even when null. This was happening for a bit but it stopped while I was messing with the test data so I couldn't keep diagnosing it.UNIQUE
and PRIMARY KEY
to be specified on the same columnVarScope
function so that it returns whether a scope was explicitly specified, or if one has been inferred.SELECT @@max_allowed_packet
) and then will look up the returned value in the result set using the expected column name (@@max_allowed_packet
). Currently, from the way we parse the system variable, this was always returned with the scope present, but to match MySQL's behavior, the column name needs to match the requested name.Published by github-actions[bot] 9 months ago
dolt_statistics
tableSELECT * from t where b = 1 and c = 1
and two indexes, (a,b,c)
and (b,c)
. We want to use the (b,c)
index as a lookup, because (a,b,c)
will be disjoint on a (b,c)
key. This PR fixes index costing to record and prefer non-zero prefix matches. We only differentiate zero and non-zero cases here because it is easier and I think pretty reliable.dolt clone
can include extraneous remote refsBETWEEN AND
after CREATE INDEX
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.32 | 5.0 | 3.8 |
index_join_scan | 1.25 | 2.14 | 1.7 |
index_scan | 34.33 | 62.19 | 1.8 |
oltp_point_select | 0.17 | 0.46 | 2.7 |
oltp_read_only | 3.36 | 7.98 | 2.4 |
select_random_points | 0.33 | 0.74 | 2.2 |
select_random_ranges | 0.39 | 0.9 | 2.3 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 170.48 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.67 | 6.09 | 1.1 |
oltp_insert | 2.76 | 2.97 | 1.1 |
oltp_read_write | 7.3 | 15.27 | 2.1 |
oltp_update_index | 2.81 | 3.07 | 1.1 |
oltp_update_non_index | 2.97 | 3.02 | 1.0 |
oltp_write_only | 4.03 | 7.43 | 1.8 |
types_delete_insert | 5.47 | 6.67 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 9 months ago
This release contains backwards incompatible changes:
dolt_merge()
and dolt_pull()
procedure output schemas have changed (documentation). Each procedure has an additional column named message
which is an optional field intended for human readable information.dolt_merge()
and dolt_pull()
will return without any updates to the commit history. As this is not an error, we opted to use the message
column to communicate to users what occurred.Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
dolt_merge()
operation now appropriately ends as a no-op when an attempt is made to merge in a commit which is already reachable from HEAD. This matches git behavior, and is a non-error scenario.message
column was added to the output of dolt_merge()
and dolt_pull()
stored procedures. Given the change in schema and that some user may actually depend on this broken merge behavior, this is a breaking change.SELECT * from t where b = 1 and c = 1
and two indexes, (a,b,c)
and (b,c)
. We want to use the (b,c)
index as a lookup, because (a,b,c)
will be disjoint on an (b,c)
key. This PR fixes index costing to record and prefer non-zero prefix matches. We only differentiate zero and non-zero cases here because it is easier and I think pretty reliable.ALTER USER
statement to change account passwordsALTER USER
statement, so that users can change passwords. All users are allowed to change their own password; changing another user's password requires the CREATE USER
privilege or the UPDATE
privilege on the mysql
database.ALTER USER
DESCRIBE ANALYZE
/ EXPLAIN ANALYZE
to display stats data about joins.DESCRIBE
and EXPLAIN
are aliases. GMS pretty consistently uses DESCRIBE
internally, so I prefer that here.)sql.DescribeStats
sql.DescribeStats
, defined in sql/describe.go
. By embedding this struct within a Node
or Expression
, the node will store information about the cost estimate and row count estimate of the plan that was used to generate the node. This information can then be included in the Node/Expressions's string representation by calling the method DescribeStats.GetDescribeStatsString
.Join
nodes embed this mixin.DESCRIBE format=estimates SELECT ...
will include the row estimates and cost estimates of every node that supports this.DESCRIBE ANALYZE SELECT ...
will execute the plan, and then display the actual row counts alongside the estimates.DESCRIBE ANALYZE
is only permitted for queries that don't have side effects. For instance, DESCRIBE ANALYZE INSERT ...
will fail with an error.sql.Describable
String()
and DebugString()
. DESCRIBE
could emit either by using format=tree
(the default) or format=debug
. This isn't really a scalable solution, and the number of levers we want to control plan formatting may increase further over time.sql.Describable
. It has one method: Describe(options sql.DescribeOptions) string
. DescribeOptions
is a struct that contains all options that control how plans are displayed, and more options can be added as needed.format=
parameter in the describe query, which now accepts an underscore-separated list of options. Eg, format=debug_estimates
.sql.Describe(node, options)
instead of calling node.String()
or sql.DebugString(node)
. This function calls Describe
on the node if it exists, and otherwise falls back on DebugString
or String
. This allows for incremental support of the sql.Describable
interface as needed instead of needing to add support for every node type right out of the gate.
Join
nodes are currently supported, it's very easy to add support for other types. Literally all you have to do is embed the sql.DescribeStats
struct in the node, and implement the Describe
method, like so:
type DemoNode struct {
sql.DescribeStats,
...
}
func (d DemoNode) Describe(options sql.DescribeOptions) string {
p := sql.NewTreePrinter()
_ = p.WriteNode("Demo")
_ = p.WriteChildren(sql.Describe(d.Child, options))
return p.String()
}
plangen.go
now has three different expected plans: One for debug strings, one for debug + estimates, and one for debug + estimates + analyze.query_plans.go
instead of all the plan tests.Published by github-actions[bot] 9 months ago
HASH IN <tuple>
when comparing against collated string typesHASH IN
to always use a collation to hash the values in the case that we compare a numerical type against a collated string type.@@max_allowed_packet
should be an unsigned integer typeoctet_length()
functionOCTET_LENGTH()
, which is just a synonym for LENGTH()
quarter()
functionQUARTER()
function, which tells the quarter from the provided date.ORD()
functionORD()
function in MySQL, which converts a unicode character into its numerical representation.STRINGS
, only the leftmost unicode character is evaluated.CHAR()
functionCHAR()
functionality.UINT32
and UINT64
utf8mb4
, while you need to use USING
in MySQL.USING
the bit strings are supposed to show up as hexadecimal values.ALTER USER
statementALTER USER
statements (MySQL reference). First step towards allowing users to change passwords.VarScope
function so that it returns whether a scope was explicitly specified, or if one has been inferred.SELECT @@max_allowed_packet
) and then will look up the returned value in the result set using the expected column name (@@max_allowed_packet
). Currently, from the way we parse the system variable, this was always returned with the scope present, but to match MySQL's behavior, the column name needs to match the requested name.position()
POSITION(<expr1> in <expr2>)
, which is a synoynm for LOCATE(<expr1>, <expr2>);
char()
syntax handlingCHAR(... using <charset>)
, there has to be special syntax support.IN
Published by github-actions[bot] 9 months ago
true = 'true'
and false = 'false'
to true = '1'
and false = '0'
.dolt_constraint_violations_<table>
system tables. This manifested as a panic when trying to delete the violation artifacts from the system table, but it also meant that we couldn't uniquely identify rows in the system table by the system table's PK for keyless tables. To enable keyless tables to use constraint violation artifacts, we now return the row's identifying hash from the source keyless table in the system table. Note that the dolt_conflicts_<table>
system table did not have a similar issue because its primary key is a unique ID generated in the dolt_conflict_id
field.elt()
and field()
functionELT()
function, which just returns the nth argument as a string.FIELD()
function, which returns the first case-insensitive match to the first argument.exp()
functionEXP()
function in MySQL.bit_count()
functionBIT_COUNT()
function, which counts the number of 1s in the binary representation of the integer argument.atan2()
function and support second argument for atan
ATAN()
and ATAN2()
, which just computes atanoriginalCol
name when creating scope columns, but I can't tell which should be left as empty and which should be filled out.ORD()
functionORD()
function in MySQL, which converts a unicode character into its numerical representation.STRINGS
, only the leftmost unicode character is evaluated.pi()
functionSPACE()
functionSort
nodes for queries that included ORDER BY
s if there were IndexLookup
s that were a matching prefix over the sortfields. The idea was that since indexes are already in order there was no need to sort.OR
expression, it is possible to iterate over columns in a non-sorted order. During analysis, the filters are converted into several non-overlapping ranges; it is possible for a range expression in the range to overlap with another range's range expression, but for the two ranges to not overlap. It's clearer to look at the test.SUBDATE()
SUBDATE()
built-in function and cleans up a few other spots.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.27 | 2.07 | 1.6 |
index_scan | 34.33 | 63.32 | 1.8 |
oltp_point_select | 0.17 | 0.46 | 2.7 |
oltp_read_only | 3.3 | 7.98 | 2.4 |
select_random_points | 0.32 | 0.74 | 2.3 |
select_random_ranges | 0.38 | 0.9 | 2.4 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.77 | 5.88 | 1.0 |
oltp_insert | 2.71 | 2.97 | 1.1 |
oltp_read_write | 7.3 | 15.0 | 2.1 |
oltp_update_index | 2.76 | 3.02 | 1.1 |
oltp_update_non_index | 2.86 | 3.02 | 1.1 |
oltp_write_only | 4.03 | 7.43 | 1.8 |
types_delete_insert | 5.77 | 6.55 | 1.1 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 9 months ago
dolt table import --all-text
correctly infers pk if none givendolt table import
will use the first column in the import file as the primary key if none is explicitly defined. This change updates --all-text
to also correctly do this inference.dolt table import
--all-text
option to dolt table import
which will default all columns to TEXT
type.Sort
nodes for queries that included ORDER BY
s if there were IndexLookup
s that were a matching prefix over the sortfields. The idea was that since indexes are already in order there was no need to sort.OR
expression, it is possible to iterate over columns in a non-sorted order. During analysis, the filters are converted into several non-overlapping ranges; it is possible for a range expression in the range to overlap with another range's range expression, but for the two ranges to not overlap. It's clearer to look at the test.Out of bounds value for decimal type
.convert
to a decimal type that had a bad exclusiveUpperBound
.SYSDATE()
functionSYSDATE()
function.CREATE TRIGGER t1r1 AFTER UPDATE ON t1 FOR EACH ROW BEGIN END;
Published by github-actions[bot] 10 months ago
This release contains backwards incompatible changes:
@@dolt_dont_merge_json
session variable.Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
dolt sql
shell:
mydb/main>
SYSDATE()
functionSYSDATE()
function.INNER JOIN
with String in IN
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.81 | 1.3 |
groupby_scan | 13.22 | 17.63 | 1.3 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.25 | 2.11 | 1.7 |
index_scan | 34.33 | 63.32 | 1.8 |
oltp_point_select | 0.17 | 0.46 | 2.7 |
oltp_read_only | 3.36 | 7.98 | 2.4 |
select_random_points | 0.32 | 0.75 | 2.3 |
select_random_ranges | 0.39 | 0.9 | 2.3 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 170.48 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.67 | 5.99 | 1.1 |
oltp_insert | 2.86 | 3.02 | 1.1 |
oltp_read_write | 7.43 | 15.27 | 2.1 |
oltp_update_index | 2.86 | 3.07 | 1.1 |
oltp_update_non_index | 2.86 | 3.07 | 1.1 |
oltp_write_only | 4.03 | 7.43 | 1.8 |
types_delete_insert | 5.67 | 6.67 | 1.2 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 10 months ago
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.81 | 1.3 |
groupby_scan | 13.46 | 17.63 | 1.3 |
index_join | 1.34 | 4.91 | 3.7 |
index_join_scan | 1.25 | 2.11 | 1.7 |
index_scan | 34.33 | 62.19 | 1.8 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 62.19 | 1.8 |
types_table_scan | 74.46 | 167.44 | 2.2 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.99 | 6.09 | 1.0 |
oltp_insert | 2.97 | 3.02 | 1.0 |
oltp_read_write | 7.56 | 14.73 | 1.9 |
oltp_update_index | 2.97 | 3.07 | 1.0 |
oltp_update_non_index | 3.02 | 3.02 | 1.0 |
oltp_write_only | 4.25 | 7.3 | 1.7 |
types_delete_insert | 5.77 | 6.67 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 10 months ago
myTable.col1
). https://github.com/dolthub/go-mysql-server/pull/2235 fixed the missing metadata, and this PR adds an integration test for the MySQL Connector/J library to ensure we don't regress.dolt_pull
currently performs unnecessary FastForwards for remote branches. There is a more optimal mechanism to fetch all remotes, actions.FetchRefSpecs, and by using that we greatly increase the speed of dolt_pull
when there are lot of remote branches.fmt.Sprintf("%v", x)
writes floats with a x.0
which causes it to never equal hashed strings.table1.ID
) would not work with Dolt when using the MySQL Java Connector library. See https://github.com/dolthub/dolt/issues/7247 for more details.schemaToFields
code are in this PR, and I'll follow up with a PR in the Dolt repo that updates our MySQL Connector library integration tests to add coverage for the table-qualified column name.CASTS(... AS DECIMAL)
COM_RESET_CONNECTION
commandCREATE TRIGGER t1r1 AFTER UPDATE ON t1 FOR EACH ROW BEGIN END;
version
keyword to not require identifier quotesversion
keyword still required identifier quoting in some usages, such as SELECT * FROM base.version;
. See https://github.com/dolthub/dolt/issues/7237 for more details.version
keyword into the main list of non-reserved keywords. There was one conflict from use of the version
keyword in the function_call_keyword
rule, but it turns out that use of version
there is not required. We have an existing test for using the version()
function, so I didn't add a new one.Published by github-actions[bot] 10 months ago
rebase_order
as the primary key for the dolt_rebase
system table-- we start on a dev branch named myDevBranch
select commit_hash, message from dolt_log;
+----------------------------------+----------------------------+
| commit_hash | message |
+----------------------------------+----------------------------+
| fjq1sd7t8nbqn0ddvcor1i455i0i5ken | inserting row 3 |
| v8g3ic9j4euf68t7tfnj7je8e1j6vt9m | inserting row 2 |
| q909vda7hc7ithb2fcgcfghuvt8epsrj | inserting row 1 |
| 0djr0smhr9ucdjivsnabu7ls419p0f37 | creating table t |
| d0lte08fpl5hpcmqj90d6jqrb6i17lfi | Іnitiаlіzе dаtа repоsіtory |
+----------------------------------+----------------------------+
-- the interactive rebase is started by calling the dolt_rebase stored procedure
call dolt_rebase('-i', 'main');
-- once an interactive rebase is started, the session is placed on a temporary working
-- branch and a dolt_rebase table is populated with the default rebase plan
select * from dolt_rebase;
+--------------+--------+----------------------------------+-----------------+
| rebase_order | action | commit_hash | commit_message |
+--------------+--------+----------------------------------+-----------------+
| 1.00 | pick | q909vda7hc7ithb2fcgcfghuvt8epsrj | inserting row 1 |
| 2.00 | pick | v8g3ic9j4euf68t7tfnj7je8e1j6vt9m | inserting row 2 |
| 3.00 | pick | fjq1sd7t8nbqn0ddvcor1i455i0i5ken | inserting row 3 |
+--------------+--------+----------------------------------+-----------------+
-- users can adjust the plan to reorder commits, drop commits, change commit messages or squash commits together
update dolt_rebase set action='reword', commit_message='inserting rows 1, 2, 3' where rebase_order=1;
update dolt_rebase set action='fixup' where rebase_order > 1;
-- execute the adjusted plan
call dolt_rebase('--continue');
-- see that the Dolt commit history has been rewritten
select commit_hash, message from dolt_log;
+----------------------------------+----------------------------+
| commit_hash | message |
+----------------------------------+----------------------------+
| 2mggja4n903gdo5fmbvcbj9vsvgdjd8q | inserting rows 1, 2, 3 |
| 0djr0smhr9ucdjivsnabu7ls419p0f37 | creating table t |
| d0lte08fpl5hpcmqj90d6jqrb6i17lfi | Іnitiаlіzе dаtа repоsіtory |
+----------------------------------+----------------------------+
Resolves https://github.com/dolthub/dolt/issues/3467
utc_timestamp
UTC_TIMESTAMP()
function should take in an argument and round the milliseconds. For now, we stick to always returning the full precision (6 places)Between.Eval()
with a logically equivalent AND
statement to reuse the type conversion logic in comparison.go
JsonIter
class for iterating over the key-value pairs of a JSON object.NOW()
siblingsNOW()
functions more closely match MySQL.NOW()
synonyms to registryCURRENT_TIMESTAMP()
, LOCALTIME()
, LOCALTIMESTAMP()
all just call NOW()
DEFAULT
and ON UPDATE
expressionsSHOW CREATE TABLE
to print CURRENT_TIMESTAMP
for NOW()
and synonymsversion
keyword to not require identifier quotesversion
keyword still required identifier quoting in some usages, such as SELECT * FROM base.version;
. See https://github.com/dolthub/dolt/issues/7237 for more details.version
keyword into the main list of non-reserved keywords. There was one conflict from use of the version
keyword in the function_call_keyword
rule, but it turns out that use of version
there is not required. We have an existing test for using the version()
function, so I didn't add a new one.default
and on update
expressionsNOW()
function and its synonyms.ON UPDATE
expressions against functinos that aren't NOW()
or a synonym.NOW()
and synonyms; syntax error for anything elseCurTimeFuncExpr
from AST in favor of plain FuncExpr
create table t123 (c1 varchar(5) check (c1 in ('v1', 'v2')) NOT NULL);
Resolves: https://github.com/dolthub/dolt/issues/7195
Published by github-actions[bot] 10 months ago
Published by github-actions[bot] 10 months ago
stderr
instead of stdout
so as to not clutter up outputinterface{}
, it seems reasonable to have them implement Stringer.ForeignKeyReferenceHandler.CheckTable()
calls Partition()
and iterates over all rows in the referenced table to ensure that the key is valid (doesn't contain any values that are not in the referenced table).WriteableIndexedDoltTable
prevents us from reading every value through Partition()
as it is only supposed to return rows that match the index range. Additionally, there are some differences between the way MySQL and dolt handle certain ddl and dml operations during delayed resolution of Foreign Keys.Published by github-actions[bot] 10 months ago
dolt schema import
typesJSON
and TEXT
columns in dolt schema import
.Published by github-actions[bot] 10 months ago
blobstore
implementation.OCIBlobstore.Concatenate
is unimplemented as OCI doesn't currently support building composite objects.OCIBlobstore.Put
will use the objectstorage.PutObject
method for uploads smaller than the minimum multipart upload part size of 10MB, but will use the Multipart Upload process for all uploads larger than 10MB.VersionId
as well as an ETag
, however the ETag
value is used for the conditional match header, not the VersionId
, see https://github.com/oracle/oci-go-sdk/blob/v65.54.0/objectstorage/get_object_request_response.go?s=719:5196#L39select 5.0E-5; // -> 0.0001
mult
and div
arithmetic operations
Mult
expression, the .Type()
method is fixed that it returns correct type for decimal type results, which uses the sum of precision and scale values of its right and left values.Div
expression, the .Type()
method is fixed that it returns the correct precision and scale for the final result.ForeignKeyReferenceHandler.CheckTable()
calls Partition()
and iterates over all rows in the referenced table to ensure that the key is valid (doesn't contain any values that are not in the referenced table).WriteableIndexedDoltTable
prevents us from reading every value through Partition()
as it is only supposed to return rows that match the index range. Additionally, there are some differences between the way MySQL and dolt handle certain ddl and dml operations during delayed resolution of Foreign Keys.Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.18 | 2.81 | 1.3 |
groupby_scan | 12.98 | 17.32 | 1.3 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.25 | 2.07 | 1.7 |
index_scan | 33.72 | 63.32 | 1.9 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.47 | 5.99 | 1.1 |
oltp_insert | 2.66 | 2.91 | 1.1 |
oltp_read_write | 7.43 | 14.73 | 2.0 |
oltp_update_index | 2.86 | 3.02 | 1.1 |
oltp_update_non_index | 2.86 | 2.97 | 1.0 |
oltp_write_only | 4.03 | 7.3 | 1.8 |
types_delete_insert | 5.37 | 6.55 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|
Published by github-actions[bot] 10 months ago
This release contains backwards incompatible changes:
-u
short option has been removed from the dolt_fetch
and dolt_pull
stored procedures and from the CLI options for fetch
and pull
. You must specify the long argument flag as --user
now. This change was made to sync up with the push
command, which has a -u
option used for updating the remote tracking branch.--old-format
argument is no longer supported by the dolt init
command. New databases will only support the current storage format.Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
--user
passed as a stored procedure or CLI flag--force
option will overwrite any changes on the target, including the working set changes--old-format
option from dolt init
--old-format
flag from dolt init
. I decided to keep the flag for --new-format
for a little longer (even though it's the default, so that's a no-op) just in case people are still using it in scripts.Published by github-actions[bot] 10 months ago
--user
passed as a stored procedure or CLI flag--force
option will overwrite any changes on the target, including the working set changes--old-format
option from dolt init
--old-format
flag from dolt init
. I decided to keep the flag for --new-format
for a little longer (even though it's the default, so that's a no-op) just in case people are still using it in scripts.Published by github-actions[bot] 10 months ago
dolt config --add
or dolt config --set
.ctx.Span
againRangeHeapJoin
s looked at the lateral join scope when assigning indexes.RangeHeapJoin
son update current_timestamp
ON UPDATE
column expressions, which are triggered when an update is applied to any column in the row.now()
for default, but not the syntax for on update
create table t123 (c1 varchar(5) check (c1 in ('v1', 'v2')) NOT NULL);
Resolves: https://github.com/dolthub/dolt/issues/7195
CREATE TABLE
with both CHECK
and NOT NULL
SET PERSIST GLOBAL
for Dolt system variablesPublished by github-actions[bot] 10 months ago
dolt sql-server
would error if there were existing databases and they were missing any of the remotes listed as cluster replication remotes in the config.yaml. This changes it so that those remotes are automatically created at startup instead.dolt table import
to print when the import schema does not match the destination table's schema, not just when there are fewer columns in the import file. Also updates the warning message to list the column names that differ between the import file and the destination table's schema.@autocommit
@autocommit
is enabled or not. This PR changes the error message we return to describe those steps in more detail when @autocommit
is enabled.on update
expressionsON UPDATE
expressions on columns.ON UPDATE
functionality is missing (which makes sense). Tables with ON UPDATE ...
defined on them won't be displayed and performing an UPDATE
won't trigger any of the defined expressions to run. So, this should be a Feature Verison bump.ctx.Span
with nil checkexpression.Eval(nil, nil)
.*context.Span()
receiverRangeHeap
s in the RangeJoinIter
.on update current_timestamp
ON UPDATE
column expressions, which are triggered when an update is applied to any column in the row.now()
for default, but not the syntax for on update
ON UPDATE CURRENT_TIMESTAMP
in column definition does not update TIMESTAMPUPDATE counters SET value = value + 1 WHERE key = 'foo';
should be concurrency-safeRead Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 2.86 | 1.3 |
groupby_scan | 13.22 | 17.32 | 1.3 |
index_join | 1.34 | 4.91 | 3.7 |
index_join_scan | 1.25 | 2.11 | 1.7 |
index_scan | 34.33 | 64.47 | 1.9 |
oltp_point_select | 0.17 | 0.44 | 2.6 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 64.47 | 1.9 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 6.21 | 6.21 | 1.0 |
oltp_insert | 2.91 | 3.02 | 1.0 |
oltp_read_write | 7.56 | 15.0 | 2.0 |
oltp_update_index | 3.07 | 3.19 | 1.0 |
oltp_update_non_index | 3.19 | 3.13 | 1.0 |
oltp_write_only | 4.25 | 7.3 | 1.7 |
types_delete_insert | 5.99 | 6.79 | 1.1 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|