Re: [gnome-db] Threads.

Vivien Malerba <[email protected]>
Newsgroups gmane.comp.gnome.db
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.