From 040a8961a659f7768fac348093bb807c413d785f Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 16 Nov 1995 17:00:55 +0000 Subject: [PATCH] Better logging of rpn query. --- index/Makefile | 4 +- index/zlogs.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ index/zrpn.c | 50 +++--------------- index/zserver.c | 8 ++- index/zserver.h | 6 ++- 5 files changed, 174 insertions(+), 47 deletions(-) create mode 100644 index/zlogs.c diff --git a/index/Makefile b/index/Makefile index 7cd9467..06a2c19 100644 --- a/index/Makefile +++ b/index/Makefile @@ -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 index 0000000..b4e332f --- /dev/null +++ b/index/zlogs.c @@ -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 +#include + + +#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; ivalue.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); +} diff --git a/index/zrpn.c b/index/zrpn.c index 501a294..7ba5d3f 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -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; ivalue.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) diff --git a/index/zserver.c b/index/zserver.c index 82df2c4..61d6154 100644 --- a/index/zserver.c +++ b/index/zserver.c @@ -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: diff --git a/index/zserver.h b/index/zserver.h index 04547fb..b05c8fb 100644 --- a/index/zserver.h +++ b/index/zserver.h @@ -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); -- 1.7.10.4