On 5/13/11 8:29 AM, Mayank Prasad wrote:
> #At file:///home/mayank/mysql-tree/mydefects/5.1_11764633_3/ based on
> 3620 Mayank Prasad 2011-05-13
> Bug#11764633 : 57491: THD->MAIN_DA.IS_OK() ASSERT IN EMBEDDED
> While running embedded server, if client issues TEE command (\T foo/bar) and
> "foo/bar" directory doesn't exist, it is suppose to give error. But it was
> aborting. This was happening because wrong error handler was being called.
> Modified calls to correct error handler. In embedded server case, there are
> two error handler (client and server) which are supposed to be called based
> on which context code is in. If it is in client context, client error handler
> should be called otherwise server.
OK to push. One minor request below. Thanks for working on this!
> === modified file 'libmysqld/lib_sql.cc'
> --- a/libmysqld/lib_sql.cc 2009-12-18 18:44:24 +0000
> +++ b/libmysqld/lib_sql.cc 2011-05-13 11:29:20 +0000
> @@ -41,7 +41,11 @@ C_MODE_START
> extern unsigned int mysql_server_last_errno;
> extern char mysql_server_last_error[MYSQL_ERRMSG_SIZE];
> static my_bool emb_read_query_result(MYSQL *mysql);
> + Wrapper error handler to call client/server error handler based on whether
> + thread is in client/server context
> +static int embedded_error_handler(uint error, const char *str, myf MyFlags);
This must have C linkage, wrap it inside a C_MODE_START/END.