File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -4350,6 +4350,18 @@ void sqlite3CreateIndex(
43504350 goto exit_create_index ;
43514351 }
43524352 pIndex -> azColl [i ] = zColl ;
4353+ #ifdef DOLTLITE_PROLLY
4354+ /* Prolly-tree sort keys only support BINARY, NOCASE, and RTRIM.
4355+ ** Reject indexes on columns with user-defined collations — they
4356+ ** would produce wrong results on index lookups. */
4357+ if ( sqlite3StrICmp (zColl , "BINARY" )!= 0
4358+ && sqlite3StrICmp (zColl , "NOCASE" )!= 0
4359+ && sqlite3StrICmp (zColl , "RTRIM" )!= 0 ){
4360+ sqlite3ErrorMsg (pParse ,
4361+ "doltlite does not support indexes with custom collation '%s'" , zColl );
4362+ goto exit_create_index ;
4363+ }
4364+ #endif
43534365 requestedSortOrder = pListItem -> fg .sortFlags & sortOrderMask ;
43544366 pIndex -> aSortOrder [i ] = (u8 )requestedSortOrder ;
43554367 }
Original file line number Diff line number Diff line change @@ -315,3 +315,57 @@ crash7 crash7-2.17.1
315315crash7 crash7-2.18.1
316316crash7 crash7-2.19.1
317317crash7 crash7-2.20.1
318+ # Custom collation indexes rejected: doltlite's prolly-tree sort keys
319+ # only support BINARY, NOCASE, and RTRIM. CREATE INDEX with a custom
320+ # collation now errors rather than silently producing wrong results.
321+ enc enc-11.1
322+ collate3 collate3-1.6.1
323+ collate3 collate3-1.6.3
324+ collate3 collate3-1.6.4
325+ collate3 collate3-1.7.1
326+ collate3 collate3-1.7.3
327+ collate3 collate3-1.7.4
328+ collate3 collate3-3.0
329+ collate3 collate3-3.1
330+ collate3 collate3-3.2
331+ collate3 collate3-3.4
332+ collate3 collate3-3.5
333+ collate3 collate3-3.8
334+ collate3 collate3-3.10
335+ collate3 collate3-3.11
336+ collate3 collate3-3.12
337+ collate3 collate3-3.13
338+ collate3 collate3-3.14
339+ collate3 collate3-4.6
340+ collate4 collate4-1.1.0
341+ collate4 collate4-1.1.4
342+ collate4 collate4-1.1.5
343+ collate4 collate4-1.1.21
344+ collate4 collate4-1.1.24
345+ collate4 collate4-1.1.27
346+ collate4 collate4-1.1.30
347+ collate4 collate4-1.2.0
348+ collate4 collate4-1.2.1
349+ collate4 collate4-1.2.2
350+ collate4 collate4-1.2.4
351+ collate4 collate4-1.2.6
352+ collate4 collate4-1.2.14
353+ collate4 collate4-1.2.17
354+ collate4 collate4-1.2.19
355+ collate4 collate4-1.2.21
356+ collate4 collate4-1.2.24
357+ collate4 collate4-1.2.25
358+ collate4 collate4-2.1.4
359+ collate4 collate4-2.1.5
360+ collate4 collate4-2.1.7
361+ collate4 collate4-2.1.8
362+ collate4 collate4-2.1.9
363+ collate4 collate4-2.2.1b
364+ collate4 collate4-2.2.2
365+ collate4 collate4-4.3
366+ collate4 collate4-4.4
367+ collate4 collate4-4.5
368+ select9 select9-2.1.1 # CREATE INDEX with COLLATE REVERSE
369+ select9 select9-2.X
370+ select9 select9-3.1 # depends on index dropped in select9-2.X
371+ select9 select9-4.1
You can’t perform that action at this time.
0 commit comments