Bug #102468 Temptable storage engine returns error: doesn't support update of indexes
Submitted: 3 Feb 2021 10:06 Modified: 14 May 2021 12:51
Reporter: Cheng Zhou Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:8.0.22, 8.0.23 OS:Any
Assigned to: CPU Architecture:Any
Tags: regression

[3 Feb 2021 10:06] Cheng Zhou
Description:
When using temptable storage engine in a release version, different errors would return when aggregate functions are more then 255 in select list.

How to repeat:
ERROR 1:
1、create table t1(id int primary key, id1 int);
2、insert into t1 values(1,1),(2,1),(3,2),(4,2);
3、select max(id) as m1, max(id) as m2, max(id) as m3, max(id) as m4, max(id) as m5, max(id) as m6, max(id) as m7, max(id) as m8, max(id) as m9, max(id) as m10,max(id) as m11, max(id) as m12, max(id) as m13, max(id) as m14, max(id) as m15, max(id) as m16, max(id) as m17, max(id) as m18, max(id) as m19, max(id) as m20,max(id) as m21, max(id) as m22, max(id) as m23, max(id) as m24, max(id) as m25, max(id) as m26, max(id) as m27, max(id) as m28, max(id) as m29, max(id) as m30,max(id) as m31, max(id) as m32, max(id) as m33, max(id) as m34, max(id) as m35, max(id) as m36, max(id) as m37, max(id) as m38, max(id) as m39, max(id) as m40,max(id) as m41, max(id) as m42, max(id) as m43, max(id) as m44, max(id) as m45, max(id) as m46, max(id) as m47, max(id) as m48, max(id) as m49, max(id) as m50,max(id) as m51, max(id) as m52, max(id) as m53, max(id) as m54, max(id) as m55, max(id) as m56, max(id) as m57, max(id) as m58, max(id) as m59, max(id) as m60,max(id) as m61, max(id) as m62, max(id) as m63, max(id) as m64, max(id) as m65, max(id) as m66, max(id) as m67, max(id) as m68, max(id) as m69, max(id) as m70,max(id) as m71, max(id) as m72, max(id) as m73, max(id) as m74, max(id) as m75, max(id) as m76, max(id) as m77, max(id) as m78, max(id) as m79, max(id) as m80,max(id) as m81, max(id) as m82, max(id) as m83, max(id) as m84, max(id) as m85, max(id) as m86, max(id) as m87, max(id) as m88, max(id) as m89, max(id) as m90,max(id) as m91, max(id) as m92, max(id) as m93, max(id) as m94, max(id) as m95, max(id) as m96, max(id) as m97, max(id) as m98, max(id) as m99, max(id) as m100,max(id) as m101, max(id) as m102, max(id) as m103, max(id) as m104, max(id) as m105, max(id) as m106, max(id) as m107, max(id) as m108, max(id) as m109, max(id) as m110,max(id) as m111, max(id) as m112, max(id) as m113, max(id) as m114, max(id) as m115, max(id) as m116, max(id) as m117, max(id) as m118, max(id) as m119, max(id) as m120,max(id) as m121, max(id) as m122, max(id) as m123, max(id) as m124, max(id) as m125, max(id) as m126, max(id) as m127, max(id) as m128, max(id) as m129, max(id) as m130,max(id) as m131, max(id) as m132, max(id) as m133, max(id) as m134, max(id) as m135, max(id) as m136, max(id) as m137, max(id) as m138, max(id) as m139, max(id) as m140,max(id) as m141, max(id) as m142, max(id) as m143, max(id) as m144, max(id) as m145, max(id) as m146, max(id) as m147, max(id) as m148, max(id) as m149, max(id) as m150,max(id) as m151, max(id) as m152, max(id) as m153, max(id) as m154, max(id) as m155, max(id) as m156, max(id) as m157, max(id) as m158, max(id) as m159, max(id) as m160,max(id) as m161, max(id) as m162, max(id) as m163, max(id) as m164, max(id) as m165, max(id) as m166, max(id) as m167, max(id) as m168, max(id) as m169, max(id) as m170,max(id) as m171, max(id) as m172, max(id) as m173, max(id) as m174, max(id) as m175, max(id) as m176, max(id) as m177, max(id) as m178, max(id) as m179, max(id) as m180,max(id) as m181, max(id) as m182, max(id) as m183, max(id) as m184, max(id) as m185, max(id) as m186, max(id) as m187, max(id) as m188, max(id) as m189, max(id) as m190, max(id) as m191, max(id) as m192, max(id) as m193, max(id) as m194, max(id) as m195, max(id) as m196, max(id) as m197, max(id) as m198, max(id) as m199, max(id) as m200,max(id) as m201, max(id) as m202, max(id) as m203, max(id) as m204, max(id) as m205, max(id) as m206, max(id) as m207, max(id) as m208, max(id) as m209, max(id) as m210,max(id) as m211, max(id) as m212, max(id) as m213, max(id) as m214, max(id) as m215, max(id) as m216, max(id) as m217, max(id) as m218, max(id) as m219, max(id) as m220,max(id) as m221, max(id) as m222, max(id) as m223, max(id) as m224, max(id) as m225, max(id) as m226, max(id) as m227, max(id) as m228, max(id) as m229, max(id) as m230,max(id) as m231, max(id) as m232, max(id) as m233, max(id) as m234, max(id) as m235, max(id) as m236, max(id) as m237, max(id) as m238, max(id) as m239, max(id) as m240,max(id) as m241, max(id) as m242, max(id) as m243, max(id) as m244, max(id) as m245, max(id) as m246, max(id) as m247, max(id) as m248, max(id) as m249, max(id) as m250,max(id) as m251, max(id) as m252, max(id) as m253, max(id) as m254, max(id) as m255, max(id) as m256,id1  from t1 group by id1;

There are 256 max() function in select list above.

4、Error returned:
ERROR 1178 (42000): The storage engine for the table doesn't support update of indexes

ERROR 2:
1、create table t2(a int primary key, id int, id1 int, index(id));
2、insert into t2 values(1,1,1),(2,1,2),(3,2,2),(4,2,4);
3、select max(id) as m1, max(id) as m2, max(id) as m3, max(id) as m4, max(id) as m5, max(id) as m6, max(id) as m7, max(id) as m8, max(id) as m9, max(id) as m10,max(id) as m11, max(id) as m12, max(id) as m13, max(id) as m14, max(id) as m15, max(id) as m16, max(id) as m17, max(id) as m18, max(id) as m19, max(id) as m20,max(id) as m21, max(id) as m22, max(id) as m23, max(id) as m24, max(id) as m25, max(id) as m26, max(id) as m27, max(id) as m28, max(id) as m29, max(id) as m30,max(id) as m31, max(id) as m32, max(id) as m33, max(id) as m34, max(id) as m35, max(id) as m36, max(id) as m37, max(id) as m38, max(id) as m39, max(id) as m40,max(id) as m41, max(id) as m42, max(id) as m43, max(id) as m44, max(id) as m45, max(id) as m46, max(id) as m47, max(id) as m48, max(id) as m49, max(id) as m50,max(id) as m51, max(id) as m52, max(id) as m53, max(id) as m54, max(id) as m55, max(id) as m56, max(id) as m57, max(id) as m58, max(id) as m59, max(id) as m60,max(id) as m61, max(id) as m62, max(id) as m63, max(id) as m64, max(id) as m65, max(id) as m66, max(id) as m67, max(id) as m68, max(id) as m69, max(id) as m70,max(id) as m71, max(id) as m72, max(id) as m73, max(id) as m74, max(id) as m75, max(id) as m76, max(id) as m77, max(id) as m78, max(id) as m79, max(id) as m80,max(id) as m81, max(id) as m82, max(id) as m83, max(id) as m84, max(id) as m85, max(id) as m86, max(id) as m87, max(id) as m88, max(id) as m89, max(id) as m90,max(id) as m91, max(id) as m92, max(id) as m93, max(id) as m94, max(id) as m95, max(id) as m96, max(id) as m97, max(id) as m98, max(id) as m99, max(id) as m100,max(id) as m101, max(id) as m102, max(id) as m103, max(id) as m104, max(id) as m105, max(id) as m106, max(id) as m107, max(id) as m108, max(id) as m109, max(id) as m110,max(id) as m111, max(id) as m112, max(id) as m113, max(id) as m114, max(id) as m115, max(id) as m116, max(id) as m117, max(id) as m118, max(id) as m119, max(id) as m120,max(id) as m121, max(id) as m122, max(id) as m123, max(id) as m124, max(id) as m125, max(id) as m126, max(id) as m127, max(id) as m128, max(id) as m129, max(id) as m130,max(id) as m131, max(id) as m132, max(id) as m133, max(id) as m134, max(id) as m135, max(id) as m136, max(id) as m137, max(id) as m138, max(id) as m139, max(id) as m140,max(id) as m141, max(id) as m142, max(id) as m143, max(id) as m144, max(id) as m145, max(id) as m146, max(id) as m147, max(id) as m148, max(id) as m149, max(id) as m150,max(id) as m151, max(id) as m152, max(id) as m153, max(id) as m154, max(id) as m155, max(id) as m156, max(id) as m157, max(id) as m158, max(id) as m159, max(id) as m160,max(id) as m161, max(id) as m162, max(id) as m163, max(id) as m164, max(id) as m165, max(id) as m166, max(id) as m167, max(id) as m168, max(id) as m169, max(id) as m170,max(id) as m171, max(id) as m172, max(id) as m173, max(id) as m174, max(id) as m175, max(id) as m176, max(id) as m177, max(id) as m178, max(id) as m179, max(id) as m180,max(id) as m181, max(id) as m182, max(id) as m183, max(id) as m184, max(id) as m185, max(id) as m186, max(id) as m187, max(id) as m188, max(id) as m189, max(id) as m190, max(id) as m191, max(id) as m192, max(id) as m193, max(id) as m194, max(id) as m195, max(id) as m196, max(id) as m197, max(id) as m198, max(id) as m199, max(id) as m200,max(id) as m201, max(id) as m202, max(id) as m203, max(id) as m204, max(id) as m205, max(id) as m206, max(id) as m207, max(id) as m208, max(id) as m209, max(id) as m210,max(id) as m211, max(id) as m212, max(id) as m213, max(id) as m214, max(id) as m215, max(id) as m216, max(id) as m217, max(id) as m218, max(id) as m219, max(id) as m220,max(id) as m221, max(id) as m222, max(id) as m223, max(id) as m224, max(id) as m225, max(id) as m226, max(id) as m227, max(id) as m228, max(id) as m229, max(id) as m230,max(id) as m231, max(id) as m232, max(id) as m233, max(id) as m234, max(id) as m235, max(id) as m236, max(id) as m237, max(id) as m238, max(id) as m239, max(id) as m240,max(id) as m241, max(id) as m242, max(id) as m243, max(id) as m244, max(id) as m245, max(id) as m246, max(id) as m247, max(id) as m248, max(id) as m249, max(id) as m250,max(id) as m251, max(id) as m252, max(id) as m253, max(id) as m254, max(id) as m255, max(id) as m256,id1  from t2 group by id1;

4、Error returned:
ERROR 1022 (23000): Can't write; duplicate key in table '/home/zhoucheng/data/tmp/#sql2aa30_8_12'

Suggested fix:
If there is a restriction on the number of aggregate functions in select list,the error message could be more specific.
[3 Feb 2021 10:17] MySQL Verification Team
Hello Cheng Zhou,

Thank you for the report and test case.

regards,
Umesh
[15 Apr 2021 5:22] MySQL Verification Team
Bug #103317 marked as duplicate of this one.
[14 May 2021 12:51] Daniel Price
Posted by developer:
 
Fixed as of the upcoming 8.0.26 release, and here's the proposed changelog entry from the documentation team:

When using the TempTable storage engine
(internal_tmp_mem_storage_engine=TempTable), more than 255 aggregate
functions in a SELECT list caused errors due to overflow of an internal
variable that stores indexed column field positions. 

Thank you for the bug report.