diff options
author | Max <post@wickenrode.com> | 2017-01-10 11:48:53 +0100 |
---|---|---|
committer | Max <post@wickenrode.com> | 2017-01-10 11:48:53 +0100 |
commit | 164af9b85c6bf890aa0c7631538827bec1741e08 (patch) | |
tree | d1f31fc58c34cb1b03bd6f1bb7149d08a33cf382 /Frameworks/SPMySQLFramework/Source | |
parent | 95c29491c8adab69a2b1d2975af4439842184059 (diff) | |
download | sequelpro-164af9b85c6bf890aa0c7631538827bec1741e08.tar.gz sequelpro-164af9b85c6bf890aa0c7631538827bec1741e08.tar.bz2 sequelpro-164af9b85c6bf890aa0c7631538827bec1741e08.zip |
Make Max Packet Size detection more robust (issue with recent sphinx versions) #2653
Diffstat (limited to 'Frameworks/SPMySQLFramework/Source')
-rw-r--r-- | Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Max Packet Size.m | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Max Packet Size.m b/Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Max Packet Size.m index dc453624..08ed03cf 100644 --- a/Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Max Packet Size.m +++ b/Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Max Packet Size.m @@ -97,13 +97,15 @@ */ - (void)_updateMaxQuerySize { - // Determine which query to run based on server version NSString *packetQueryString; + NSUInteger resultCol; if ([self serverMajorVersion] == 3) { packetQueryString = @"SHOW VARIABLES LIKE 'max_allowed_packet'"; + resultCol = 1; } else { packetQueryString = @"SELECT @@global.max_allowed_packet"; + resultCol = 0; } // Make a standard query to the server to retrieve the information @@ -115,17 +117,16 @@ [result setReturnDataAsStrings:YES]; // Get the maximum size string - NSString *maxQuerySizeString = nil; - if ([self serverMajorVersion] == 3) { - maxQuerySizeString = [[result getRowAsArray] objectAtIndex:1]; - } else { - maxQuerySizeString = [[result getRowAsArray] objectAtIndex:0]; - } + NSString *maxQuerySizeString = [[result getRowAsArray] objectAtIndex:resultCol]; - // If a valid size was returned, update the instance variable - if (maxQuerySizeString) { - maxQuerySize = (NSUInteger)[maxQuerySizeString integerValue]; + NSInteger _maxQuerySize = maxQuerySizeString ? [maxQuerySizeString integerValue] : 0; + //see #2653 + if(_maxQuerySize < 34) { // the max_allowed_packet query above has at least 34 bytes and succeeded, so any value less than that would be nonsense + NSLog(@"Query for max_allowed_packet returned invalid or implausible value: %ld (raw value: %@) (on %@)", _maxQuerySize, maxQuerySizeString, [self serverVersionString]); + return; } + // If a valid size was returned, update the instance variable + maxQuerySize = (NSUInteger)_maxQuerySize; } /** |