Merged PRs
dolt
- 6688: Retain display width for
TINYINT(1)
MySQL allows integer fields to specify a display width (e.g. TINYINT(1)). Dolt currently parses that information, but doesn't retain it anywhere. This PR changes that behavior to match MySQL and retain the display width setting so that it can be passed back to callers.
As of MySQL 8.1.0, the display width setting is ONLY retained for signed TINYINT fields and ONLY when the display width is set to 1.
Fixes: #6682
GMS PR: dolthub/go-mysql-server#2017
go-mysql-server
- 2018: Avoid corrupting the privileges file
- 2017: Retaining display width for
TINYINT(1)
MySQL allows integer fields to specify a display width (e.g.TINYINT(1)
).go-mysql-server
currently parses that information, but doesn't retain it anywhere. This PR changes that behavior to match MySQL and retain the display width setting so that it can be passed back to callers.
As of MySQL 8.1.0, the display width setting is ONLY retained for signedTINYINT
fields and ONLY when the display width is set to 1.
Fixes: #6682
Corresponding Dolt PR: #6688 - 2016: Bug fix: Preserve column name case for views
Fixes #6683
Dolt CI Checks: #6684 - 2005: implement
INTERSECT
andEXCEPT
clause
This PR implements two MySQL functions,INTERSECT
andEXCEPT
.
They are similar toUNION
in that they combine to two sets of rows.
INTERSECT
is the set of rows that are in both left and right.
EXCEPT
is the set of rows that are in the left that are not in the right.
Additionally, there is a bug with field indexes with ORDER BY over unions.
companion pr: dolthub/vitess#271
fixes #6643 - 2003: Delete fixidx package
remove remnants of old field indexing code
vitess
- 275: Adding parser support for
VISIBLE
andINVISIBLE
modifiers for indexes
Fixes: #6690 - 274: Allow
CREATE TABLE
andALTER TABLE
to accept hexnum and float values when integers are expected.
Fixes #6644 and #6648
MySQL is permissive in what it expects for DDL statement parameters: in many places where ints are expected, the parser will also accept a hex number (and convert) or a float number (and truncate.)
None of these values are currently used by GMS, so we don't need to add any additional processing logic. But the parser needs to accept them when they appear. - 272: Set character set IDs to current MySQL version
The character set values were set for MySQL 5.0, so they've been updated to the correct values for 8.0. - 271: parsing
intersect
andexcept
This PR adds support for parsing the keywordsINTERSECT
andEXCEPT
.
These work similar toUNION
and work withDISTINCT
andALL
keywords.
Additionally, there are new precedence tests;INTERSECT
has a higher precedence thanUNION
andEXCEPT
.
The rest are parsed left to right.
syntax for #6643
Closed Issues
- 6644: Cast floating point values for statement parameters that expect int
- 6643: Implement EXCEPT and INTERSECT
- 6683: Selecting from a view shows column names as all lowercase
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.86 | 1.4 |
groupby_scan | 12.98 | 17.95 | 1.4 |
index_join | 1.27 | 4.74 | 3.7 |
index_join_scan | 1.21 | 2.22 | 1.8 |
index_scan | 33.12 | 58.92 | 1.8 |
oltp_point_select | 0.14 | 0.4 | 2.9 |
oltp_read_only | 2.66 | 7.17 | 2.7 |
select_random_points | 0.31 | 0.72 | 2.3 |
select_random_ranges | 0.37 | 0.95 | 2.6 |
table_scan | 33.12 | 57.87 | 1.7 |
types_table_scan | 75.82 | 167.44 | 2.2 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.47 | 5.67 | 1.0 |
oltp_insert | 2.52 | 3.02 | 1.2 |
oltp_read_write | 6.09 | 14.21 | 2.3 |
oltp_update_index | 2.52 | 3.02 | 1.2 |
oltp_update_non_index | 2.66 | 2.91 | 1.1 |
oltp_write_only | 3.62 | 7.17 | 2.0 |
types_delete_insert | 5.47 | 6.21 | 1.1 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.9 |
---|