/* MODIFY AS NEEDED */ static void process( char *edges_sql, int64_t *source_vertices, size_t size_source_verticesArr, int64_t sink_vertex, bool directed, General_path_element_t **result_tuples, size_t *result_count) { pgr_SPI_connect(); PGR_DBG("Load data"); pgr_basic_edge_t *edges = NULL; size_t total_tuples = 0; pgr_get_basic_edges(edges_sql, &edges, &total_tuples); if (total_tuples == 0) { PGR_DBG("No edges found"); (*result_count) = 0; (*result_tuples) = NULL; pgr_SPI_finish(); return; } PGR_DBG("Total %ld tuples in query:", total_tuples); PGR_DBG("Starting processing"); clock_t start_t = clock(); char *err_msg = NULL; do_pgr_edge_disjoint_paths_many_to_one( edges, total_tuples, source_vertices, size_source_verticesArr, sink_vertex, directed, result_tuples, result_count, &err_msg); time_msg("processing edge disjoint paths", start_t, clock()); PGR_DBG("Returning %ld tuples\n", *result_count); PGR_DBG("Returned message = %s\n", err_msg); free(err_msg); pfree(edges); pgr_SPI_finish(); }
/* MODIFY AS NEEDED */ static void process( char *edges_sql, bool directed, pgr_basic_edge_t **result_tuples, size_t *result_count) { pgr_SPI_connect(); PGR_DBG("Load data"); pgr_basic_edge_t *edges = NULL; size_t total_tuples = 0; pgr_get_basic_edges(edges_sql, &edges, &total_tuples); if (total_tuples == 0) { PGR_DBG("No edges found"); (*result_count) = 0; (*result_tuples) = NULL; pgr_SPI_finish(); return; } PGR_DBG("Total %ld tuples in query:", total_tuples); PGR_DBG("Starting processing"); clock_t start_t = clock(); char *err_msg = NULL; do_pgr_maximum_cardinality_matching( edges, directed, total_tuples, result_tuples, result_count, &err_msg); time_msg("processing max flow", start_t, clock()); PGR_DBG("Returning %ld tuples\n", *result_count); PGR_DBG("Returned message = %s\n", err_msg); free(err_msg); pfree(edges); pgr_SPI_finish(); }