Hi John, I wanted to share with you a functionality that I added to my code and I think could be very useful to other users of FastBit if introduced in the library.
Given my needs, I had to write my own function to print the rows that matching the query conditions. Following the example of ibis::bord::part::dump(), I rewrite my own function dump(). Instead of use the LIMIT like in the original function, I added the ability to use the LIMIT with the syntax similar to MySQL. In MySQL (http://dev.mysql.com/doc/refman/5.1/en/select.html), LIMIT takes one or two numeric arguments. With two arguments, the first argument specifies the index of the first row to return, and the second specifies the maximum number of rows to return. The index of the initial row is 0 (not 1): E.g. SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 With one argument, the value specifies the number of rows to return from the beginning of the result set: E.g: SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows This feature becomes very useful for displaying large amounts of data. In fact you can extract them in groups of <n> rows at once. It can be very useful also if you use HTML pages to display the results: you can spread the rows across pages using different LIMIT for each page: LIMIT 0,20 (first page) LIMIT 20,20 (second page) LIMIT 40,20 (third page) and so on.. This could also be useful to examine the trend of results in the middle of dataset, and not only for the first rows. The change to be applied to the library to add this functionality I think it could be very simple and could be something like this: ORIGINAL int ibis::bord::part::dump(std::ostream& out, uint32_t nr, const char* del) NEW int ibis::bord::part::dump(std::ostream& out, uint32_t start, uint32_t offset, const char* del) .. ORIGINAL for (uint32_t i = 1; i < nr; ++ i) { (void) clist[0]->dump(out, i); ... NEW /* No limit specified, all lines are printed */ if (offset < 0) offset = nr_tot_rows; for (uint32_t i = start; i < start+offset && i < nr_tot_rows; ++ i) { (void) clist[0]->dump(out, i); ... Let me know if you think it's a good idea and sorry for this endless email! Best regards, Valeria Lorenzetti
_______________________________________________ FastBit-users mailing list [email protected] https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
