X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=index%2Fextract.c;h=d5296a2118e49415c511f163a9dfc2064b89d178;hb=4b7a4c30b843352a948dad6c36053f8dbf99c8f4;hp=ca6ce2131cb3820409d31a91bf8da3cb41809613;hpb=6024b7c6a621b79c20953aeef15a17b96af92a8b;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index ca6ce21..d5296a2 100644 --- a/index/extract.c +++ b/index/extract.c @@ -4,7 +4,31 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: extract.c,v $ - * Revision 1.39 1995-12-05 13:20:18 adam + * Revision 1.45 1995-12-15 12:37:41 adam + * In addRecordKeyAny: Writes key only when attrSet != -1. + * + * 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 +188,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 +199,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); @@ -466,7 +488,8 @@ static void addRecordKeyAny (const RecWord *p) w.attrUse = 1016; addRecordKey (&w); } - addRecordKey (p); + else if (p->attrSet != -1) + addRecordKey (p); } @@ -530,8 +553,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 +801,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 +809,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 +826,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