Thanks, I'll take a look. Regards, Sasmit Utkarsh +91-7674022625
On Wed, Jan 17, 2024 at 4:12 AM Merlin Moncure <mmonc...@gmail.com> wrote: > On Tue, Jan 16, 2024 at 9:10 AM Sasmit Utkarsh <utkarshsas...@gmail.com> > wrote: > >> Hi Merlin et al. >> >> I have tried to have the above change added in the missing places. Still, >> I see the below leaks reported by the address sanitizer. Please see >> the attachments for the leak reported and the function definition updated. >> Not sure for PQexecPrepared if we call PQclear(res) for cleaning up as >> well. let me know if you need any more information >> > > You have many other leaks. See code below, you are making up to thee > sequential calls to create a result before calling clear. *All *calls > creating and returning returning PGresult have to be cleared before the > pointer is reused. > > merlin > > > > LOG_DEBUG("%s() conninfo=%s",__func__,conninfo); > > if(is_shadow_db) > { > shadow_db_conn = PQconnectdb(shadow_db_conn_info); > if ( PQstatus(shadow_db_conn ) != CONNECTION_OK ) > { > LOG_ERROR("Connection to shadow database failed! %s", > PQerrorMessage(conn)); > PQfinish(shadow_db_conn); > exit(1); > } > *res *= PQexec(shadow_db_conn, "SET bytea_output = 'escape'"); > LOG_DEBUG("%s() Connection to shadow_shc_data database > SUCCESSFUL",__func__); > // execute_stored_procedure(shadow_db_conn); > } > > conn = PQconnectdb(conninfo); > if ( PQstatus(conn) != CONNECTION_OK ) { > LOG_ERROR("Connection to database failed! %s", > PQerrorMessage(conn)); > PQfinish(conn); > exit(1); > } else { > *res =* PQexec(conn, "SET bytea_output = 'escape'"); > LOG_DEBUG("%s() Connection to shc_data database > SUCCESSFUL",__func__); > } > > *res *= PQexec(conn, "START TRANSACTION"); > if (PQresultStatus(res) != PGRES_COMMAND_OK) > { > LOG_ERROR("START TRANSACTION failed: %s", PQerrorMessage(conn)); > SQL_exit_nicely(conn,res); > } > PQclear(res); > >