[MCOL-1510] GROUP BY handler doesn't support operations on aggregate functions when projecting columns. Created: 2018-06-27  Updated: 2018-09-12  Resolved: 2018-09-12

Status: Closed
Project: MariaDB ColumnStore
Component/s: None
Affects Version/s: 1.2
Fix Version/s: 1.2.0

Type: Bug Priority: Minor
Reporter: Roman Assignee: Daniel Lee (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
is blocked by MDEV-16842 Extended SELECT list contains unusabl... Closed
Relates
relates to MCOL-1520 Forked server crashes in Item_ident::... Closed
Sprint: 2018-13, 2018-14, 2018-15, 2018-16, 2018-17

 Description   

Steps to reproduce:

MariaDB [cs]> describe cs1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| it    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
MariaDB [cs]> select * from cs1;
+------+------+
| i    | it   |
+------+------+
|    1 |    2 |
|    3 |    4 |
|   25 |   26 |
+------+------+
3 rows in set (0.01 sec)
 
select sum(i)+1 from cs1;
select concat('1',sum(i)) from cs1;
select not(sum(i)) from cs1;



 Comments   
Comment by Roman [ 2018-07-16 ]

Please review.

Comment by Daniel Lee (Inactive) [ 2018-07-18 ]

Build tested: 1.2.0-1
/root/columnstore/mariadb-columnstore-server
commit 3bfc3ad5f1e91e6f325b89fefaf62a6b38ca889a
Merge: 4334641 742af4d
Author: David.Hall <david.hall@mariadb.com>
Date: Thu May 31 09:40:12 2018 -0500

Merge pull request #119 from mariadb-corporation/1.1-merge-up-20180531

Merge develop-1.1 into develop

/root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine
commit 4a3f8b77c2e3fe2ec311150c79551900324e59e8
Merge: 6aedf1d a62a2e3
Author: Andrew Hutchings <andrew@linuxjedi.co.uk>
Date: Wed Jul 18 09:34:13 2018 +0100

Merge pull request #519 from drrtuy/MCOL-1510

MCOL-1510 GROUP BY handler doesn't support operations on aggregate functions when projecting columns.

MariaDB [tpch1]> set infinidb_vtable_mode=0;
Query OK, 0 rows affected (0.00 sec)

MariaDB [tpch1]> select not(sum) from cs1;

ERROR 2013 (HY000): Lost connection to MySQL server during query

In /var/log/messages:

Jul 18 17:39:00 localhost kernel: mysqld[19680]: segfault at 0 ip 00007f1946ca8921 sp 00007f190ddbced8 error 4 in libc-2.17.so[7f1946b43000+1b8000]

mysqld back trace:

[New Thread 0x7f477234d700 (LWP 4284)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f477234d700 (LWP 4284)]
0x00007f47ab215921 in __strlen_sse2_pminub () from /lib64/libc.so.6
(gdb) bt
#0 0x00007f47ab215921 in __strlen_sse2_pminub () from /lib64/libc.so.6
#1 0x000056066b31cbec in Item_ident::print (this=<optimized out>, str=0x7f4772349380,
query_type=<optimized out>) at /root/columnstore/mariadb-columnstore-server/sql/item.cc:2745
#2 0x00007f47a8e0c182 in cal_impl_if::getGroupPlan (gwi=..., select_lex=..., csep=..., gi=...,
isUnion=isUnion@entry=false)
at /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine/dbcon/mysql/ha_calpont_execplan.cpp:8914
#3 0x00007f47a8e11eb4 in cal_impl_if::cp_get_group_plan (thd=thd@entry=0x7f47180009a8, csep=...,
gi=...)
at /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine/dbcon/mysql/ha_calpont_execplan.cpp:8189
#4 0x00007f47a8db4640 in ha_calpont_impl_group_by_init (
group_hand=group_hand@entry=0x7f4718010e00, table=0x7f4718018a10)
at /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine/dbcon/mysql/ha_calpont_impl.cpp:5300
#5 0x00007f47a8da03a8 in ha_calpont_group_by_handler::init_scan (this=0x7f4718010e00)
at /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine/dbcon/mysql/ha_calpont.cpp:1227
#6 0x000056066b20da3e in Pushdown_query::execute (this=0x7f4718013880,
join=join@entry=0x7f4718011ce0)
at /root/columnstore/mariadb-columnstore-server/sql/group_by_handler.cc:48
#7 0x000056066b1f38ff in do_select (procedure=<optimized out>, join=0x7f4718011ce0)
at /root/columnstore/mariadb-columnstore-server/sql/sql_select.cc:18453
#8 JOIN::exec_inner (this=this@entry=0x7f4718011ce0)
at /root/columnstore/mariadb-columnstore-server/sql/sql_select.cc:3816
#9 0x000056066b1f41d9 in JOIN::exec (this=this@entry=0x7f4718011ce0)
--Type <return> to continue, or q <return> to quit--
at /root/columnstore/mariadb-columnstore-server/sql/sql_select.cc:3403
#10 0x000056066b1f43ee in mysql_select (thd=thd@entry=0x7f47180009a8, tables=0x7f47180115c8,
wild_num=0, fields=..., conds=<optimized out>, og_num=0, order=0x0, group=0x0, having=0x0,
proc_param=0x0, select_options=2147748608, result=result@entry=0x7f4718011cc0,
unit=unit@entry=0x7f47180044e8, select_lex=select_lex@entry=0x7f4718004c20)
at /root/columnstore/mariadb-columnstore-server/sql/sql_select.cc:4051
#11 0x000056066b1f4fcb in handle_select (thd=thd@entry=0x7f47180009a8,
lex=lex@entry=0x7f4718004420, result=result@entry=0x7f4718011cc0,
setup_tables_done_option=setup_tables_done_option@entry=0)
at /root/columnstore/mariadb-columnstore-server/sql/sql_select.cc:376
#12 0x000056066b19d589 in execute_sqlcom_select (thd=thd@entry=0x7f47180009a8,
all_tables=0x7f47180115c8)
at /root/columnstore/mariadb-columnstore-server/sql/sql_parse.cc:6517
#13 0x000056066b1a80fa in mysql_execute_command (thd=thd@entry=0x7f47180009a8)
at /root/columnstore/mariadb-columnstore-server/sql/sql_parse.cc:3524
#14 0x000056066b1ab660 in mysql_parse (thd=thd@entry=0x7f47180009a8, rawbuf=<optimized out>,
length=<optimized out>, parser_state=parser_state@entry=0x7f477234c5c0,
is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false)
at /root/columnstore/mariadb-columnstore-server/sql/sql_parse.cc:7981
#15 0x000056066b1b0a11 in dispatch_command (command=command@entry=COM_QUERY,
thd=thd@entry=0x7f47180009a8, packet=packet@entry=0x7f4718006d69 "",
packet_length=packet_length@entry=27, is_com_multi=is_com_multi@entry=false,
is_next_command=is_next_command@entry=false)
at /root/columnstore/mariadb-columnstore-server/sql/sql_parse.cc:1846
#16 0x000056066b1b1254 in do_command (thd=0x7f47180009a8)
at /root/columnstore/mariadb-columnstore-server/sql/sql_parse.cc:1393
--Type <return> to continue, or q <return> to quit--
#17 0x000056066b268644 in do_handle_one_connection (connect=connect@entry=0x56066dc77d18)
at /root/columnstore/mariadb-columnstore-server/sql/sql_connect.cc:1335
#18 0x000056066b268704 in handle_one_connection (arg=0x56066dc77d18)
at /root/columnstore/mariadb-columnstore-server/sql/sql_connect.cc:1241
#19 0x00007f47acfece25 in start_thread () from /lib64/libpthread.so.0
#20 0x00007f47ab1a834d in clone () from /lib64/libc.so.6
(gdb) c
Continuing.
Detaching after fork from child process 5367.
Detaching after fork from child process 5368.
Detaching after fork from child process 5369.
Detaching after fork from child process 5370.
Detaching after fork from child process 5371.
Detaching after fork from child process 5372.
Detaching after fork from child process 5373.
Detaching after fork from child process 5374.

Program received signal SIGSEGV, Segmentation fault.
0x00007f47ab215921 in __strlen_sse2_pminub () from /lib64/libc.so.6
(gdb) c
Continuing.
[Thread 0x7f477234d700 (LWP 4284) exited]
[Thread 0x7f47a9878700 (LWP 539) exited]
[Thread 0x7f4771fbc700 (LWP 540) exited]
[Thread 0x7f47717bb700 (LWP 541) exited]
[Thread 0x7f4770fba700 (LWP 542) exited]
[Thread 0x7f47707b9700 (LWP 543) exited]
[Thread 0x7f476ffb8700 (LWP 544) exited]
[Thread 0x7f476f7b7700 (LWP 545) exited]
[Thread 0x7f476efb6700 (LWP 546) exited]
[Thread 0x7f476e7b5700 (LWP 547) exited]
[Thread 0x7f476dfb4700 (LWP 548) exited]
[Thread 0x7f476d7b3700 (LWP 549) exited]
[Thread 0x7f476cfb2700 (LWP 550) exited]
[Thread 0x7f47677fe700 (LWP 553) exited]
[Thread 0x7f4767fff700 (LWP 554) exited]
[Thread 0x7f4766ffd700 (LWP 555) exited]
[Thread 0x7f47667fc700 (LWP 556) exited]
[Thread 0x7f4765ffb700 (LWP 557) exited]
[Thread 0x7f47657fa700 (LWP 558) exited]
[Thread 0x7f4764ff9700 (LWP 559) exited]
[Thread 0x7f4757fff700 (LWP 560) exited]
[Thread 0x7f474f7fe700 (LWP 561) exited]
[Thread 0x7f47577fe700 (LWP 562) exited]
[Thread 0x7f4756ffd700 (LWP 563) exited]
[Thread 0x7f47567fc700 (LWP 564) exited]
[Thread 0x7f4755ffb700 (LWP 565) exited]
[Thread 0x7f47557fa700 (LWP 566) exited]
[Thread 0x7f4754ff9700 (LWP 567) exited]
[Thread 0x7f47724d0700 (LWP 568) exited]
[Thread 0x7f477244f700 (LWP 569) exited]
[Thread 0x7f47723ce700 (LWP 570) exited]
Cannot find user-level thread for LWP 538: generic error

Comment by Daniel Lee (Inactive) [ 2018-07-18 ]

Stack configuration used for testing: 1um2pm, with 1gb dbt3 database.

Comment by Daniel Lee (Inactive) [ 2018-07-18 ]

Build tested: 1.2.0-1 source

/root/columnstore/mariadb-columnstore-server
commit 4ea82f8f53b0dbec6971d93f19a7e6fa18b7c50c
Merge: 3bfc3ad 15febae
Author: Andrew Hutchings <andrew@linuxjedi.co.uk>
Date: Wed Jul 18 20:47:56 2018 +0100

Merge pull request #122 from mariadb-corporation/MCOL-1520

MCOL-1520 Fix the server crash in Item_iden::print() for a temptable field.

I just tested with the latest source. mysqld still crashed

Tested with the latest pull and still got the same error.
MariaDB [mytest]> set infinidb_vtable_mode=0;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mytest]> select not(sum) from cs1;
ERROR 2013 (HY000): Lost connection to MySQL server during query

Comment by Roman [ 2018-07-19 ]

I've rechecked and it works for me as expected. Here are commits` hashes for engine and server:

root@62f59fb5c00b:/git/mariadb-columnstore-server/d2-mariadb-columnstore-engine# git branch -v -l | grep develop
* develop       4a3f8b7 Merge pull request #519 from drrtuy/MCOL-1510
 
root@62f59fb5c00b:/git/mariadb-columnstore-server# git branch -v -l | grep develop
* develop     4ea82f8 Merge pull request #122 from mariadb-corporation/MCOL-1520

And here is the expected outcome for this particular query.

MariaDB [test]> set infinidb_vtable_mode=0;
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [test]> select not(sum(i)) from cs1;
ERROR 1178 (42000): The storage engine for the table doesn't support IDB-1001: Function 'not' can only be used in the outermost select or order by clause and cannot be used in conjunction with an aggregate function.

Comment by Daniel Lee (Inactive) [ 2018-07-23 ]

Still have the same issue on the build I made from the latest source.

[root@localhost mariadb-columnstore-server]# git branch -v -l | grep develop

  • develop 4ea82f8 Merge pull request #122 from mariadb-corporation/MCOL-1520
    master 576ea21 Merge pull request #120 from mariadb-corporation/develop-1.1

[root@localhost mariadb-columnstore-engine]# git branch -v -l | grep develop

  • develop 4a3f8b7 Merge pull request #519 from drrtuy/MCOL-1510
    master d9ff257 Merge pull request #497 from mariadb-corporation/develop-1.1
Comment by Daniel Lee (Inactive) [ 2018-07-25 ]

Finally, the cause for the mysqld crash has been identified. Send it back to developer.

Comment by Roman [ 2018-08-30 ]

Please review.

Comment by Roman [ 2018-09-03 ]

Please review the changes in CalpontSelectExecutionPlan::serialize().

Comment by Daniel Lee (Inactive) [ 2018-09-12 ]

Build verified: 1.2.0-1 source

/root/columnstore/mariadb-columnstore-server
commit c2052269ef995332eedbef4fbd3ecc4a5e8e8cf0
Merge: b8fded1 d0385eb
Author: benthompson15 <ben.thompson@mariadb.com>
Date: Mon Sep 10 09:07:03 2018 -0500

Merge pull request #131 from mariadb-corporation/build_fix

Revert "MDEV-11036 Add link wsrep_sst_rsync_wan -> wsrep_sst_rsync"

/root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine
commit 764090ba0cf0bbb99092f5bfd9f8014464a136b1
Merge: 73b45ac 5b682a5
Author: Andrew Hutchings <andrew@linuxjedi.co.uk>
Date: Mon Sep 3 16:20:47 2018 +0100

Merge pull request #552 from drrtuy/MCOL-1510_4

MCOL-1510: Add CalpontSelectExecutionPlan::serialize() changes.

Verified test case in the ticket description. The last query is not supported, which is the current expected behavior.

MariaDB [mytest]> create table cs1 (i int, it int) engine=columnstore;
Query OK, 0 rows affected (0.083 sec)

MariaDB [mytest]> insert into cs1 values (1,2);
Query OK, 1 row affected (0.150 sec)

MariaDB [mytest]> insert into cs1 values (3,4);
Query OK, 1 row affected (0.032 sec)

MariaDB [mytest]> insert into cs1 values (25,26);
Query OK, 1 row affected (0.031 sec)

MariaDB [mytest]> select sum+1 from cs1;
----------

sum+1

----------

30

----------
1 row in set (0.078 sec)

MariaDB [mytest]> select concat('1',sum) from cs1;
--------------------

concat('1',sum)

--------------------

129

--------------------
1 row in set (0.008 sec)

MariaDB [mytest]> select not(sum) from cs1;
ERROR 1178 (42000): The storage engine for the table doesn't support IDB-1001: Function 'not' can only be used in the outermost select or order by clause and cannot be used in conjunction with an aggregate function.
MariaDB [mytest]> select * from cs1;
----------+

i it

----------+

1 2
3 4
25 26

----------+
3 rows in set (0.011 sec)

Generated at Thu Feb 08 02:29:18 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.