Better logging of rpn query.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 16 Nov 1995 17:00:55 +0000 (17:00 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 16 Nov 1995 17:00:55 +0000 (17:00 +0000)
index/Makefile
index/zlogs.c [new file with mode: 0644]
index/zrpn.c
index/zserver.c
index/zserver.h

index 7cd9467..06a2c19 100644 (file)
@@ -1,7 +1,7 @@
 # Copyright (C) 1995, Index Data I/S 
 # All rights reserved.
 # Sebastian Hammer, Adam Dickmeiss
-# $Id: Makefile,v 1.17 1995-11-15 14:46:17 adam Exp $
+# $Id: Makefile,v 1.18 1995-11-16 17:00:55 adam Exp $
 
 SHELL=/bin/sh
 RANLIB=ranlib
@@ -18,7 +18,7 @@ O1 = main.o dir.o trav.o extract.o kinput.o kcompare.o \
  symtab.o text.o recctrl.o structrec.o recindex.o
 O2 = kdump.o
 O3 = zserver.o kcompare.o zrpn.o zsets.o text.o recctrl.o structrec.o  \
-       attribute.o recindex.o
+       attribute.o recindex.o zlogs.o
 CPP=$(CC) -E
 
 all: $(TPROG1) $(TPROG2) $(TPROG3)
diff --git a/index/zlogs.c b/index/zlogs.c
new file mode 100644 (file)
index 0000000..b4e332f
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 1994-1995, Index Data I/S 
+ * All rights reserved.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: zlogs.c,v $
+ * Revision 1.1  1995-11-16 17:00:55  adam
+ * Better logging of rpn query.
+ *
+ */
+#include <stdio.h>
+#include <assert.h>
+
+
+#include "zserver.h"
+
+static char *attrStr (int type, int value, enum oid_value ast)
+{
+    static char str[80];
+
+    switch (ast)
+    {
+    case VAL_BIB1:
+    case VAL_EXP1:
+    case VAL_GILS:
+        switch (type)
+        {
+        case 1:
+            sprintf (str, "use=%d", value);
+            return str;
+        case 2:
+            sprintf (str, "relation=%d", value);
+            return str;
+        case 3:
+            sprintf (str, "position=%d", value);
+            return str;
+        case 4:
+            sprintf (str, "structure=%d", value);
+            return str;
+        case 5:
+            sprintf (str, "truncation=%d", value);
+            return str;
+        case 6:
+            sprintf (str, "completeness=%d", value);
+            return str;
+        }
+        break;
+    default:
+        break;
+    }
+    sprintf (str, "%d=%d", type, value);
+    return str;
+}
+
+/*
+ * zlog_attributes: print attributes of term
+ */
+static void zlog_attributes (Z_AttributesPlusTerm *t, int level,
+                             enum oid_value ast)
+{
+    int of, i;
+    for (of = 0; of < t->num_attributes; of++)
+    {
+        Z_AttributeElement *element;
+        element = t->attributeList[of];
+
+        switch (element->which) 
+        {
+        case Z_AttributeValue_numeric:
+            logf (LOG_LOG, "%*.s %s", level, "",
+                  attrStr (*element->attributeType, *element->value.numeric, ast));
+            break;
+        case Z_AttributeValue_complex:
+            logf (LOG_LOG, "%*.s attributeType=%d complex", level, "",
+                  *element->attributeType);
+            for (i = 0; i<element->value.complex->num_list; i++)
+            {
+                if (element->value.complex->list[i]->which ==
+                    Z_StringOrNumeric_string)
+                    logf (LOG_LOG, "%*.s  string: '%s'", level, "",
+                          element->value.complex->list[i]->u.string);
+                else if (element->value.complex->list[i]->which ==
+                         Z_StringOrNumeric_numeric)
+                    logf (LOG_LOG, "%*.s  numeric: '%d'", level, "",
+                          *element->value.complex->list[i]->u.numeric);
+            }
+            break;
+        default:
+            logf (LOG_LOG, "%.*s attribute unknown", level, "");
+        }
+    }
+}
+
+static void zlog_structure (Z_RPNStructure *zs, int level, enum oid_value ast)
+{
+    if (zs->which == Z_RPNStructure_complex)
+    {
+        switch (zs->u.complex->operator->which)
+        {
+        case Z_Operator_and:
+            logf (LOG_LOG, "%*.s and", level, "");
+            break;
+        case Z_Operator_or:
+            logf (LOG_LOG, "%*.s or", level, "");
+            break;
+        case Z_Operator_and_not:
+            logf (LOG_LOG, "%*.s and", level, "");
+            break;
+        default:
+            logf (LOG_LOG, "%*.s unknown complex", level, "");
+            return;
+        }
+        zlog_structure (zs->u.complex->s1, level+2, ast);
+        zlog_structure (zs->u.complex->s2, level+2, ast);
+    }
+    else if (zs->which == Z_RPNStructure_simple)
+    {
+        if (zs->u.simple->which == Z_Operand_APT)
+        {
+            Z_AttributesPlusTerm *zapt = zs->u.simple->u.attributesPlusTerm;
+
+            if (zapt->term->which == Z_Term_general) 
+            {
+                logf (LOG_LOG, "%*.s term '%.*s' (general)", level, "",
+                      zapt->term->u.general->len, zapt->term->u.general->buf);
+            }
+            else
+            {
+                logf (LOG_LOG, "%*.s term (not general)", level, "");
+            }
+            zlog_attributes (zapt, level+2, ast);
+        }
+        else if (zs->u.simple->which == Z_Operand_resultSetId)
+        {
+            logf (LOG_LOG, "%*.s set '%s'", level, "",
+                  zs->u.simple->u.resultSetId);
+        }
+        else
+            logf (LOG_LOG, "%*.s unknown simple structure", level, "");
+    }
+    else
+        logf (LOG_LOG, "%*.s unknown structure", level, "");
+}
+
+void zlog_rpn (Z_RPNQuery *rpn)
+{
+    oident *attrset = oid_getentbyoid (rpn->attributeSetId);
+    enum oid_value ast;
+
+    ast = attrset->value;
+    logf (LOG_LOG, "RPN query. Type: %s", attrset->desc);
+    zlog_structure (rpn->RPNStructure, 0, ast);
+}
index 501a294..7ba5d3f 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zrpn.c,v $
- * Revision 1.33  1995-11-01 13:58:28  quinn
+ * Revision 1.34  1995-11-16 17:00:56  adam
+ * Better logging of rpn query.
+ *
+ * Revision 1.33  1995/11/01  13:58:28  quinn
  * Moving data1 to yaz/retrieval
  *
  * Revision 1.32  1995/10/27  14:00:11  adam
@@ -137,45 +140,6 @@ int index_word_prefix_map (char *string, oid_value attrSet, int attrUse,
                               attp->local_attribute, basename);
 }
 
-/*
- * attr_print: log attributes
- */
-static void attr_print (Z_AttributesPlusTerm *t)
-{
-    int of, i;
-    for (of = 0; of < t->num_attributes; of++)
-    {
-        Z_AttributeElement *element;
-        element = t->attributeList[of];
-
-        switch (element->which) 
-        {
-        case Z_AttributeValue_numeric:
-            logf (LOG_DEBUG, "attributeType=%d value=%d", 
-                  *element->attributeType,
-                  *element->value.numeric);
-            break;
-        case Z_AttributeValue_complex:
-            logf (LOG_DEBUG, "attributeType=%d complex", 
-                  *element->attributeType);
-            for (i = 0; i<element->value.complex->num_list; i++)
-            {
-                if (element->value.complex->list[i]->which ==
-                    Z_StringOrNumeric_string)
-                    logf (LOG_DEBUG, "   string: '%s'",
-                          element->value.complex->list[i]->u.string);
-                else if (element->value.complex->list[i]->which ==
-                         Z_StringOrNumeric_numeric)
-                    logf (LOG_DEBUG, "   numeric: '%d'",
-                          *element->value.complex->list[i]->u.numeric);
-            }
-            break;
-        default:
-            assert (0);
-        }
-    }
-}
-
 typedef struct {
     int type;
     int major;
@@ -741,7 +705,6 @@ static int trunc_term (ZServerInfo *zi, Z_AttributesPlusTerm *zapt,
                 break;
             }
         }
-        logf (LOG_DEBUG, "max_pos = %d", max_pos);
         if (max_pos <= strlen(basenames[base_no]))
         {
             zi->errCode = 109; /* Database unavailable */
@@ -1218,12 +1181,13 @@ int rpn_search (ZServerInfo *zi,
     oident *attrset;
     oid_value attributeSet;
 
+    zlog_rpn (rpn);
+
     zi->errCode = 0;
     zi->errString = NULL;
-    
+
     attrset = oid_getentbyoid (rpn->attributeSetId);
     attributeSet = attrset->value;
-
     rset = rpn_search_structure (zi, rpn->RPNStructure, attributeSet,
                                  num_bases, basenames);
     if (!rset)
index 82df2c4..61d6154 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zserver.c,v $
- * Revision 1.22  1995-11-16 15:34:55  adam
+ * Revision 1.23  1995-11-16 17:00:56  adam
+ * Better logging of rpn query.
+ *
+ * Revision 1.22  1995/11/16  15:34:55  adam
  * Uses new record management system in both indexer and server.
  *
  * Revision 1.21  1995/11/01  16:25:52  quinn
@@ -148,9 +151,12 @@ bend_searchresult *bend_search (void *handle, bend_searchrequest *q, int *fd)
     r.errstring = 0;
     r.hits = 0;
 
+
     odr_reset (server_info.odr);
     server_info.errCode = 0;
     server_info.errString = NULL;
+
+    logf (LOG_LOG, "ResultSet '%s'", q->setname);
     switch (q->query->which)
     {
     case Z_Query_type_1:
index 04547fb..b05c8fb 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zserver.h,v $
- * Revision 1.13  1995-11-16 15:34:56  adam
+ * Revision 1.14  1995-11-16 17:00:57  adam
+ * Better logging of rpn query.
+ *
+ * Revision 1.13  1995/11/16  15:34:56  adam
  * Uses new record management system in both indexer and server.
  *
  * Revision 1.12  1995/10/27  14:00:12  adam
@@ -97,3 +100,4 @@ ZServerSet *resultSetGet (ZServerInfo *zi, const char *name);
 ZServerSetSysno *resultSetSysnoGet (ZServerInfo *zi, const char *name,
                                     int num, int *positions);
 void resultSetSysnoDel (ZServerInfo *zi, ZServerSetSysno *records, int num);
+void zlog_rpn (Z_RPNQuery *rpn);