On Fri, 2009-07-24 at 14:27 +0200, Vivien Malerba wrote:

> 
> 
> 
> 2009/7/24 Bas Driessen <[email protected]>
> 
>         
>         On Fri, 2009-07-24 at 14:12 +0200, Vivien Malerba wrote:
>         
>         > 
>         > 
>         > 2009/7/24 Bas Driessen <[email protected]>
>         > 
>         >         
>         >         
>         >         
>         >         On Fri, 2009-07-24 at 13:51 +0200, Vivien Malerba
>         >         wrote:
>         >         
>         >         > 
>         >         > 
>         >         > 2009/7/24 Bas Driessen <[email protected]>
>         >         > 
>         >         >         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?
>         >         >         
>         >         > 
>         >         > 
>         >         > The same kind of limitation also applies to
>         >         > PostgreSQL which is usually not compiled with
>         >         > thread support in client libraries. The
>         >         > discrepancies between databases' client libraries
>         >         > regarding threads have led me to create the
>         >         > GDA_CONNECTION_OPTIONS_THREAD_SAFE flag (in 4.1,
>         >         > not in 4.0) where a connection can be used by any
>         >         > thread, regardless of the thread which created the
>         >         > connection (in fact a thread is created per
>         >         > connection and the user threads synchronize with
>         >         > that thread when running statements, it relies on
>         >         > the GdaThreadWrapper object).
>         >         
>         >         
>         >         
>         >         My previous message crossed this one. So if I
>         >         understand correctly,  in fact my Postgresql is NOT
>         >         thread safe and therefore it is working and the
>         >         MySQL IS thread safe and therefore it is "hanging"
>         >         on a lock. 
>         > 
>         > 
>         > It is working in PostgreSQL because PostgreSQL has been
>         > compiled with the thread safe flag, and it's not in MySQL
>         > because MySQL has not been compiled with that feature (in
>         > that case the provider prevents usage from a thread
>         > different than the one which created the connection, and
>         > sometimes even prevents the usage from a thread which did
>         > not create the provider itself, it depends on the client
>         > libraries limitations).
>         >  
>         > 
>         >         
>         >         
>         >         How/where can I set this
>         >         GDA_CONNECTION_OPTIONS_THREAD_SAFE flag in 4.1? 
>         > 
>         > 
>         > It's one of the flags which can be passed as the options
>         > argument to gda_connection_open_from...().
>         >  
>         > 
>         >         
>         >         
>         >         Is there any workaround/solution in 4.0? Any chance
>         >         to add this flag in 4.0 or will that break any API
>         >         rules etc? 
>         > 
>         > 
>         > It would be a lot of work to add it back as many things have
>         > changed in 4.1, and I don't consider it as a bug fix (which
>         > is what goes into 4.0 now) but as a new feature. Anyway, you
>         > can make a copy of the GdaThreadWrapper object and use it
>         > directly in your code for the time being.
>         > 
>         
>         Ok, understand. In that case I  should let my "4.0 obsession"
>         go and start working with the 4.1 tree. As explained before,
>         it is convenient to have stuff in 4.0 as the big Linux distros
>         ship that release now.  Will compile everything up with 4.1
>         using the new GDA_CONNECTION_OPTIONS_THREAD_SAFE flag and go
>         from there. Thanks for your help today.
> 
> I understand your concerns here, and I still think it's possible to
> use the 4.0 and  "do the job yourself"  regarding the threads
> handling, and the GdaThreadWrapper object can help you in this regard.
> 
The GDA_CONNECTION_OPTIONS_THREAD_SAFE works OK so far in libgda master.
Question. How can I pass on 2 options with GdaConnectionOptions?

If I use the threads I can use:

connection = gda_connection_open_from_dsn("stocksql", NULL,
GDA_CONNECTION_OPTIONS_THREAD_SAFE, NULL);

How about if I want to use both the GDA_CONNECTION_OPTIONS_THREAD_SAFE
as the GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE option. How
would I pass that on in gda_connection_open_from_dsn?

Thanks,
Bas.



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

Reply via email to