X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=18c9aeecadbbd13183b241cecdbbb40c3a4922ca;hb=102d64b6e147d9bca7298abf857febdb41106ee8;hp=1f55a873594355795c9c01f5025843fe9f466471;hpb=1d0b929d13979c1e3c2cbbf708e4be5ab68af0cb;p=pazpar2-moved-to-github.git
diff --git a/src/session.c b/src/session.c
index 1f55a87..18c9aee 100644
--- a/src/session.c
+++ b/src/session.c
@@ -963,6 +963,7 @@ static struct hitsbytarget *hitsbytarget_nb(struct session *se,
res[*count].id = client_get_id(cl);
res[*count].name = *name ? name : "Unknown";
res[*count].hits = client_get_hits(cl);
+ res[*count].approximation = client_get_approximation(cl);
res[*count].records = client_get_num_records(cl);
res[*count].filtered = client_get_num_records_filtered(cl);
res[*count].diagnostic =
@@ -1015,7 +1016,7 @@ static int cmp_ht(const void *p1, const void *p2)
}
static int targets_termlist_nb(WRBUF wrbuf, struct session *se, int num,
- NMEM nmem)
+ NMEM nmem, int version)
{
struct hitsbytarget *ht;
int count, i;
@@ -1042,7 +1043,14 @@ static int targets_termlist_nb(WRBUF wrbuf, struct session *se, int num,
wrbuf_printf(wrbuf, "" ODR_INT_PRINTF "\n",
ht[i].hits);
-
+
+ if (version >= 2) {
+ // Should not print if we know it isn't a approximation.
+ wrbuf_printf(wrbuf, "" ODR_INT_PRINTF "\n", ht[i].approximation);
+ wrbuf_printf(wrbuf, "%d\n", ht[i].records);
+ wrbuf_printf(wrbuf, "%d\n", ht[i].filtered);
+ }
+
wrbuf_puts(wrbuf, "");
wrbuf_xmlputs(wrbuf, ht[i].state);
wrbuf_puts(wrbuf, "\n");
@@ -1055,7 +1063,7 @@ static int targets_termlist_nb(WRBUF wrbuf, struct session *se, int num,
}
void perform_termlist(struct http_channel *c, struct session *se,
- const char *name, int num)
+ const char *name, int num, int version)
{
int i, j;
NMEM nmem_tmp = nmem_create();
@@ -1118,7 +1126,7 @@ void perform_termlist(struct http_channel *c, struct session *se,
wrbuf_xmlputs(c->wrbuf, tname);
wrbuf_puts(c->wrbuf, "\">\n");
- targets_termlist_nb(c->wrbuf, se, num, c->nmem);
+ targets_termlist_nb(c->wrbuf, se, num, c->nmem, version);
wrbuf_puts(c->wrbuf, "\n");
must_generate_empty = 0;
}
@@ -1181,7 +1189,7 @@ void show_single_stop(struct session *se, struct record_cluster *rec)
struct record_cluster **show_range_start(struct session *se,
struct reclist_sortparms *sp,
- int start, int *num, int *total, Odr_int *sumhits)
+ int start, int *num, int *total, Odr_int *sumhits, Odr_int *approx_hits)
{
struct record_cluster **recs;
struct reclist_sortparms *spp;
@@ -1214,9 +1222,10 @@ struct record_cluster **show_range_start(struct session *se,
*total = reclist_get_num_records(se->reclist);
*sumhits = 0;
- for (l = se->clients_active; l; l = l->next)
+ for (l = se->clients_active; l; l = l->next) {
*sumhits += client_get_hits(l->client);
-
+ *approx_hits += client_get_approximation(l->client);
+ }
for (i = 0; i < start; i++)
if (!reclist_read_record(se->reclist))
{