Re: detecting select SQL statements that are functions

Dmitry Lenev <[email protected]> Fri, 18 Jan 2013 13:53:47 +0400
Newsgroups gmane.comp.db.mysql.devel
Message-ID <20130118095347.GD12515@jubjub>
Hello Zardosht!

* Zardosht Kasheff <[email protected]> [13/01/18 08:52]:
> Hello all,
> 
> In our storage engine's handler, we would like to be able to detect
> when a statement is just a simple select statement, that is,
> "read-only".
> 
> In MySQL 5.6, InnoDB seems to do this with the function thd_trx_is_auto_commit.
> 
> We have tried to do something similar in MySQL 5.5.
> 
> The problem we run into is when the select statement is a function,
> and the function performs a write. With the thd, is there a way to
> detect that the statement is not a simple select, but rather calling a
> function?

You can try using thd->lex->uses_stored_routines() method.
Unfortunately, it is not exposed to SEs at the moment in the way similar
to thd->lex->sql_command, so you will have to add wrapper function for
uses_stored_routines() similar to thd_sql_command() to server code yourself.

Best regards,
Dmitry

-- 
Dmitry Lenev, Software Developer
Oracle Development SPB/MySQL, www.mysql.com

Are you MySQL certified?  http://www.mysql.com/certification

-- 
MySQL Internals Mailing List
For list archives: http://lists.mysql.com/internals
To unsubscribe:    http://lists.mysql.com/internals