68 (errcode(ERRCODE_INTERNAL_ERROR),
69 errmsg(
"Illegal value in parameter: factor"),
70 errhint(
"Value found: %f <= 0", factor)));
76 (errcode(ERRCODE_INTERNAL_ERROR),
77 errmsg(
"Illegal value in parameter: max_cycles"),
78 errhint(
"Value found: %d <= 0", max_cycles)));
82 if (subdivision_kind < 0 || subdivision_kind > 2) {
84 (errcode(ERRCODE_INTERNAL_ERROR),
85 errmsg(
"Illegal value in parameter: subdivision_kind"),
86 errhint(
"Value found: %d", max_cycles)));
92 size_t total_pd_orders = 0;
94 get_shipments(pd_orders_sql, &pd_orders_arr, &total_pd_orders);
99 if (total_pd_orders == 0) {
101 (*result_tuples) = NULL;
104 if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
111 size_t total_vehicles = 0;
112 if (use_timestamps) {
113 get_vehicles(vehicles_sql, &vehicles_arr, &total_vehicles,
true);
118 if (total_vehicles == 0) {
120 (*result_tuples) = NULL;
123 if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
124 if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
127 (errcode(ERRCODE_INTERNAL_ERROR),
128 errmsg(
"No vehicles found")));
135 size_t total_multipliers_arr = 0;
136 if (use_timestamps) {
142 if (total_multipliers_arr == 0) {
144 (errcode(ERRCODE_INTERNAL_ERROR),
145 errmsg(
"No matrix found")));
147 (*result_tuples) = NULL;
150 if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
151 if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
152 if (multipliers_arr) {pfree(multipliers_arr); multipliers_arr = NULL;}
159 size_t total_cells = 0;
160 if (use_timestamps) {
166 if (total_cells == 0) {
168 (*result_tuples) = NULL;
171 if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
172 if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
173 if (multipliers_arr) {pfree(multipliers_arr); multipliers_arr = NULL;}
174 if (matrix_cells_arr) {pfree(matrix_cells_arr); matrix_cells_arr = NULL;}
177 (errcode(ERRCODE_INTERNAL_ERROR),
178 errmsg(
"No matrix found")));
183 PGR_DBG(
"Total %ld orders in query:", total_pd_orders);
184 PGR_DBG(
"Total %ld vehicles in query:", total_vehicles);
185 PGR_DBG(
"Total %ld matrix cells in query:", total_cells);
186 PGR_DBG(
"Total %ld time dependant multipliers:", total_multipliers_arr);
188 clock_t start_t = clock();
189 char *log_msg = NULL;
190 char *notice_msg = NULL;
191 char *err_msg = NULL;
194 pd_orders_arr, total_pd_orders,
195 vehicles_arr, total_vehicles,
196 matrix_cells_arr, total_cells,
197 multipliers_arr, total_multipliers_arr,
203 check_triangle_inequality,
204 subdivision_kind != 0,
205 subdivision_kind == 1,
214 time_msg(
"pgr_pickDeliver", start_t, clock());
216 if (err_msg && (*result_tuples)) {
217 pfree(*result_tuples);
219 (*result_tuples) = NULL;
224 if (log_msg) {pfree(log_msg); log_msg = NULL;}
225 if (notice_msg) {pfree(notice_msg); notice_msg = NULL;}
226 if (err_msg) {pfree(err_msg); err_msg = NULL;}
227 if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
228 if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
229 if (multipliers_arr) {pfree(multipliers_arr); multipliers_arr = NULL;}
230 if (matrix_cells_arr) {pfree(matrix_cells_arr); matrix_cells_arr = NULL;}