2009/7/24 Bas Driessen <[email protected]>

>  On Fri, 2009-07-24 at 21:44 +1000, Bas Driessen wrote:
>
> On Fri, 2009-07-24 at 21:39 +1000, Bas Driessen wrote:
>
> Hello,
>
> Question regarding libgda and threads.
>
> I open a data source connection (ie: gda_connection_open_from_dsn) in
> thread 1 and then I try to perform any action on the connection (ie:
> gda_connection_statement_execute_select) in thread 2. If I do this in
> Postgresql all works fine. If I try to do this in MySQL then the system
> appears to hang in thread 2. I assume because thread 1 is holding a lock on
> the connection.
>
> How can I remove the lock that is set by function
> gda_connection_open_from_dsn so I can access the connection information from
> thread 2?
>
> Perhaps slightly out of libgda scope, but is there a difference between
> Postgresql and MySQL when it comes to threads and locking? It appears that
> Postgresql does not have that concept or perhaps by default configured not
> to use threads?
>
>
> I think I found the answer in the manual:
>
> "If MySQL client was not compiled with the --enable-thread-safe-clientflag, 
> then the database provider will only allow connections to be opened
> from the thread which initializes Libgda. Otherwise there is no limitation."
>
> No, that is not it. The configure flags as follows:
>
>

>
> --with-readline \
>         --with-ssl=/usr \
>         --without-debug \
>         --enable-shared \
>         --with-embedded-server \
>         --localstatedir=/var/lib/mysql \
>         --with-unix-socket-path=/var/lib/mysql/mysql.sock \
>         --with-mysqld-user="mysql" \
>         --with-extra-charsets=all \
>         --with-big-tables \
>         --with-innodb \
>         --with-ndbcluster \
>         --enable-local-infile \
>         --enable-largefile \
>         *--enable-thread-safe-client* \
>         --disable-dependency-tracking \
>         --with-named-thread-libs="-lpthread"
>

Sorry, it was just a general remark about PostgreSQL, not about your current
settings.


>
>
> The --enable-thread-safe-client flag is set. Therefore my original
> question. How can I remove the lock that is set by function
> gda_connection_open_from_dsn so I can access the connection information from
> thread 2?
>

Normally gda_connection_open_from_dsn() does not lock the connection, using
the connection from a thread (for example running a statement) automatically
locks it, and it's being unlocked only when the object is not used anymore.

You can check anytime if you can have a lock on a connection using
gda_lockable_trylock().

Vivien
_______________________________________________
gnome-db-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-db-list

Reply via email to