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

Reply via email to