From fddc6adf8d3d1581f041984bd475ff18336a3f4e Mon Sep 17 00:00:00 2001
From: Aron Podrigal <aronp@guaranteedplus.com>
Date: Thu, 18 Mar 2021 17:13:01 -0500
Subject: [PATCH] [mod_pgsql] Use PQcmdTuples() to get number of effected rows
 to support UPDATE and INSERT without RETURNING.

---
 src/mod/databases/mod_pgsql/mod_pgsql.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/mod/databases/mod_pgsql/mod_pgsql.c b/src/mod/databases/mod_pgsql/mod_pgsql.c
index f7c2983f91..8c24cf9fce 100644
--- a/src/mod/databases/mod_pgsql/mod_pgsql.c
+++ b/src/mod/databases/mod_pgsql/mod_pgsql.c
@@ -633,6 +633,7 @@ error:
 
 switch_status_t pgsql_next_result_timed(switch_pgsql_handle_t *handle, switch_pgsql_result_t **result_out, int msec)
 {
+	char *affected_rows = NULL;
 	switch_pgsql_result_t *res;
 	switch_time_t start;
 	switch_time_t ctime;
@@ -747,6 +748,11 @@ switch_status_t pgsql_next_result_timed(switch_pgsql_handle_t *handle, switch_pg
 
 	res->result = PQgetResult(handle->con);
 	if (res->result) {
+		affected_rows = PQcmdTuples(res->result);
+		if (!zstr(affected_rows)) {
+			handle->affected_rows = atoi(affected_rows);
+		}
+
 		*result_out = res;
 		res->status = PQresultStatus(res->result);
 		switch (res->status) {
@@ -757,7 +763,6 @@ switch_status_t pgsql_next_result_timed(switch_pgsql_handle_t *handle, switch_pg
 		case PGRES_TUPLES_OK:
 		{
 			res->rows = PQntuples(res->result);
-			handle->affected_rows = res->rows;
 			res->cols = PQnfields(res->result);
 		}
 		break;