[MDEV-15878] Assertion `table->file->stats.records > 0 || error' failed in join_read_const_table or wrong result upon INSERT into Aria table Created: 2018-04-16  Updated: 2023-11-28

Status: Confirmed
Project: MariaDB Server
Component/s: Optimizer, Storage Engine - Aria
Affects Version/s: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Michael Widenius
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
PartOf
includes MDEV-22117 Assertion `table->file->stats.records... Confirmed

 Description   

CREATE TABLE t1 (a INT) ENGINE=Aria;
 
--connect (con1,localhost,root,,test)
LOCK TABLE t1 WRITE;
SELECT * INTO OUTFILE 'load.data' FROM t1;
LOAD DATA INFILE 'load.data' INTO TABLE t1;
INSERT INTO t1 VALUES (1),(2);
 
--connection default
--send
  INSERT INTO t1 SELECT * FROM t1;
 
# Cleanup
--connection con1
UNLOCK TABLES;
--disconnect con1
--connection default
--reap
 
SELECT * FROM t1;
DROP TABLE t1;
--let $datadir= `SELECT @@datadir`
--remove_file $datadir/test/load.data

10.1 82524239c4

mysqld: /data/src/10.1/sql/sql_select.cc:18915: int join_read_const_table(THD*, JOIN_TAB*, POSITION*): Assertion `table->file->stats.records > 0 || error' failed.
180928  0:58:46 [ERROR] mysqld got signal 6 ;
 
#7  0x00007fef3b906ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055648cf65117 in join_read_const_table (thd=0x7fef348d5070, tab=0x7fef32c44718, pos=0x7fef32c44c68) at /data/src/10.1/sql/sql_select.cc:18915
#9  0x000055648cf3fd1b in make_join_statistics (join=0x7fef32c43fd8, tables_list=..., keyuse_array=0x7fef32c44318) at /data/src/10.1/sql/sql_select.cc:3824
#10 0x000055648cf37511 in JOIN::optimize_inner (this=0x7fef32c43fd8) at /data/src/10.1/sql/sql_select.cc:1403
#11 0x000055648cf361c0 in JOIN::optimize (this=0x7fef32c43fd8) at /data/src/10.1/sql/sql_select.cc:1058
#12 0x000055648cf3eb3e in mysql_select (thd=0x7fef348d5070, rref_pointer_array=0x7fef348d9550, tables=0x7fef32c438a8, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489925888, result=0x7fef32c43f38, unit=0x7fef348d8ba8, select_lex=0x7fef348d92a8) at /data/src/10.1/sql/sql_select.cc:3485
#13 0x000055648cf3428a in handle_select (thd=0x7fef348d5070, lex=0x7fef348d8ae0, result=0x7fef32c43f38, setup_tables_done_option=1073741824) at /data/src/10.1/sql/sql_select.cc:388
#14 0x000055648cefd0af in mysql_execute_command (thd=0x7fef348d5070) at /data/src/10.1/sql/sql_parse.cc:4039
#15 0x000055648cf0785d in mysql_parse (thd=0x7fef348d5070, rawbuf=0x7fef32c43088 "INSERT INTO t1 SELECT * FROM t1", length=31, parser_state=0x7fef3d98a5e0) at /data/src/10.1/sql/sql_parse.cc:7465
#16 0x000055648cef60cf in dispatch_command (command=COM_QUERY, thd=0x7fef348d5070, packet=0x7fef373f9071 "INSERT INTO t1 SELECT * FROM t1", packet_length=31) at /data/src/10.1/sql/sql_parse.cc:1495
#17 0x000055648cef4e54 in do_command (thd=0x7fef348d5070) at /data/src/10.1/sql/sql_parse.cc:1124
#18 0x000055648d02f827 in do_handle_one_connection (thd_arg=0x7fef348d5070) at /data/src/10.1/sql/sql_connect.cc:1330
#19 0x000055648d02f58b in handle_one_connection (arg=0x7fef348d5070) at /data/src/10.1/sql/sql_connect.cc:1242
#20 0x000055648d3ede1c in pfs_spawn_thread (arg=0x7fef3b039ef0) at /data/src/10.1/storage/perfschema/pfs.cc:1861
#21 0x00007fef3d60a494 in start_thread (arg=0x7fef3d98bb00) at pthread_create.c:333
#22 0x00007fef3b9c393f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Not reproducible with MyISAM or InnoDB.

Non-debug build doesn't crash, but it produces a questionable table contents which is returned by SELECT in the test case:

SELECT * FROM t1;
a
1
2
1

Since the INSERT .. SELECT doesn't fail, it's reasonable to expect 4 rows in the table.



 Comments   
Comment by Alice Sherepa [ 2018-11-16 ]

got it on 10.4 16d43150aefc5a9a7e75

/git/10.4/sql/sql_select.cc:19804: int join_read_const_table(THD*, JOIN_TAB*, POSITION*): Assertion `table->file->stats.records > 0 || error' failed.
 
sql/sql_select.cc:19809(join_read_const_table(THD*, st_join_table*, st_position*))[0x56357f4cc563]
sql/sql_select.cc:4688(make_join_statistics(JOIN*, List<TABLE_LIST>&, st_dynamic_array*))[0x56357f46ae4d]
sql/sql_select.cc:1932(JOIN::optimize_inner())[0x56357f451690]
sql/sql_select.cc:1451(JOIN::optimize())[0x56357f44ccb6]
sql/sql_select.cc:4267(mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x56357f467b54]
sql/sql_select.cc:385(handle_select(THD*, LEX*, select_result*, unsigned long))[0x56357f442295]
sql/sql_parse.cc:6554(execute_sqlcom_select(THD*, TABLE_LIST*))[0x56357f3c898c]
sql/sql_parse.cc:3773(mysql_execute_command(THD*))[0x56357f3b70e6]
sql/sql_parse.cc:8091(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x56357f3d0f31]
sql/sql_parse.cc:1853(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x56357f3abe2e]
sql/sql_parse.cc:1396(do_command(THD*))[0x56357f3a8fc6]
sql/sql_connect.cc:1402(do_handle_one_connection(CONNECT*))[0x56357f6fde37]
sql/sql_connect.cc:1309(handle_one_connection)[0x56357f6fd814]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7fee8e7506ba]
x86_64/clone.S:111(clone)[0x7fee8dbe541d]
 
Query (0x62b0001e3288): SELECT row_end FROM `D` ORDER BY RAND() LIMIT 1 INTO @trx 

 perl ./runall-new.pl --no-mask --seed=time --duration=500 --queries=10M --reporters=Backtrace,ErrorLog,Deadlock --validators=TransformerNoComparator --transformers=ConvertSubqueriesToViews,ConvertTablesToDerived,Count,DisableIndexes,DisableOptimizations,Distinct,EnableOptimizations,ExecuteAsCTE,ExecuteAsDeleteReturning,ExecuteAsDerived,ExecuteAsExcept,ExecuteAsExecuteImmediate,ExecuteAsInsertSelect,ExecuteAsIntersect,ExecuteAsSelectItem,ExecuteAsUnion,ExecuteAsUpdateDelete,ExecuteAsView,ExecuteAsWhereSubquery,Having,InlineSubqueries,InlineVirtualColumns,LimitRowsExamined,OrderBy,StraightJoin,ExecuteAsPreparedTwice,ExecuteAsTrigger,ExecuteAsSPTwice,ExecuteAsFunctionTwice --querytimeout=30 --redefine=conf/mariadb/versioning.yy --vcols --views=TEMPTABLE --grammar=conf/mariadb/instant_add.yy --gendata=conf/optimizer/blobs.zz --engine=Aria --mysqld=--default-storage-engine=Aria --threads=6 --mysqld=--big-tables --mysqld=--query_cache_size=1M --mysqld=--query_cache_type=1 --basedir1=/git/10.4 --vardir1=/1
 

Comment by Roel Van de Paar [ 2020-04-02 ]

Please fix MDEV-22117 at same time.

Generated at Thu Feb 08 08:24:42 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.