static void gda_postgres_pstmt_dispose (GObject *object) { GdaPostgresPStmt *pstmt = (GdaPostgresPStmt *) object; g_return_if_fail (GDA_IS_PSTMT (pstmt)); GdaPostgresPStmtPrivate *priv = gda_postgres_pstmt_get_instance_private (pstmt); if (!priv->deallocated) { GdaConnection *cnc = NULL; cnc = g_weak_ref_get (&priv->cnc); if (cnc != NULL) { /* deallocate statement */ gchar *sql; PGresult *pg_res; sql = g_strdup_printf ("DEALLOCATE %s", priv->prep_name); pg_res = _gda_postgres_PQexec_wrap (cnc, priv->pconn, sql); g_free (sql); if (pg_res) PQclear (pg_res); g_object_unref (cnc); } priv->deallocated = TRUE; } /* free memory */ g_clear_pointer (&priv->prep_name, g_free); /* chain to parent class */ G_OBJECT_CLASS (gda_postgres_pstmt_parent_class)->dispose (object); }
static void gda_postgres_pstmt_finalize (GObject *object) { GdaPostgresPStmt *pstmt = (GdaPostgresPStmt *) object; g_return_if_fail (GDA_IS_PSTMT (pstmt)); /* deallocate statement */ gchar *sql; PGresult *pg_res; sql = g_strdup_printf ("DEALLOCATE %s", pstmt->prep_name); pg_res = _gda_postgres_PQexec_wrap (pstmt->cnc, pstmt->pconn, sql); g_free (sql); if (pg_res) PQclear (pg_res); /* free memory */ g_free (pstmt->prep_name); /* chain to parent class */ parent_class->finalize (object); }