197 (errmsg(
"Column \'%s\' not Found", lhs.
name),
198 errhint(
"%s was found, also column is expected %s ",
210 bool with_id =
false;
228 vehicle->
id =
get_Id(tuple, tupdesc, info[0], -1);
254 vehicle->
stops = NULL;
287 vehicle->
id =
get_Id(tuple, tupdesc, info[0], -1);
291 vehicle->
stops = NULL;
340 vehicle->
id =
get_Id(tuple, tupdesc, info[0], -1);
344 vehicle->
stops = NULL;
380 size_t *total_vehicles,
383 const int column_count,
388 clock_t start_t = clock();
392 const int tuple_limit = 1000000;
401 bool moredata =
true;
402 (*total_vehicles) = total_tuples = 0;
406 while (moredata ==
true) {
407 SPI_cursor_fetch(SPIportal,
true, tuple_limit);
408 if (total_tuples == 0) {
411 size_t ntuples = SPI_processed;
412 total_tuples += ntuples;
414 if ((*vehicles) == NULL)
422 if ((*vehicles) == NULL) {
423 elog(ERROR,
"Out of memory");
427 SPITupleTable *tuptable = SPI_tuptable;
428 TupleDesc tupdesc = SPI_tuptable->tupdesc;
429 for (t = 0; t < ntuples; t++) {
430 HeapTuple tuple = tuptable->vals[t];
433 &(*vehicles)[total_tuples - ntuples + t], with_stops);
435 case 1 :
fetch_raw(&tuple, &tupdesc, info,
436 &(*vehicles)[total_tuples - ntuples + t], with_stops);
439 &(*vehicles)[total_tuples - ntuples + t], with_stops);
443 SPI_freetuptable(tuptable);
449 SPI_cursor_close(SPIportal);
451 if (total_tuples == 0) {
452 (*total_vehicles) = 0;
456 (*total_vehicles) = total_tuples;
458 time_msg(
"reading vehicles", start_t, clock());
474 const int column_count = 13;
477 for (
int i = 0; i < column_count; ++i) {
485 info[1].
name =
"capacity";
486 info[2].
name =
"number";
487 info[3].
name =
"speed";
488 info[4].
name =
"stops";
489 info[5].
name =
"s_id";
490 info[6].
name =
"s_tw_open";
491 info[7].
name =
"s_tw_close";
492 info[8].
name =
"s_t_service";
493 info[9].
name =
"e_id";
494 info[10].
name =
"e_tw_open";
495 info[11].
name =
"e_tw_close";
496 info[12].
name =
"e_t_service";
512 db_get_vehicles(sql, rows, total_rows, info, column_count, 0, with_stops);
527 const int column_count = 13;
530 for (
int i = 0; i < column_count; ++i) {
538 info[1].
name =
"capacity";
539 info[2].
name =
"number";
540 info[3].
name =
"speed";
541 info[4].
name =
"stops";
542 info[5].
name =
"s_id";
543 info[6].
name =
"s_open";
544 info[7].
name =
"s_close";
545 info[8].
name =
"s_service";
546 info[9].
name =
"e_id";
547 info[10].
name =
"e_open";
548 info[11].
name =
"e_close";
549 info[12].
name =
"e_service";
559 db_get_vehicles(sql, rows, total_rows, info, column_count, 1, with_stops);
574 const int column_count = 15;
577 for (
int i = 0; i < column_count; ++i) {
585 info[1].
name =
"capacity";
586 info[2].
name =
"number";
587 info[3].
name =
"speed";
588 info[4].
name =
"s_open";
589 info[5].
name =
"s_close";
590 info[6].
name =
"e_open";
591 info[7].
name =
"e_close";
592 info[8].
name =
"stops";
593 info[9].
name =
"s_service";
594 info[10].
name =
"e_service";
595 info[11].
name =
"s_x";
596 info[12].
name =
"s_y";
597 info[13].
name =
"e_x";
598 info[14].
name =
"e_y";
612 db_get_vehicles(sql, rows, total_rows, info, column_count, 2, with_stops);