Links

Miscellaneous

Misc features

Component
Supported
Notes and limitations
Information schema
Views
Window functions
🟠
Some functions not supported, see window function docs
Common table expressions (CTEs)
Stored procedures
🟠
Only a few statements are not yet supported, see compound statements
Cursors
Triggers

Client Compatibility

Some MySQL features are client features, not server features. Dolt ships with a client (ie. dolt sql or dolt sql-client) and a server (dolt sql-server). The Dolt client is not as sophisticated as the mysql client. To access these features you can use the mysql client that ships with MySQL.
Feature
Supported
Notes and limitations
SOURCE
Works with Dolt via the mysql client
LOAD DATA LOCAL INFILE
LOAD DATA INFILE works with the Dolt client. The LOCAL option only works with Dolt via the mysql client

Join hints

Dolt supports the following join hints:
name
supported
detail
JOIN_ORDER(,...)
Join tree in scope should use the following join execution order. Must include all table names.
LOOKUP_JOIN(,)
Use LOOKUP strategy joining two tables.
MERGE_JOIN(,)
Use MERGE strategy joining two tables.
HASH_JOIN(,)
Use HASH strategy joining two tables.
INNER_JOIN(,)
Use INNER strategy joining two tables.
SEMI_JOIN(,)
Use SEMI strategy joining two tables.
ANTI_JOIN(,)
Use ANTI strategy joining two tables.
JOIN_FIXED_ORDER
Join tree uses in-place table order for execution.
NO_ICP
Disable indexed range scans on index using filters.
Join hints are indicated immediately after a SELECT token in a special comment format /*+ */. Multiple hints should be separated by spaces:
SELECT /*+ JOIN_ORDER(arg1,arg2) */ 1
SELECT /*+ JOIN_ORDER(arg1,arg2) NO_ICP */ 1
Join hints currently require a full set of valid hints for all to be applied. For example, if we have a three table join we can enforce JOIN_ORDER on its own, join strategies on their own, or both order and strategy:
SELECT /*+ JOIN_ORDER(xy,uv,ab) LOOKUP_JOIN(xy,uv) HASH_JOIN(uv,ab) */ 1
FROM xy
JOIN uv on x = u
JOIN ab on a = u;
Additional notes:
  • If one hint is invalid given the execution options, no hints are applied and the engine falls back to default costing.
  • Join operator hints are order-insensitive
  • Join operator hints apply as long as the indicated tables are subsets of the join left/right.

Collations and character sets

Dolt supports a subset of the character sets and collations that MySQL supports. Notably, the default character set is utf8mb4, while the default collation is utf8mb4_0900_bin (a case-sensitive collation). This default was chosen as it has the fastest implementation, and also from a legacy perspective, as before proper collation support was added, it was the only real collation that we supported. This differs from a standard MySQL instance, which defaults to utf8mb4_0900_ai_ci (a case-insensitive collation). Character sets and collations are added upon request, so please file an issue if a character set or collation that you need is missing.
Collation
Character Set
Supported
armscii8_bin
armscii8
armscii8_general_ci
armscii8
ascii_bin
ascii
ascii_general_ci
ascii
big5_bin
big5
big5_chinese_ci
big5
cp1250_bin
cp1250
cp1250_croatian_ci
cp1250
cp1250_czech_cs
cp1250
cp1250_general_ci
cp1250
cp1250_polish_ci
cp1250
cp1251_bin
cp1251
cp1251_bulgarian_ci
cp1251
cp1251_general_ci
cp1251
cp1251_general_cs
cp1251
cp1251_ukrainian_ci
cp1251
cp1256_bin
cp1256
cp1256_general_ci
cp1256
cp1257_bin
cp1257
cp1257_general_ci
cp1257
cp1257_lithuanian_ci
cp1257
cp850_bin
cp850
cp850_general_ci
cp850
cp852_bin
cp852
cp852_general_ci
cp852
cp866_bin
cp866
cp866_general_ci
cp866
cp932_bin
cp932
cp932_japanese_ci
cp932
dec8_bin
dec8
dec8_swedish_ci
dec8
eucjpms_bin
eucjpms
eucjpms_japanese_ci
eucjpms
euckr_bin
euckr
euckr_korean_ci
euckr
gb18030_bin
gb18030
gb18030_chinese_ci
gb18030
gb18030_unicode_520_ci
gb18030
gb2312_bin
gb2312
gb2312_chinese_ci
gb2312
gbk_bin
gbk
gbk_chinese_ci
gbk
geostd8_bin
geostd8
geostd8_general_ci
geostd8
greek_bin
greek
greek_general_ci
greek
hebrew_bin
hebrew
hebrew_general_ci
hebrew
hp8_bin
hp8
hp8_english_ci
hp8
keybcs2_bin
keybcs2
keybcs2_general_ci
keybcs2
koi8r_bin
koi8r
koi8r_general_ci
koi8r
koi8u_bin
koi8u
koi8u_general_ci
koi8u
latin1_bin
latin1
latin1_danish_ci
latin1
latin1_general_ci
latin1
latin1_general_cs
latin1
latin1_german1_ci
latin1
latin1_german2_ci
latin1
latin1_spanish_ci
latin1
latin1_swedish_ci
latin1
latin2_bin
latin2
latin2_croatian_ci
latin2
latin2_czech_cs
latin2
latin2_general_ci
latin2
latin2_hungarian_ci
latin2
latin5_bin
latin5
latin5_turkish_ci
latin5
latin7_bin
latin7
latin7_estonian_cs
latin7
latin7_general_ci
latin7
latin7_general_cs
latin7
macce_bin
macce
macce_general_ci
macce
macroman_bin
macroman
macroman_general_ci
macroman
sjis_bin
sjis
sjis_japanese_ci
sjis
swe7_bin
swe7
swe7_swedish_ci
swe7
tis620_bin
tis620
tis620_thai_ci
tis620
ucs2_bin
ucs2
ucs2_croatian_ci
ucs2
ucs2_czech_ci
ucs2
ucs2_danish_ci
ucs2
ucs2_esperanto_ci
ucs2
ucs2_estonian_ci
ucs2
ucs2_general_ci
ucs2
ucs2_general_mysql500_ci
ucs2
ucs2_german2_ci
ucs2
ucs2_hungarian_ci
ucs2
ucs2_icelandic_ci
ucs2
ucs2_latvian_ci
ucs2
ucs2_lithuanian_ci
ucs2
ucs2_persian_ci
ucs2
ucs2_polish_ci
ucs2
ucs2_roman_ci
ucs2
ucs2_romanian_ci
ucs2
ucs2_sinhala_ci
ucs2
ucs2_slovak_ci
ucs2
ucs2_slovenian_ci
ucs2
ucs2_spanish2_ci
ucs2
ucs2_spanish_ci
ucs2
ucs2_swedish_ci
ucs2
ucs2_turkish_ci
ucs2
ucs2_unicode_520_ci
ucs2
ucs2_unicode_ci
ucs2
ucs2_vietnamese_ci
ucs2
ujis_bin
ujis
ujis_japanese_ci
ujis
utf16_bin
utf16
utf16_croatian_ci
utf16
utf16_czech_ci
utf16
utf16_danish_ci
utf16
utf16_esperanto_ci
utf16
utf16_estonian_ci
utf16
utf16_general_ci
utf16
utf16_german2_ci
utf16
utf16_hungarian_ci
utf16
utf16_icelandic_ci
utf16
utf16_latvian_ci
utf16
utf16_lithuanian_ci
utf16
utf16_persian_ci
utf16
utf16_polish_ci
utf16
utf16_roman_ci
utf16
utf16_romanian_ci
utf16
utf16_sinhala_ci
utf16
utf16_slovak_ci
utf16
utf16_slovenian_ci
utf16
utf16_spanish2_ci
utf16
utf16_spanish_ci
utf16
utf16_swedish_ci
utf16
utf16_turkish_ci
utf16
utf16_unicode_520_ci
utf16
utf16_unicode_ci
utf16
utf16_vietnamese_ci
utf16
utf16le_bin
utf16le
utf16le_general_ci
utf16le
utf32_bin
utf32
utf32_croatian_ci
utf32
utf32_czech_ci
utf32
utf32_danish_ci
utf32
utf32_esperanto_ci
utf32
utf32_estonian_ci
utf32
utf32_general_ci
utf32
utf32_german2_ci
utf32
utf32_hungarian_ci
utf32
utf32_icelandic_ci
utf32
utf32_latvian_ci
utf32
utf32_lithuanian_ci
utf32
utf32_persian_ci
utf32
utf32_polish_ci
utf32
utf32_roman_ci
utf32
utf32_romanian_ci
utf32
utf32_sinhala_ci
utf32
utf32_slovak_ci
utf32
utf32_slovenian_ci
utf32
utf32_spanish2_ci
utf32
utf32_spanish_ci
utf32
utf32_swedish_ci
utf32
utf32_turkish_ci
utf32
utf32_unicode_520_ci
utf32
utf32_unicode_ci
utf32
utf32_vietnamese_ci
utf32
utf8mb3_bin
utf8mb3
utf8mb3_croatian_ci
utf8mb3
utf8mb3_czech_ci
utf8mb3
utf8mb3_danish_ci
utf8mb3
utf8mb3_esperanto_ci
utf8mb3
utf8mb3_estonian_ci
utf8mb3
utf8mb3_general_ci
utf8mb3
utf8mb3_general_mysql500_ci
utf8mb3
utf8mb3_german2_ci
utf8mb3
utf8mb3_hungarian_ci
utf8mb3
utf8mb3_icelandic_ci
utf8mb3
utf8mb3_latvian_ci
utf8mb3
utf8mb3_lithuanian_ci
utf8mb3
utf8mb3_persian_ci
utf8mb3
utf8mb3_polish_ci
utf8mb3
utf8mb3_roman_ci
utf8mb3
utf8mb3_romanian_ci
utf8mb3
utf8mb3_sinhala_ci
utf8mb3
utf8mb3_slovak_ci
utf8mb3
utf8mb3_slovenian_ci
utf8mb3
utf8mb3_spanish2_ci
utf8mb3
utf8mb3_spanish_ci
utf8mb3
utf8mb3_swedish_ci
utf8mb3
utf8mb3_tolower_ci
utf8mb3
utf8mb3_turkish_ci
utf8mb3
utf8mb3_unicode_520_ci
utf8mb3
utf8mb3_unicode_ci
utf8mb3
utf8mb3_vietnamese_ci
utf8mb3
utf8mb4_0900_ai_ci
utf8mb4
utf8mb4_0900_as_ci
utf8mb4
utf8mb4_0900_as_cs
utf8mb4
utf8mb4_0900_bin
utf8mb4
utf8mb4_bin
utf8mb4
utf8mb4_croatian_ci
utf8mb4
utf8mb4_cs_0900_ai_ci
utf8mb4