97 clock_t start_t = clock();
101 const int tuple_limit = 1000000;
102 size_t total_tuples = 0;
103 const int column_count = 3;
112 bool moredata =
true;
113 (*total_rows) = total_tuples;
115 while (moredata ==
true) {
116 SPI_cursor_fetch(SPIportal,
true, tuple_limit);
117 if (total_tuples == 0)
120 size_t ntuples = SPI_processed;
121 total_tuples += ntuples;
131 if ((*rows) == NULL) {
132 elog(ERROR,
"Out of memory");
135 SPITupleTable *tuptable = SPI_tuptable;
136 TupleDesc tupdesc = SPI_tuptable->tupdesc;
139 for (t = 0; t < ntuples; t++) {
140 HeapTuple tuple = tuptable->vals[t];
143 &(*rows)[total_tuples - ntuples + t]);
146 &(*rows)[total_tuples - ntuples + t]);
150 SPI_freetuptable(tuptable);
156 SPI_cursor_close(SPIportal);
159 if (total_tuples == 0) {
164 (*total_rows) = total_tuples;
166 time_msg(
" reading time matrix", start_t, clock());
179 size_t *total_rows) {
183 for (i = 0; i < 3; ++i) {
189 info[0].
name =
"start_vid";
190 info[1].
name =
"end_vid";
191 info[2].
name =
"travel_time";
206 size_t *total_rows) {
210 for (i = 0; i < 3; ++i) {
216 info[0].
name =
"start_vid";
217 info[1].
name =
"end_vid";
218 info[2].
name =
"agg_cost";