* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zsets.c,v $
- * Revision 1.7 1995-10-06 14:38:01 adam
+ * Revision 1.11 1996-12-23 15:30:46 adam
+ * Work on truncation.
+ * Bug fix: result sets weren't deleted after server shut down.
+ *
+ * Revision 1.10 1995/10/30 15:08:08 adam
+ * Bug fixes.
+ *
+ * Revision 1.9 1995/10/17 18:02:14 adam
+ * New feature: databases. Implemented as prefix to words in dictionary.
+ *
+ * Revision 1.8 1995/10/10 13:59:25 adam
+ * Function rset_open changed its wflag parameter to general flags.
+ *
+ * Revision 1.7 1995/10/06 14:38:01 adam
* New result set method: r_score.
* Local no (sysno) and score is transferred to retrieveCtrl.
*
return NULL;
}
-ZServerSetSysno *resultSetSysnoGet (ZServerInfo *zi, const char *name,
- int num, int *positions)
+void resultSetDestroy (ZServerInfo *zi)
+{
+ ZServerSet *s, *s1;
+
+ for (s = zi->sets; s; s = s1)
+ {
+ s1 = s->next;
+ rset_delete (s->rset);
+ xfree (s->name);
+ xfree (s);
+ }
+ zi->sets = NULL;
+}
+
+ZServerSetSysno *resultSetSysnoGet (ZServerInfo *zi, const char *name,
+ int num, int *positions)
{
ZServerSet *sset;
ZServerSetSysno *sr;
return NULL;
logf (LOG_DEBUG, "resultSetRecordGet");
sr = xmalloc (sizeof(*sr) * num);
- rfd = rset_open (rset, 0);
+ rfd = rset_open (rset, RSETF_READ|RSETF_SORT_RANK);
while (rset_read (rset, rfd, &key))
{
if (key.sysno != psysno)
{
psysno = key.sysno;
position++;
+ assert (num_i < num);
if (position == positions[num_i])
{
sr[num_i].sysno = psysno;
rset_score (rset, rfd, &sr[num_i].score);
- num_i++;
if (++num_i == num)
break;
}
return sr;
}
-void resultSetRecordDel (ZServerInfo *zi, ZServerRecord *records, int num)
+void resultSetSysnoDel (ZServerInfo *zi, ZServerSetSysno *records, int num)
{
- int i;
-
- for (i = 0; i<num; i++)
- xfree (records[i].buf);
xfree (records);
}