X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzrpn.c;h=2a4b593f60f2d42a21f0f4c00a7a0705f13addaf;hb=4761773f2ff08474c71cc3f44cae1642b45834c1;hp=66777f6c808477955133ce52710a9e75c4ed9d25;hpb=e408f6de48df5e13552ca72bb035f8b18f33d988;p=idzebra-moved-to-github.git diff --git a/index/zrpn.c b/index/zrpn.c index 66777f6..2a4b593 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -1,4 +1,4 @@ -/* $Id: zrpn.c,v 1.137 2004-05-10 08:47:54 adam Exp $ +/* $Id: zrpn.c,v 1.139 2004-06-02 12:29:03 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -941,7 +941,7 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, zh->errString = basenames[base_no]; return -1; } - if (use_value == -2) /* string attribute (assume IDXPATH/any) */ + if (xpath_use > 0 && use_value == -2) { use_value = xpath_use; attp.local_attributes = &id_xpath_attr; @@ -958,17 +958,23 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, } else { - if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value))) + if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value, + use_string))) { logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d r=%d", curAttributeSet, use_value, r); if (r == -1) { /* set was found, but value wasn't defined */ - char val_str[32]; - sprintf (val_str, "%d 1", use_value); errCode = 114; - errString = nmem_strdup (stream, val_str); + if (use_string) + errString = nmem_strdup(stream, use_string); + else + { + char val_str[32]; + sprintf (val_str, "%d", use_value); + errString = nmem_strdup (stream, val_str); + } } else { @@ -1015,7 +1021,7 @@ static int string_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, bases_ok++; #else char val_str[32]; - sprintf (val_str, "%d 2", use_value); + sprintf (val_str, "%d", use_value); errCode = 114; errString = nmem_strdup (stream, val_str); #endif @@ -1680,6 +1686,7 @@ static RSET rpn_search_APT_or_list (ZebraHandle zh, bool_parms.rset_r = rset[i]; bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; + bool_parms.log_item = key_logdump_txt; result = rset_create (rset_kind_or, &bool_parms); } return result; @@ -1737,6 +1744,7 @@ static RSET rpn_search_APT_and_list (ZebraHandle zh, bool_parms.rset_r = rset[i]; bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; + bool_parms.log_item = key_logdump_txt; result = rset_create (rset_kind_and, &bool_parms); } return result; @@ -1850,7 +1858,8 @@ static int numeric_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, } else { - if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value))) + if ((r=att_getentbyatt (zh, &attp, curAttributeSet, use_value, + use_string))) { logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d r=%d", curAttributeSet, use_value, r); @@ -1980,6 +1989,7 @@ static RSET rpn_search_APT_numeric (ZebraHandle zh, bool_parms.rset_r = rset[i]; bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; + bool_parms.log_item = key_logdump_txt; result = rset_create (rset_kind_and, &bool_parms); } return result; @@ -2450,6 +2460,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, } bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; + bool_parms.log_item = key_logdump_txt; switch (zop->which) { @@ -2692,6 +2703,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, char termz[IT_MAX_WORD+20]; AttrType use; int use_value; + const char *use_string = 0; struct scan_info *scan_info_array; ZebraScanEntry *glist; int ords[32], ord_no = 0; @@ -2742,7 +2754,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, pos, num, attributeset); attr_init (&use, zapt, 1); - use_value = attr_find (&use, &attributeset); + use_value = attr_find_ex (&use, &attributeset, &use_string); if (zebra_maps_attr (zh->reg->zebra_maps, zapt, ®_id, &search_type, rank_type, &complete_flag, &sort_flag)) @@ -2761,7 +2773,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, attent attp; data1_local_attribute *local_attr; - if ((r=att_getentbyatt (zh, &attp, attributeset, use_value))) + if ((r=att_getentbyatt (zh, &attp, attributeset, use_value, + use_string))) { logf (LOG_DEBUG, "att_getentbyatt fail. set=%d use=%d", attributeset, use_value); @@ -2896,7 +2909,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; - bool_parms.rset_l = rset; + bool_parms.log_item = key_logdump_txt; + bool_parms.rset_l = rset; bool_parms.rset_r = rset2; rset = rset_create (rset_kind_or, &bool_parms); @@ -2910,7 +2924,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; - bool_parms.rset_l = rset; + bool_parms.log_item = key_logdump_txt; + bool_parms.rset_l = rset; bool_parms.rset_r = rset_dup(limit_set); rset = rset_create (rset_kind_and, &bool_parms); @@ -2975,7 +2990,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; - bool_parms.rset_l = rset; + bool_parms.log_item = key_logdump_txt; + bool_parms.rset_l = rset; bool_parms.rset_r = rset2; rset = rset_create (rset_kind_or, &bool_parms); @@ -2989,6 +3005,7 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, bool_parms.key_size = sizeof(struct it_key); bool_parms.cmp = key_compare_it; + bool_parms.log_item = key_logdump_txt; bool_parms.rset_l = rset; bool_parms.rset_r = rset_dup(limit_set);