Sergei, here's another example:

create or replace table t(a int not null auto_increment,
b int,
primary key (a, b));
insert t(b) values (1);
insert t(b) values (2);
select * from t;

a       b
1       1
2       2

However there's no collision! Switching key parts ordering to (b,a) changes the behavior.

I am still struggling with this because
create or replace table cars(id int unique auto_increment,
price int, s date, e date,
period for p(s,e),
primary key(id, p without overlaps));

has primary key as an autoincrement index! And as a consequence, the following fails:

insert cars(price, s, e) values (1000, '2018-01-01', '2020-01-01');
insert cars(price, s, e) values (1000, '2021-01-01', '2022-01-01');

update cars for portion of p from '2019-01-01' to '2019-12-01' set price= 1100;

As you may guess, the same applies to the table t, if we'd add unique(a) - it doesn't become the autoincrement
index in the code, but the behavior is the same...

Should I maybe update the key determination rules for such case?

--
Yours truly,
Nikita Malyavin