pz:extendrecs number of records in extended mode
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 23 Jan 2013 11:19:59 +0000 (12:19 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 23 Jan 2013 11:19:59 +0000 (12:19 +0100)
If pz:extendrecs is defined it is the maximum number of records
for a target for a show that would otherwise be partial.

src/client.c
src/settings.c
src/settings.h

index d3265c3..4c40d9c 100644 (file)
@@ -766,16 +766,21 @@ int client_fetch_more(struct client *cl)
 {
     struct session_database *sdb = client_get_database(cl);
     const char *str;
-    int extra = cl->hits - cl->record_offset;
+    int extend_recs = 0;
+    int number;
 
-    if (extra > 0)
+    str = session_setting_oneval(sdb, PZ_EXTENDRECS);
+    if (str && *str)
+        extend_recs = atoi(str);
+
+    if (extend_recs > cl->hits)
+        extend_recs = cl->hits;
+
+    number = extend_recs - cl->record_offset;
+    if (number > 0)
     {
         ZOOM_resultset set = cl->resultset;
         struct connection *co = client_get_connection(cl);
-        int max_extra = 10;
-
-        if (extra > max_extra)
-            extra = max_extra;
 
         str = session_setting_oneval(sdb, PZ_REQUESTSYNTAX);
         ZOOM_resultset_option_set(set, "preferredRecordSyntax", str);
@@ -783,7 +788,7 @@ int client_fetch_more(struct client *cl)
         if (str && *str)
             ZOOM_resultset_option_set(set, "elementSetName", str);
 
-        ZOOM_resultset_records(set, 0, cl->record_offset, extra);
+        ZOOM_resultset_records(set, 0, cl->record_offset, number);
         client_set_state(cl, Client_Working);
         connection_continue(co);
         return 1;
index 233125e..d2e15ec 100644 (file)
@@ -81,6 +81,7 @@ static char *hard_settings[] = {
     "pz:sortmap:",
     "pz:present_chunk",
     "pz:block_timeout",
+    "pz:extendrecs",
     0
 };
 
index f6a33fd..b0da583 100644 (file)
@@ -54,7 +54,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define PZ_SORTMAP              31
 #define PZ_PRESENT_CHUNK        32
 #define PZ_BLOCK_TIMEOUT        33
-#define PZ_MAX_EOF              34
+#define PZ_EXTENDRECS           34
+#define PZ_MAX_EOF              35
 
 struct setting
 {