Details
- 
    Bug 
- 
    Status: Open (View Workflow)
- 
    Major 
- 
    Resolution: Unresolved
- 
    10.3(EOL), 10.4(EOL)
- 
    None
Description
| 10.3 779151db80 | 
| mysqld: /data/src/10.3/sql/sql_error.cc:484: void Diagnostics_area::disable_status(): Assertion `! is_set()' failed. | 
| 181226  2:13:35 [ERROR] mysqld got signal 6 ; | 
|  | 
| #7  0x00007ff202399ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6 | 
| #8  0x000055ef5bf202e4 in Diagnostics_area::disable_status (this=0x7ff190006068) at /data/src/10.3/sql/sql_error.cc:484 | 
| #9  0x000055ef5bf889ce in send_prep_stmt (stmt=0x7ff19000c1e0, columns=0) at /data/src/10.3/sql/sql_prepare.cc:393 | 
| #10 0x000055ef5bf8cc59 in check_prepared_statement (stmt=0x7ff19000c1e0) at /data/src/10.3/sql/sql_prepare.cc:2529 | 
| #11 0x000055ef5bf9076c in Prepared_statement::prepare (this=0x7ff19000c1e0, packet=0x7ff19001ba31 "", packet_len=53) at /data/src/10.3/sql/sql_prepare.cc:4009 | 
| #12 0x000055ef5bf8cfc3 in mysqld_stmt_prepare (thd=0x7ff190000b00, packet=0x7ff19001ba31 "", packet_length=53) at /data/src/10.3/sql/sql_prepare.cc:2631 | 
| #13 0x000055ef5bf61d38 in dispatch_command (command=COM_STMT_PREPARE, thd=0x7ff190000b00, packet=0x7ff19001ba31 "", packet_length=53, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1808 | 
| #14 0x000055ef5bf60aa1 in do_command (thd=0x7ff190000b00) at /data/src/10.3/sql/sql_parse.cc:1396 | 
| #15 0x000055ef5c0c8ab0 in do_handle_one_connection (connect=0x55ef60a894e0) at /data/src/10.3/sql/sql_connect.cc:1402 | 
| #16 0x000055ef5c0c8834 in handle_one_connection (arg=0x55ef60a894e0) at /data/src/10.3/sql/sql_connect.cc:1308 | 
| #17 0x00007ff203e55494 in start_thread (arg=0x7ff20009b700) at pthread_create.c:333 | 
| #18 0x00007ff20245693f in clone () from /lib/x86_64-linux-gnu/libc.so.6
 | 
I've had it with libmysqlclient / libmariadb, including current 10.1 and 10.3, Perl DBI (linked with who-knows-what), and with MariaDB Java connector 1.7.0. Couldn't reproduce with Java connector 1.7.1+. 
Couldn't reproduce it with MTR, even after patching it to allow prepared statements for EXPLAIN.
Didn't try any other connectors/tools.
Couldn't reproduce with 10.2 server.
| C test | 
| #include <mysql.h> | 
| #include <stdlib.h> | 
| #include <stdio.h> | 
|  | 
| int main(int argc, char **argv) | 
| {   | 
|   MYSQL *con = mysql_init(NULL); | 
|   MYSQL_STMT *stmt = mysql_stmt_init(con); | 
|  | 
|   if (con == NULL)  | 
|   { | 
|       fprintf(stderr, "%s\n", mysql_error(con)); | 
|       exit(1); | 
|   } | 
|  | 
|   if (mysql_real_connect(con, "127.0.0.1", "root", "",  | 
|           "test", 0, NULL, 0) == NULL)  | 
|   { | 
|       fprintf(stderr, "%s\n", mysql_error(con)); | 
|       mysql_close(con); | 
|       exit(1); | 
|   } | 
|  | 
|   if (mysql_stmt_prepare(stmt, | 
|     "EXPLAIN SELECT * INTO OUTFILE 'load.data' FROM mysql.db", 55))  | 
|   { | 
|     fprintf(stderr, "%s\n", mysql_error(con)); | 
|     mysql_close(con); | 
|     exit(1); | 
|   } | 
|  | 
|   if (mysql_stmt_execute(stmt)) | 
|   { | 
|     fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); | 
|     exit(1); | 
|   } | 
|  | 
|   mysql_close(con); | 
|   exit(0); | 
| }
 | 
| Java test | 
| import java.sql.DriverManager; | 
| import java.sql.Connection; | 
| import java.sql.PreparedStatement; | 
| import java.util.Arrays; | 
|  | 
| public class JConnectorTest | 
| { | 
|   public static void main (String argv[])	 | 
|   { | 
|     Boolean ret; | 
|     PreparedStatement injerto; | 
|     Connection conn; | 
|     try { | 
|       conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); | 
|       PreparedStatement ps = conn.prepareStatement("EXPLAIN SELECT * INTO OUTFILE 'load.data' FROM mysql.db"); | 
|       ps.addBatch(); | 
|       int[] count = ps.executeBatch(); | 
|       System.out.println("Result: " + Arrays.toString(count)); | 
|     } | 
|     catch (Exception e) | 
|     { | 
|       System.out.println("Exception: " + e + "\n"); | 
|     } | 
|   } | 
| } 
 | 
| Perl test | 
| use DBI; | 
| use strict; | 
|  | 
| my $dbh = DBI->connect("dbi:mysql:host=127.0.0.1:port=3306:user=root:database=test;mysql_server_prepare=1"); | 
|  | 
| unless (defined $dbh) { | 
|   print "Couldn't connect: ".$DBI::errstr."\n"; | 
|   exit 1; | 
| } | 
|  | 
| print "All good\n" if $dbh->do("EXPLAIN SELECT * INTO OUTFILE 'load.data' FROM mysql.db"); | 
|  | 
| $dbh->disconnect();
 | 
Attachments
Issue Links
- relates to
- 
                    MDEV-18285 [Draft] Assertion `! is_set()' failed in Diagnostics_area::disable_status upon DROP COLUMN -         
- Closed
 
-