static void process(char* edges_sql, bool *result_bool) { pgr_SPI_connect(); PGR_DBG("Load data"); Pgr_edge_xy_t *edges = NULL; size_t total_edges = 0; pgr_get_edges_xy(edges_sql, &edges, &total_edges); if (total_edges == 0) { PGR_DBG("No edges found"); (*result_bool) = true; pfree(edges); pgr_SPI_finish(); return; } PGR_DBG("Total %ld tuples in query:", total_edges); size_t i; for (i = 0; i < total_edges; ++i) { PGR_DBG("id = %li \t source = %li \t target = %ld cost = %lf reverse_cost = %lf", edges[i].id, edges[i].source, edges[i].target, edges[i].cost, edges[i].reverse_cost); PGR_DBG(" (x1,y1) = (%.32lf ,%.32lf) (x2,y2) = (%.32lf,.%.32lf)", edges[i].x1, edges[i].y1, edges[i].x2, edges[i].y2); } PGR_DBG("Starting processing"); char *err_msg = NULL; char *log_msg = NULL; (*result_bool) = do_pgr_testXYedges( edges, total_edges, &log_msg, &err_msg); pfree(edges); PGR_DBG("Returned log message = %s\n", log_msg); if (log_msg) { elog(DEBUG1, "%s", log_msg); free(log_msg); } PGR_DBG("Returned error message = %s\n", err_msg); if (err_msg) { pgr_SPI_finish(); elog(ERROR, "%s", err_msg); free(err_msg); } pgr_SPI_finish(); }
static void process(char* edges_sql, int64_t start_vid, int64_t end_vid, bool directed, int heuristic, double factor, double epsilon, bool only_cost, General_path_element_t **result_tuples, size_t *result_count) { check_parameters(heuristic, factor, epsilon); pgr_SPI_connect(); PGR_DBG("Load data"); Pgr_edge_xy_t *edges = NULL; size_t total_edges = 0; pgr_get_edges_xy(edges_sql, &edges, &total_edges); PGR_DBG("Total %ld edges in query:", total_edges); if (total_edges == 0) { PGR_DBG("No edges found"); (*result_count) = 0; (*result_tuples) = NULL; pgr_SPI_finish(); return; } PGR_DBG("Starting processing"); char* log_msg = NULL; char* notice_msg = NULL; char* err_msg = NULL; clock_t start_t = clock(); do_pgr_astarManyToMany( edges, total_edges, &start_vid, 1, &end_vid, 1, directed, heuristic, factor, epsilon, only_cost, true, result_tuples, result_count, &log_msg, ¬ice_msg, &err_msg); if (only_cost) { time_msg("processing pgr_astarCost(one to one)", start_t, clock()); } else { time_msg("processing pgr_astar(one to one)", start_t, clock()); } if (err_msg && (*result_tuples)) { pfree(*result_tuples); (*result_count) = 0; (*result_tuples) = NULL; } pgr_global_report(log_msg, notice_msg, err_msg); if (log_msg) pfree(log_msg); if (notice_msg) pfree(notice_msg); if (err_msg) pfree(err_msg); if (edges) pfree(edges); pgr_SPI_finish(); }