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);

Reply via email to