Fix bug WRT inconsistent registers, bug #3062.
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 7 Oct 2009 10:32:35 +0000 (12:32 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 7 Oct 2009 10:32:35 +0000 (12:32 +0200)
For a many create+drop of DBs the ordinalSU will increase. This, in
turn will lead to a bigger resulting indexing term beyond length
IT_MAX_WORD - for the compressed temp files. This patch increases the
indexing buffer for the term to INP_NAME_MAX which is a log higher than
IT_MAX_WORD. The too-small size resulted in a truncations of long terms
(in fact phrases) that would be wrongly matched against the ISAM.

index/kinput.c

index f5afa44..de1d563 100644 (file)
@@ -185,7 +185,7 @@ int key_file_read(struct key_file *f, char *key)
         key[i++] = c;
         while ((c = key_file_getc(f)))
         {
         key[i++] = c;
         while ((c = key_file_getc(f)))
         {
-            if (i <= IT_MAX_WORD)
+            if (i < INP_NAME_MAX-2)
                 key[i++] = c;
         }
         key[i++] = '\0';
                 key[i++] = c;
         }
         key[i++] = '\0';
@@ -360,7 +360,7 @@ static int heap_read_one(struct heap_info *hi, char *name, char *key)
 /* for debugging only */
 void zebra_log_dict_entry(ZebraHandle zh, const char *s)
 {
 /* for debugging only */
 void zebra_log_dict_entry(ZebraHandle zh, const char *s)
 {
-    char dst[IT_MAX_WORD+1];
+    char dst[INP_NAME_MAX+1];
     int ord;
     int len = key_SU_decode(&ord, (const unsigned char *) s);
     const char *index_type;
     int ord;
     int len = key_SU_decode(&ord, (const unsigned char *) s);
     const char *index_type;