]> err.no Git - sope/commitdiff
fixed to MySQL API
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 19 Apr 2005 15:31:42 +0000 (15:31 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 19 Apr 2005 15:31:42 +0000 (15:31 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@739 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-gdl1/GDLAccess/EOAttribute.m
sope-gdl1/MySQL4/ChangeLog
sope-gdl1/MySQL4/MySQL4Adaptor.m
sope-gdl1/MySQL4/MySQL4Channel.m
sope-gdl1/MySQL4/MySQL4Values.m
sope-gdl1/MySQL4/NSString+MySQL4.m
sope-gdl1/MySQL4/NSString+MySQL4Val.m
sope-gdl1/MySQL4/Version
sope-gdl1/MySQL4/condict.plist

index 8e2e1ac27ca1c10611697dabeb9cef5fb7ed46ac..bcfab5e030668abcdc5bd8c20b75fb50980c75ff 100644 (file)
@@ -23,7 +23,6 @@
    If not, write to the Free Software Foundation,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
-// $Id: EOAttribute.m 1 2004-08-20 10:38:46Z znek $
 
 #import "common.h"
 #import "EOAttribute.h"
index 81ae9e471e603868cf17f07b75e59489ce7bf236..b2e772ede212b1325edefc3f42426bd05f2a54ea 100644 (file)
@@ -1,3 +1,14 @@
+2005-04-19  Helge Hess  <helge.hess@skyrix.com>
+
+       * v4.5.5
+       
+       * MySQL4Values.m: added a workaround to support NSTemporaryString
+
+       * MySQL4Channel.m: fixed errno result handling
+       
+       * MySQL4Adaptor.m: do not fall back to PGHOST variable if not hostname
+         is set
+
 2005-04-13  Helge Hess  <helge.hess@opengroupware.org>
 
        * MySQL4Channel.m: finished fetching code (v4.5.4)
index 66dda5a00cf445f5ff0a3f547566e1dce5087af5..ecfa5c6e6e2f2ad546eb21e8ff666684e8b8c589 100644 (file)
 
   serverName = [[self connectionDictionary] objectForKey:@"hostName"];
 
-  if (serverName == nil) { // lookup env-variable
-    serverName = 
-      [[[NSProcessInfo processInfo] environment] objectForKey:@"PGHOST"];
-  }
+#if 0 // do not default to something, to allow for sockets?
+  if (serverName == nil)
+    serverName = @"127.0.0.1";
+#endif
   
   return [[serverName copy] autorelease];
 }
index 5531aa384086c5303067d8e0c49be398a7f9c90b..6e5b983e2e3f4cbf04badc9491b06e6c9b18d9a0 100644 (file)
@@ -171,8 +171,8 @@ static int openConnectionCount = 0;
   }
   
   if (mysql_query(self->_connection, "SET CHARACTER SET utf8") != 0) {
-    NSLog(@"ERROR: could not put MySQL4 connection into UTF-8 mode: %s",
-         mysql_error(self->_connection));
+    NSLog(@"ERROR(%s): could not put MySQL4 connection into UTF-8 mode: %s",
+         __PRETTY_FUNCTION__, mysql_error(self->_connection));
     mysql_close(self->_connection); 
     self->_connection = NULL;
     return NO;
@@ -453,9 +453,12 @@ static int openConnectionCount = 0;
   
   if ((rawRow = mysql_fetch_row(self->results)) == NULL) {
     // TODO: might need to close channel on connect exceptions
-    const char *error;
+    unsigned int merrno;
     
-    if ((error = mysql_error(self->_connection)) != NULL) {
+    if ((merrno = mysql_errno(self->_connection)) != 0) {
+      const char *error;
+      
+      error = mysql_error(self->_connection);
       [MySQL4Exception raise:@"FetchFailed" 
                       format:@"%@",[NSString stringWithUTF8String:error]];
       return nil;
@@ -544,9 +547,10 @@ static int openConnectionCount = 0;
   *(&result) = YES;
   
   if (_expression == nil) {
-    [NSException raise:@"InvalidArgumentException"
-                format:@"parameter for evaluateExpression: "
-                        @"must not be null (channel=%@)", self];
+    return [NSException exceptionWithName:@"InvalidArgumentException"
+                        reason:
+                          @"parameter for evaluateExpression: must not be null"
+                        userInfo:nil];
   }
   
   sql = [[_expression mutableCopy] autorelease];
@@ -589,7 +593,7 @@ static int openConnectionCount = 0;
   
   if (isDebuggingEnabled)
     NSLog(@"%@ SQL: %@", self, sql);
-
+  
   /* reset environment */
   
   self->isFetchInProgress = NO;
@@ -602,6 +606,8 @@ static int openConnectionCount = 0;
     const char *error;
     
     error = mysql_error(self->_connection);
+    if (isDebuggingEnabled)
+      NSLog(@"%@   ERROR: %s", self, error);
     
     return [MySQL4Exception exceptionWithName:@"ExecutionFailed" 
                             reason:[NSString stringWithUTF8String:error]
@@ -611,17 +617,28 @@ static int openConnectionCount = 0;
   /* fetch */
   
   if ((self->results = mysql_use_result(self->_connection)) != NULL) {
+    if (isDebuggingEnabled)
+      NSLog(@"%@   query has results, entering fetch-mode.", self);
     self->isFetchInProgress = YES;
   }
   else {
     /* error _OR_ statement without result-set */
-    const char *error;
-    
-    if ((error = mysql_error(self->_connection)) != NULL) {
+    unsigned int merrno;
+
+    if ((merrno = mysql_errno(self->_connection)) != 0) {
+      const char *error;
+      
+      if (isDebuggingEnabled)
+        NSLog(@"%@   cannot use result: '%s'", self, error);
+      
+      error = mysql_error(self->_connection);
       return [MySQL4Exception exceptionWithName:@"FetchFailed" 
                               reason:[NSString stringWithUTF8String:error]
                               userInfo:nil];
     }
+    
+    if (isDebuggingEnabled)
+      NSLog(@"%@   query has no results.", self);
   }
   
   if (delegateRespondsTo.didEvaluateExpression)
@@ -642,6 +659,8 @@ static int openConnectionCount = 0;
     return NO;
   if ([n isEqualToString:@"EODelegateRejects"])
     return NO;
+
+  NSLog(@"ERROR eval '%@': %@", _sql, e);
   
   [e raise];
   return NO;
index 5bf7dbb623972ae26140fe5d747936805835a3d8..f7395c729665e79d1b1358ed69233f1b23ab2ac9 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "MySQL4Values.h"
 #include "common.h"
+#include <mysql/mysql.h>
 
 @implementation MySQL4DataTypeMappingException
 
 @implementation NSObject(MySQL4Values)
 
 - (id)initWithMySQL4Type:(int)_type value:(const void *)_v length:(int)_len {
-  [self release];
+  /* Note: called for NSTemporaryString! */
+
+  if (![self respondsToSelector:@selector(initWithUTF8String:)]) {
+    if (_v == NULL) {
+      [self release];
+      return nil;
+    }
+    NSLog(@"WARNING(%s): falling back to NSString for MySQL4 value!",
+          __PRETTY_FUNCTION__);
+    
+    [self release];
+    return [[NSString alloc] initWithMySQL4Type:_type value:_v length:_len];
+  }
 
-  NSLog(@"WARNING(%s): falling back to NSString for MySQL4 value!",
-       __PRETTY_FUNCTION__);
+  /* we assume NSTemporaryString here */
   
-  return [[NSString alloc] initWithMySQL4Type:_type value:_v length:_len];
+  switch (_type) {
+  case FIELD_TYPE_BLOB:
+  case FIELD_TYPE_TINY_BLOB:
+  case FIELD_TYPE_MEDIUM_BLOB:
+  case FIELD_TYPE_LONG_BLOB:
+    ; /* fall through */
+    
+  default:
+    /* we always fallback to the UTF-8 string ... */
+    return [(NSString *)self initWithUTF8String:_v];
+  }
 }
 
 #if 0
index dbaab70883692dab92431e5d68474122429b3bcf..e9b9e8ada81708fb552f9af094103c3daf33ff14 100644 (file)
@@ -27,9 +27,9 @@
 #  include <objc/gc.h>
 #endif
 
-#import <objc/objc-api.h>
+#include "NSString+MySQL4.h"
 #include "common.h"
-#import "NSString+MySQL4.h"
+#import <objc/objc-api.h>
 
 @implementation NSString(MySQL4MiscStrings)
 
index 47a56e074eb3624abf8211f432781aa7cfce3a04..df4c1199fc8e37b975e08ce4287eedead3933b88 100644 (file)
@@ -34,6 +34,7 @@
 static Class EOExprClass = Nil;
 
 - (id)initWithMySQL4Type:(int)_type value:(const void *)_v length:(int)_len {
+  // Note: never used on lF (NSTemporaryString!)
   if (_v == NULL) {
     [self release];
     return nil;
index 23e43c1d7a12e51e3fe62b78a59e8d7238168e72..5c20787ee7a1a500372bd205db1d6ac2d91a2082 100644 (file)
@@ -1,3 +1,3 @@
 # Version file
 
-SUBMINOR_VERSION:=4
+SUBMINOR_VERSION:=5
index 250e134f33b8aefead50888875dca26a3df087b5..8e31a9bdb89f1923ebdc5ec9243683aad8b9be63 100644 (file)
@@ -1,3 +1,6 @@
 {
-  databaseName = "Test.sqldb";
+  hostName     = "127.0.0.1";
+  userName     = "OGo";
+  password     = "OGo";
+  databaseName = "OGo";
 }