Revision
15672
Author
anthm
Date
2009-11-25 14:55:19 -0600 (Wed, 25 Nov 2009)

Log Message

improve chunked sql transaction submission

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_core_sqldb.c (15671 => 15672)


--- freeswitch/trunk/src/switch_core_sqldb.c	2009-11-25 19:59:26 UTC (rev 15671)
+++ freeswitch/trunk/src/switch_core_sqldb.c	2009-11-25 20:55:19 UTC (rev 15672)
@@ -366,7 +366,7 @@
 	char *p, *s, *e;
 	int chunk_count;
 	switch_size_t len;
-	
+
 	switch_assert(chunk_size);
 
 	if (err) *err = NULL;
@@ -391,23 +391,25 @@
 			p = e;
 		}
 		
-		while (p > s && *p != ';') {
+		while (p > s) {
+			if (*p == '\n' && *(p-1) == ';') {
+				*p = '\0';
+				*(p-1) = '\0';
+				break;
+			}
+			
 			p--;
 		}
 
-		if (p) {
-			*p = '\0';
-			while(p < e && (*p == '\n' || *p == ' ')) {
-				p++;
-			}
-		}
+		if (p <= s) break;
 		
+		
 		status = switch_cache_db_execute_sql_real(dbh, s, err);
 		if (status != SWITCH_STATUS_SUCCESS || (err && *err)) {
 			break;
 		}
 
-		s = p + 1;
+		s = p;
 	
 	}
 
@@ -422,14 +424,9 @@
 
 
 	switch (dbh->type) {
-	case SCDB_TYPE_CORE_DB:
-		{
-			status = switch_cache_db_execute_sql_real(dbh, sql, err);
-		}
-		break;
 	default:
 		{
-			status = switch_cache_db_execute_sql_chunked(dbh, (char *)sql, 32000, err);
+			status = switch_cache_db_execute_sql_chunked(dbh, (char *)sql, 32768, err);
 		}
 		break;
 	}