Re: [Mysql-cocoa-users] Method to expose MYSQL pointer
Brought to you by:
sergecohen
|
From: Aaron J. <aj...@ed...> - 2004-09-07 13:28:27
|
Oh, I forgot to mention that to do this I had to build a custom version
of SMySQL that included libmysql's errmsg.h header file. It would
probably be a good idea to do this in the main distribution so that you
can test against various errors returned from getLastErrorID.
While we're talking about that, I also wondered why the version of
libmysqlcient linked against by SMySQL is so old (4.0.14) as well as
its headers, which mention server version 4.0.5. I linked against
fink's version (4.0.17) and that worked great.
Aaron
On Sep 7, 2004, at 8:24 AM, Aaron Jacobs wrote:
> Serge,
>
> That's fair enough - you're right about the data encapsulation aspect.
> In fact, I wasn't able to get the reconnect parameter to work at all
> - for some reason it would work when I linked directly against
> libmysqlclient, but not when I used SMySQL, even if I put the proper
> setting right in the SMySQL code and built SMySQL myself with the same
> version of libmysqlclient that worked on its own. I'm still not sure
> why this is, but for future reference (in case anybody else needs it)
> here is what I did. I just made a category on MCPConnection with one
> extra function:
>
> - (MCPResult *)queryStringWithoutReconnect:(NSString *)query
> {
> static BOOL disconnected = NO;
>
> if (disconnected)
> {
> NSLog(@"Connection disconnected!");
> return nil;
> }
>
> MCPResult *result = [self queryString:query];
>
> if (([self getLastErrorID] == CR_SERVER_GONE_ERROR) || ([self
> getLastErrorID] == CR_SERVER_LOST))
> {
> NSLog(@"Connection disconnected!");
> disconnected = YES;
> }
>
> return result;
> }
>
>
> There are definitely more elegant ways to do this, but all I needed
> for my particular application was for no more queries to happen under
> any circumstances once the connection was lost.
>
> Serge, you might consider making a method that allows you to set the
> reconnect option and then use code similar to the above in the
> queryString: method to make sure that a reconnect doesn't occur if not
> desired. The reason that this is a big deal is that when
> libmysqlclient reconnects it loses any session variables you had set
> and, more importantly, it loses locks and transactions that the
> application will not be aware are gone.
>
> Aaron
>
>
>
> On Sep 6, 2004, at 4:21 PM, Serge Cohen wrote:
>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Hi Aaron;
>>
>> Indeed I'd rather not provide the pointer to the connection
>> directly... just because this breaks the object concept and if some
>> one deadly needs it, the derivation solution (that you use) is still
>> there.
>> Instead I can propose to have an interface to set this kind of
>> parameters directly from the object.
>> I have to check exactly what should be 'settable' and which interface
>> will be correct with that (trying to avoid having too many functions
>> for that, maybe some kind of -setParameter:forKey: message).
>>
>> If other users are similar requirements or have preferences
>> concerning the interface to these kind of setting, please answer (to
>> the list so - - -if necessary- we can have a discution on that).
>>
>> Serge.
>>
>> PS: Aaron, sorry I sent you the mail from a wrong mail account,
>> please if you answer me use the sourceforge mail account, and don't
>> reply directly to the previous mail. Thanks.
>>
>> Le 4 sept. 04, à 03:47, Aaron Jacobs a écrit :
>>
>>> I've run across a situation where it would be very unfortunate for
>>> my application to automatically and silently re-establish its
>>> connection to the MySQL server if it is lost. The only way I've
>>> found to disable this behavior is to set the 'reconnect' member of
>>> the MYSQL structure to zero, rather than the default of one. So
>>> what I need is a method in MCPConnection that simply returns
>>> mConnection so that I can set the flag. For now I'll make a
>>> subclass of MCPConnection since mConnection is protected, but Serge
>>> do you think it would be possible to get such a method officially
>>> supported?
>>>
>>> Thanks,
>>> Aaron
>>>
>> *******************************************
>> Serge Cohen
>>
>> GPG Key ID: 9CBB58FB
>> *******************************************
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.2.3 (Darwin)
>>
>> iD8DBQFBPNTy5EPeG5y7WPsRAtTMAJ94ccaejFmam0EZIit++eoYd9mWTQCgkAKs
>> 26hTqH7QqWdTFQGyIO8bZ34=
>> =IARO
>> -----END PGP SIGNATURE-----
>>
>>
>>
>> -------------------------------------------------------
>> This SF.Net email is sponsored by BEA Weblogic Workshop
>> FREE Java Enterprise J2EE developer tools!
>> Get your free copy of BEA WebLogic Workshop 8.1 today.
>> http://ads.osdn.com/?ad_idP47&alloc_id808&op=click
>> _______________________________________________
>> Mysql-cocoa-users mailing list
>> Mys...@li...
>> https://lists.sourceforge.net/lists/listinfo/mysql-cocoa-users
|