[Asterisk-code-review] cdr pgsql, cel pgsql: Store maximum buffer size to prevent r... (asterisk[master])

Joshua Colp asteriskteam at digium.com
Wed May 13 15:17:48 CDT 2015


Joshua Colp has submitted this change and it was merged.

Change subject: cdr_pgsql, cel_pgsql: Store maximum buffer size to prevent reallocation
......................................................................


cdr_pgsql, cel_pgsql: Store maximum buffer size to prevent reallocation

The code previously used a fixed size of 512 for the SQL
queries. Depending on the size this may require it to grow.

This change makes it so if the buffer size does grow the size
is stored and next time the buffer will be large enough.

Change-Id: I55385899f1c06dee47e4274c2d21538037b2d895
---
M cdr/cdr_pgsql.c
M cel/cel_pgsql.c
2 files changed, 19 insertions(+), 0 deletions(-)

Approvals:
  Ashley Sanders: Looks good to me, but someone else must approve
  Joshua Colp: Looks good to me, approved; Verified



diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c
index 310411c..1941205 100644
--- a/cdr/cdr_pgsql.c
+++ b/cdr/cdr_pgsql.c
@@ -75,6 +75,7 @@
 static char *tz;
 
 static int connected = 0;
+/* Optimization to reduce number of memory allocations */
 static int maxsize = 512, maxsize2 = 512;
 static time_t connect_time = 0;
 static int totalrecords = 0;
@@ -453,6 +454,15 @@
 			records++;
 		}
 		PQclear(result);
+
+		/* Next time, just allocate buffers that are that big to start with. */
+		if (ast_str_strlen(sql) > maxsize) {
+			maxsize = ast_str_strlen(sql);
+		}
+		if (ast_str_strlen(sql2) > maxsize2) {
+			maxsize2 = ast_str_strlen(sql2);
+		}
+
 		ast_free(sql);
 		ast_free(sql2);
 	}
diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index 2d7f0df..c5c4fa9 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -71,6 +71,7 @@
 static char *table;
 
 static int connected = 0;
+/* Optimization to reduce number of memory allocations */
 static int maxsize = 512, maxsize2 = 512;
 static int usegmtime = 0;
 
@@ -372,6 +373,14 @@
 		}
 		PQclear(result);
 
+		/* Next time, just allocate buffers that are that big to start with. */
+		if (ast_str_strlen(sql) > maxsize) {
+			maxsize = ast_str_strlen(sql);
+		}
+		if (ast_str_strlen(sql2) > maxsize2) {
+			maxsize2 = ast_str_strlen(sql2);
+		}
+
 ast_log_cleanup:
 		ast_free(sql);
 		ast_free(sql2);

-- 
To view, visit https://gerrit.asterisk.org/415
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I55385899f1c06dee47e4274c2d21538037b2d895
Gerrit-PatchSet: 2
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Rodrigo Ramirez Norambuena <decipher.hk at gmail.com>
Gerrit-Reviewer: Ashley Sanders <asanders at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>



More information about the asterisk-code-review mailing list