projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Register type (w,p) + set-use/string attriute combined in register
[idzebra-moved-to-github.git]
/
index
/
zinfo.c
diff --git
a/index/zinfo.c
b/index/zinfo.c
index
788aaaf
..
c40e76e
100644
(file)
--- a/
index/zinfo.c
+++ b/
index/zinfo.c
@@
-1,4
+1,4
@@
-/* $Id: zinfo.c,v 1.45 2005-03-05 09:19:14 adam Exp $
+/* $Id: zinfo.c,v 1.46 2005-06-23 06:45:46 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
@@
-32,6
+32,7
@@
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define ZINFO_DEBUG 0
struct zebSUInfo {
#define ZINFO_DEBUG 0
struct zebSUInfo {
+ int index_type;
#define ZEB_SU_SET_USE 1
#define ZEB_SU_STR 2
int which;
#define ZEB_SU_SET_USE 1
#define ZEB_SU_STR 2
int which;
@@
-572,6
+573,7
@@
static void zebraExplain_readAttributeDetails (ZebraExplainInfo zei,
data1_node *node_use = NULL;
data1_node *node_str = NULL;
data1_node *node_ordinal = NULL;
data1_node *node_use = NULL;
data1_node *node_str = NULL;
data1_node *node_ordinal = NULL;
+ data1_node *node_type = NULL;
data1_node *np2;
char oid_str[128];
int oid_str_len;
data1_node *np2;
char oid_str[128];
int oid_str_len;
@@
-591,11
+593,22
@@
static void zebraExplain_readAttributeDetails (ZebraExplainInfo zei,
node_str = np2->child;
else if (!strcmp (np2->u.tag.tag, "ordinal"))
node_ordinal = np2->child;
node_str = np2->child;
else if (!strcmp (np2->u.tag.tag, "ordinal"))
node_ordinal = np2->child;
+ else if (!strcmp (np2->u.tag.tag, "type"))
+ node_type = np2->child;
}
assert (node_ordinal);
*zsuip = (struct zebSUInfoB *)
nmem_malloc (zei->nmem, sizeof(**zsuip));
}
assert (node_ordinal);
*zsuip = (struct zebSUInfoB *)
nmem_malloc (zei->nmem, sizeof(**zsuip));
+
+ if (node_type && node_type->u.data.len > 0)
+ (*zsuip)->info.index_type = node_type->u.data.data[0];
+ else
+ {
+ yaz_log(YLOG_WARN, "Missing attribute 'type' in attribute info");
+ (*zsuip)->info.index_type = 'w';
+ }
+
if (node_set && node_use)
{
(*zsuip)->info.which = ZEB_SU_SET_USE;
if (node_set && node_use)
{
(*zsuip)->info.which = ZEB_SU_SET_USE;
@@
-624,7
+637,7
@@
static void zebraExplain_readAttributeDetails (ZebraExplainInfo zei,
}
else
{
}
else
{
- yaz_log(YLOG_WARN, "Missng set/use/str in attribute info");
+ yaz_log(YLOG_WARN, "Missing set/use/str in attribute info");
continue;
}
(*zsuip)->info.ordinal = atoi_n (node_ordinal->u.data.data,
continue;
}
(*zsuip)->info.ordinal = atoi_n (node_ordinal->u.data.data,
@@
-1089,9
+1102,16
@@
static void zebraExplain_writeAttributeDetails (ZebraExplainInfo zei,
struct oident oident;
int oid[OID_SIZE];
data1_node *node_attr;
struct oident oident;
int oid[OID_SIZE];
data1_node *node_attr;
+ char index_type_str[2];
+
node_attr = data1_mk_tag (zei->dh, zei->nmem, "attr", 0 /* attr */,
node_list);
node_attr = data1_mk_tag (zei->dh, zei->nmem, "attr", 0 /* attr */,
node_list);
+
+ index_type_str[0] = zsui->info.index_type;
+ index_type_str[1] = '\0';
+ data1_mk_tag_data_text (zei->dh, node_attr, "type",
+ index_type_str, zei->nmem);
if (zsui->info.which == ZEB_SU_SET_USE)
{
oident.proto = PROTO_Z3950;
if (zsui->info.which == ZEB_SU_SET_USE)
{
oident.proto = PROTO_Z3950;
@@
-1339,28
+1359,31
@@
static void zebraExplain_writeTarget (ZebraExplainInfo zei, int key_flush)
rec_put (zei->records, &trec);
}
rec_put (zei->records, &trec);
}
-int zebraExplain_lookup_attr_su(ZebraExplainInfo zei, int set, int use)
+int zebraExplain_lookup_attr_su(ZebraExplainInfo zei, int index_type,
+ int set, int use)
{
struct zebSUInfoB *zsui;
assert (zei->curDatabaseInfo);
for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
zsui; zsui=zsui->next)
{
struct zebSUInfoB *zsui;
assert (zei->curDatabaseInfo);
for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
zsui; zsui=zsui->next)
- if (zsui->info.which == ZEB_SU_SET_USE &&
+ if (zsui->info.index_type == index_type &&
+ zsui->info.which == ZEB_SU_SET_USE &&
zsui->info.u.su.use == use && zsui->info.u.su.set == set)
return zsui->info.ordinal;
return -1;
}
zsui->info.u.su.use == use && zsui->info.u.su.set == set)
return zsui->info.ordinal;
return -1;
}
-int zebraExplain_lookup_attr_str(ZebraExplainInfo zei, const char *str)
+int zebraExplain_lookup_attr_str(ZebraExplainInfo zei, int index_type,
+ const char *str)
{
struct zebSUInfoB *zsui;
assert (zei->curDatabaseInfo);
for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
zsui; zsui=zsui->next)
{
struct zebSUInfoB *zsui;
assert (zei->curDatabaseInfo);
for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
zsui; zsui=zsui->next)
- if (zsui->info.which == ZEB_SU_STR &&
- !strcmp(zsui->info.u.str, str))
+ if (zsui->info.index_type == index_type &&
+ zsui->info.which == ZEB_SU_STR && !strcmp(zsui->info.u.str, str))
return zsui->info.ordinal;
return -1;
}
return zsui->info.ordinal;
return -1;
}
@@
-1436,7
+1459,8
@@
void zebraExplain_addAttributeSet (ZebraExplainInfo zei, int set)
}
}
}
}
-int zebraExplain_add_attr_su(ZebraExplainInfo zei, int set, int use)
+int zebraExplain_add_attr_su(ZebraExplainInfo zei, int index_type,
+ int set, int use)
{
struct zebSUInfoB *zsui;
{
struct zebSUInfoB *zsui;
@@
-1447,6
+1471,7
@@
int zebraExplain_add_attr_su(ZebraExplainInfo zei, int set, int use)
zei->curDatabaseInfo->attributeDetails->SUInfo = zsui;
zei->curDatabaseInfo->attributeDetails->dirty = 1;
zei->dirty = 1;
zei->curDatabaseInfo->attributeDetails->SUInfo = zsui;
zei->curDatabaseInfo->attributeDetails->dirty = 1;
zei->dirty = 1;
+ zsui->info.index_type = index_type;
zsui->info.which = ZEB_SU_SET_USE;
zsui->info.u.su.set = set;
zsui->info.u.su.use = use;
zsui->info.which = ZEB_SU_SET_USE;
zsui->info.u.su.set = set;
zsui->info.u.su.use = use;
@@
-1454,7
+1479,8
@@
int zebraExplain_add_attr_su(ZebraExplainInfo zei, int set, int use)
return zsui->info.ordinal;
}
return zsui->info.ordinal;
}
-int zebraExplain_add_attr_str(ZebraExplainInfo zei, const char *str)
+int zebraExplain_add_attr_str(ZebraExplainInfo zei, int index_type,
+ const char *index_name)
{
struct zebSUInfoB *zsui;
{
struct zebSUInfoB *zsui;
@@
-1464,8
+1490,9
@@
int zebraExplain_add_attr_str(ZebraExplainInfo zei, const char *str)
zei->curDatabaseInfo->attributeDetails->SUInfo = zsui;
zei->curDatabaseInfo->attributeDetails->dirty = 1;
zei->dirty = 1;
zei->curDatabaseInfo->attributeDetails->SUInfo = zsui;
zei->curDatabaseInfo->attributeDetails->dirty = 1;
zei->dirty = 1;
+ zsui->info.index_type = index_type;
zsui->info.which = ZEB_SU_STR;
zsui->info.which = ZEB_SU_STR;
- zsui->info.u.str = nmem_strdup(zei->nmem, str);
+ zsui->info.u.str = nmem_strdup(zei->nmem, index_name);
zsui->info.ordinal = (zei->ordinalSU)++;
return zsui->info.ordinal;
}
zsui->info.ordinal = (zei->ordinalSU)++;
return zsui->info.ordinal;
}