*** empty log message ***
[idzebra-moved-to-github.git] / index / extract.c
index ca6ce21..b320cbc 100644 (file)
@@ -4,7 +4,28 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: extract.c,v $
- * Revision 1.39  1995-12-05 13:20:18  adam
+ * Revision 1.44  1995-12-12 16:00:54  adam
+ * System call sync(2) used after update/commit.
+ * Locking (based on fcntl) uses F_EXLCK and F_SHLCK instead of F_WRLCK
+ * and F_RDLCK.
+ *
+ * Revision 1.43  1995/12/11  09:12:46  adam
+ * The rec_get function returns NULL if record doesn't exist - will
+ * happen in the server if the result set records have been deleted since
+ * the creation of the set (i.e. the search).
+ * The server saves a result temporarily if it is 'volatile', i.e. the
+ * set is register dependent.
+ *
+ * Revision 1.42  1995/12/07  17:38:46  adam
+ * Work locking mechanisms for concurrent updates/commit.
+ *
+ * Revision 1.41  1995/12/06  16:06:42  adam
+ * Better diagnostics. Work on 'real' dictionary deletion.
+ *
+ * Revision 1.40  1995/12/05  16:57:40  adam
+ * More work on regular patterns.
+ *
+ * Revision 1.39  1995/12/05  13:20:18  adam
  * Bug fix: file_read sometimes returned early EOF.
  *
  * Revision 1.38  1995/12/04  17:59:21  adam
@@ -164,8 +185,6 @@ static int records_inserted = 0;
 static int records_updated = 0;
 static int records_deleted = 0;
 
-#define MATCH_DICT "match"
-
 void key_open (int mem)
 {
     if (mem < 50000)
@@ -177,9 +196,9 @@ void key_open (int mem)
     key_buf_used = 0;
     key_file_no = 0;
 
-    if (!(matchDict = dict_open (MATCH_DICT, 20, 1)))
+    if (!(matchDict = dict_open (GMATCH_DICT, 50, 1)))
     {
-        logf (LOG_FATAL, "dict_open fail of %s", MATCH_DICT);
+        logf (LOG_FATAL, "dict_open fail of %s", GMATCH_DICT);
         exit (1);
     }
     assert (!records);
@@ -530,8 +549,8 @@ static int file_read (int fd, char *buf, size_t count)
         {
             file_offset = r;
             memcpy (buf + l, file_buf, r);
-            file_noread += (l+r);
-            return l + r;
+            file_noread += l+r;
+            return l+r;
         }
         else
         {
@@ -778,7 +797,7 @@ static int recordExtract (SYSNO *sysno, const char *fname,
         struct recKeys delkeys;
 
         rec = rec_get (records, *sysno);
-
+        assert (rec);
         delkeys.buf_used = rec->size[recInfo_delKeys];
        delkeys.buf = rec->info[recInfo_delKeys];
         flushRecordKeys (*sysno, 0, &delkeys, rec->info[recInfo_databaseName]);
@@ -786,15 +805,15 @@ static int recordExtract (SYSNO *sysno, const char *fname,
         {
             if (!delkeys.buf_used)
             {
-                logf (LOG_WARN, "cannot delete %s - no delete keys", fname);
+                logf (LOG_WARN, "cannot delete %s: storeKeys false",
+                      fname);
             }
             else
             {
-                SYSNO sysnoz = 0;
                 logf (LOG_LOG, "delete %s %s", rGroup->recordType, fname);
                 records_deleted++;
                 if (matchStr)
-                    dict_insert (matchDict, matchStr, sizeof(sysnoz), &sysnoz);
+                    dict_delete (matchDict, matchStr);
                 rec_del (records, &rec);
             }
             return 1;
@@ -803,7 +822,7 @@ static int recordExtract (SYSNO *sysno, const char *fname,
         {
             if (!delkeys.buf_used)
             {
-                logf (LOG_WARN, "cannot update %s - no delete keys",
+                logf (LOG_WARN, "cannot update %s: storeKeys false",
                       fname);
             }
             else