Hi!

I've been using mysql embedded server in my online game
project. The game server receive client requests,
and create a new thread for every request.
I made some tests with a single thread,
and found some strange things.
The following code works under Windows XP, but doesn't
work under Debian or RedHat 7.1 :

void server_test( ... )
{
        mysql_server_init( ... );
        mysql = mysql_init( ... );
        mysql_real_connect( mysql, ... );
        pthread_create( ... server_receive ... )
        // wait for thread end
        // terminate...
}

void *server_receive( mysql )
{
        mysql_thread_init();
        somelogquery( mysql, "SELECT * FROM building" ); // works fine
        somelogquery( mysql, "SELECT * FROM building WHERE bid==1" ); // mysql_error
        mysql_thread_end();
        phtread_exit( ... );
}

I've got mysql error: thread stack overrun, 8-10Mb used from 192Kb stack
A simple SELECT without WHERE always succeeded, but SELECTs with WHERE always failed.
The following code works under win and linux, but it looks very ugly:

void *server_receive( mysql )
{
        // no mysql_thread_init();
        mysql_close( mysql )
        mysql = mysql_init( ... );
        mysql_real_connect( mysql, ... );
        somelogquery( mysql, "SELECT * FROM building" ); // works fine
        somelogquery( mysql, "SELECT * FROM building WHERE bid==1" ); // mysql_error
        // no mysql_thread_end();
        phtread_exit( ... );
}

What is wrong with the mysql_thread_... version?
Did I misunderstand something?
Why does it work under Win but doesn't under linux?
Is the close/reinit/reconnect solution much slower?

Thanks,
Gabor Dorka




---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to