diff options
author | mtvee <emptyvee@gmail.com> | 2009-05-18 06:51:08 +0000 |
---|---|---|
committer | mtvee <emptyvee@gmail.com> | 2009-05-18 06:51:08 +0000 |
commit | 570bd13276ebca100befb65b273e7ba51e578b1a (patch) | |
tree | e695930a6895da3801b32dfb70f7becafe556586 /Source/CMMCPConnection.m | |
parent | 61da30eb923d774336ad10d252d4d0790999f33f (diff) | |
download | sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.tar.gz sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.tar.bz2 sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.zip |
- hide 'rename' context menu if selection is not a table
- added methods to CMMCPConnection to determine server major,minor,release version
Diffstat (limited to 'Source/CMMCPConnection.m')
-rw-r--r-- | Source/CMMCPConnection.m | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/Source/CMMCPConnection.m b/Source/CMMCPConnection.m index 99b72e42..bfd30062 100644 --- a/Source/CMMCPConnection.m +++ b/Source/CMMCPConnection.m @@ -29,9 +29,26 @@ static jmp_buf pingTimeoutJumpLocation; static void forcePingTimeout(int signalNumber); -@implementation CMMCPConnection +@interface CMMCPConnection(hidden) +- (void)getServerVersionString; +@end + +@implementation CMMCPConnection(hidden) +- (void)getServerVersionString +{ + if( mConnected ) { + CMMCPResult *theResult; + theResult = [self queryString:@"SHOW VARIABLES WHERE Variable_name = 'version'"]; + if ([theResult numOfRows]) + [theResult dataSeek:0]; + serverVersionString = [NSString stringWithString:[[theResult fetchRowAsDictionary] objectForKey:@"Value"]]; + } +} +@end +@implementation CMMCPConnection + /* * Override the normal init methods, extending them to also init additional details. */ @@ -39,6 +56,7 @@ static void forcePingTimeout(int signalNumber); { [self initSPExtensions]; self = [super init]; + serverVersionString = nil; return self; } - (id) initToHost:(NSString *) host withLogin:(NSString *) login password:(NSString *) pass usingPort:(int) port @@ -123,9 +141,64 @@ static void forcePingTimeout(int signalNumber); if (connectionSocket) [connectionSocket release]; connectionSocket = nil; + if( serverVersionString != nil ) { + serverVersionString = nil; + } + [self stopKeepAliveTimer]; } +/* + * return the server major version or -1 on fail + */ +- (int)serverMajorVersion +{ + + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + return [[[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:0] intValue]; + } + } + return -1; +} + +/* + * return the server minor version or -1 on fail + */ +- (int)serverMinorVersion +{ + + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + return [[[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:1] intValue]; + } + } + return -1; +} + +/* + * return the server release version or -1 on fail + */ +- (int)serverReleaseVersion +{ + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + NSString *s = [[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:2]; + return [[[s componentsSeparatedByString:@"-"] objectAtIndex:0] intValue]; + } + } + return -1; +} + /* * Reconnect to the currently "active" - but possibly disconnected - connection, using the |