63 vroom_break->
id =
get_Idx(tuple, tupdesc, info[0], 0);
84 const int column_count,
87 clock_t start_t = clock();
91 const int tuple_limit = 1000000;
100 bool moredata =
true;
101 (*total_breaks) = total_tuples = 0;
105 while (moredata ==
true) {
106 SPI_cursor_fetch(SPIportal,
true, tuple_limit);
107 if (total_tuples == 0) {
110 size_t ntuples = SPI_processed;
111 total_tuples += ntuples;
113 if ((*breaks) == NULL)
121 if ((*breaks) == NULL) {
122 elog(ERROR,
"Out of memory");
126 SPITupleTable *tuptable = SPI_tuptable;
127 TupleDesc tupdesc = SPI_tuptable->tupdesc;
128 for (t = 0; t < ntuples; t++) {
129 HeapTuple tuple = tuptable->vals[t];
131 &(*breaks)[total_tuples - ntuples + t], is_plain);
133 SPI_freetuptable(tuptable);
139 SPI_cursor_close(SPIportal);
141 if (total_tuples == 0) {
146 (*total_breaks) = total_tuples;
148 time_msg(
"reading breaks", start_t, clock());
165 int kColumnCount = 4;
168 for (
int i = 0; i < kColumnCount; ++i) {
176 info[1].
name =
"vehicle_id";
177 info[2].
name =
"service";
178 info[3].
name =
"data";
191 db_get_breaks(sql, rows, total_rows, info, kColumnCount, is_plain);