[SR-Dev] git:janakj/postgres: - smaller optimization in postgres module

Jan Janak jan at iptel.org
Wed Feb 18 01:26:19 CET 2009


Module: sip-router
Branch: janakj/postgres
Commit: 51b3f28f8da399cac3931f34296c6f03d84ac303
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=51b3f28f8da399cac3931f34296c6f03d84ac303

Author: Henning Westerholt <henning.westerholt at 1und1.de>
Committer: Henning Westerholt <henning.westerholt at 1und1.de>
Date:   Fri Feb  8 13:54:15 2008 +0000

- smaller optimization in postgres module


git-svn-id: https://openser.svn.sourceforge.net/svnroot/openser/trunk@3667 689a6050-402a-0410-94f2-e92a70836424

---

 modules/db_postgres/km_db_res.c |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/modules/db_postgres/km_db_res.c b/modules/db_postgres/km_db_res.c
index 43b1afb..7cdec54 100644
--- a/modules/db_postgres/km_db_res.c
+++ b/modules/db_postgres/km_db_res.c
@@ -181,7 +181,7 @@ int db_postgres_get_columns(const db_con_t* _h, db_res_t* _r)
 int db_postgres_convert_rows(const db_con_t* _h, db_res_t* _r, int row_start,
 		int row_count)
 {
-	int row, cols, col;
+	int row, col;
 	char **row_buf, *s;
 	int len, fetch_count;
 
@@ -215,16 +215,13 @@ int db_postgres_convert_rows(const db_con_t* _h, db_res_t* _r, int row_start,
 	/* Save the number of rows in the current fetch */
 	RES_ROW_N(_r) = row_count;
 
-	/* Save the number of columns in the result query */
-	cols = RES_COL_N(_r);
-
 	/*
 	 * Allocate an array of pointers one per column. It that will be used to hold
 	 * the address of the string representation of each column.
 	 */
-	len = sizeof(char *) * cols;
+	len = sizeof(char *) * RES_COL_N(_r);
 	row_buf = (char **)pkg_malloc(len);
-	LM_DBG("allocate for %d columns %d bytes in row buffer at %p\n", cols, len, row_buf);
+	LM_DBG("allocate for %d columns %d bytes in row buffer at %p\n", RES_COL_N(_r), len, row_buf);
 	if (!row_buf) {
 		LM_ERR("no private memory left\n");
 		return -1;
@@ -244,7 +241,7 @@ int db_postgres_convert_rows(const db_con_t* _h, db_res_t* _r, int row_start,
 
 	fetch_count = 0;
 	for(row = row_start; row < (row_start + row_count); row++) {
-		for(col = 0; col < cols; col++) {
+		for(col = 0; col < RES_COL_N(_r); col++) {
 				/*
 				 * The row data pointer returned by PQgetvalue points to storage
 				 * that is part of the PGresult structure. One should not modify
@@ -274,7 +271,7 @@ int db_postgres_convert_rows(const db_con_t* _h, db_res_t* _r, int row_start,
 		if(db_postgres_convert_row(_h, _r, &(RES_ROWS(_r)[fetch_count]), row_buf)<0){
 			LM_ERR("failed to convert row #%d\n",  row);
 			RES_ROW_N(_r) = row - row_start;
-			for (col=0; col<cols; col++) {
+			for (col = 0; col < RES_COL_N(_r); col++) {
 				LM_DBG("freeing row_buf[%d] at %p\n", col, row_buf[col]);
 				pkg_free(row_buf[col]);
 			}
@@ -301,7 +298,7 @@ int db_postgres_convert_rows(const db_con_t* _h, db_res_t* _r, int row_start,
 		 * that pg_free_rows(), pg_free_row() or pg_free_result() is eventually
 		 * called.
 		 */
-		for (col=0; col<cols; col++) {
+		for (col = 0; col < RES_COL_N(_r); col++) {
 			switch (RES_TYPES(_r)[col]) {
 				case DB_STRING:
 				case DB_STR:
@@ -359,8 +356,7 @@ int db_postgres_convert_row(const db_con_t* _h, db_res_t* _r, db_row_t* _row,
 		LM_ERR("no private memory left\n");
 		return -1;
 	}
-	LM_DBG("allocate %d bytes for row values at %p\n", sizeof(db_val_t) * RES_COL_N(_r),
-		ROW_VALUES(_row));
+	LM_DBG("allocate %d bytes for row values at %p\n", len, ROW_VALUES(_row));
 	ROW_N(_row) = RES_COL_N(_r);
 	memset(ROW_VALUES(_row), 0, len);
 




More information about the sr-dev mailing list