X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=index%2Fzsets.c;h=e915543db043543ac6f499110ee15725f92ae168;hp=65e527268aeb69f16e0ec3f37a76035c019bbe44;hb=6ba9698e88c0283e40fa5980a1a6b551fff2d597;hpb=f7a3769dede0071696bdcc13ae2ee1efe6d52d96 diff --git a/index/zsets.c b/index/zsets.c index 65e5272..e915543 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -1,4 +1,4 @@ -/* $Id: zsets.c,v 1.102 2006-05-18 12:03:05 adam Exp $ +/* $Id: zsets.c,v 1.103 2006-05-19 13:49:35 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -802,7 +802,6 @@ ZEBRA_RES resultSetSortSingle(ZebraHandle zh, NMEM nmem, if (zh->m_staticrank) sysno_mem_index = 1; - assert(nmem); /* compiler shut up about unused param */ sset->sort_info->num_entries = 0; @@ -844,8 +843,17 @@ ZEBRA_RES resultSetSortSingle(ZebraHandle zh, NMEM nmem, case Z_SortKey_sortField: yaz_log(log_level_sort, "key %d is of type sortField", i+1); - zebra_setError(zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0); - return ZEBRA_FAIL; + sort_criteria[i].numerical = 0; + sort_criteria[i].ord = + zebraExplain_lookup_attr_str(zh->reg->zei, 's', + sk->u.sortField); + if (sort_criteria[i].ord == -1) + { + zebra_setError(zh, + YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0); + return ZEBRA_FAIL; + } + break; case Z_SortKey_elementSpec: yaz_log(log_level_sort, "key %d is of type elementSpec", i+1); @@ -853,29 +861,11 @@ ZEBRA_RES resultSetSortSingle(ZebraHandle zh, NMEM nmem, return ZEBRA_FAIL; case Z_SortKey_sortAttributes: yaz_log(log_level_sort, "key %d is of type sortAttributes", i+1); - if (1) - { - int ord; - int use = zebra_maps_sort(zh->reg->zebra_maps, - sk->u.sortAttributes, - &sort_criteria[i].numerical); - yaz_log(log_level_sort, "use value = %d", use); - if (use == -1) - { - zebra_setError( - zh, YAZ_BIB1_USE_ATTRIBUTE_REQUIRED_BUT_NOT_SUPPLIED, 0); - return ZEBRA_FAIL; - } - ord = zebraExplain_lookup_attr_su_any_index(zh->reg->zei, - VAL_IDXPATH, use); - if (ord == -1) - { - zebra_setError( - zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0); - return ZEBRA_FAIL; - } - sort_criteria[i].ord = ord; - } + if (zebra_sort_get_ord(zh, sk->u.sortAttributes, + &sort_criteria[i].ord, + &sort_criteria[i].numerical) + != ZEBRA_OK) + return ZEBRA_FAIL; break; } }