I have built the MySQL server from source and am able to run myself in gdb while running a MySQL shell in another terminal window. When I connect to the My SQL server I can interrupt the server in gdb and see that an extra thread has been created that is monitoring the created connection. I then continue the server in gdb. If I send the server a query such as:
SELECT * FROM table;
how can I set a breakpoint in order to see the parsing, planning, and access methods required to run this query? As a follow-up, I see that the server and the InnoDB storage engine both have their own SQL parsers. Why are there two?