-/* $Id: zebraapi.c,v 1.150 2005-01-21 19:07:25 adam Exp $
+/* $Id: zebraapi.c,v 1.160 2005-04-14 12:02:08 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
if (res_get_match (res, "isam", "c", ISAM_DEFAULT))
{
struct ISAMC_M_s isamc_m;
- if (!(reg->isamc = isc_open (reg->bfs, FNAME_ISAMC,
+ if (!(reg->isamc = isamc_open (reg->bfs, FNAME_ISAMC,
rw, key_isamc_m(res, &isamc_m))))
{
- yaz_log (YLOG_WARN, "isc_open failed");
+ yaz_log (YLOG_WARN, "isamc_open failed");
return 0;
}
}
if (reg->isams)
isams_close (reg->isams);
if (reg->isamc)
- isc_close (reg->isamc);
+ isamc_close (reg->isamc);
if (reg->isamb)
isamb_close (reg->isamb);
rec_close (®->records);
}
}
+int zebra_select_default_database(ZebraHandle zh)
+{
+ if (!zh->res)
+ {
+ /* no database has been selected - so we select based on
+ resource setting (including group)
+ */
+ const char *group = res_get(zh->service->global_res, "group");
+ const char *v = res_get_prefix(zh->service->global_res,
+ "database", group, "Default");
+ zebra_select_database(zh, v);
+ }
+ return 0;
+}
+
void map_basenames (ZebraHandle zh, ODR stream,
int *num_bases, char ***basenames)
{
zh->errCode = 0;
info.zh = zh;
+
info.num_bases = *num_bases;
info.basenames = *basenames;
info.new_num_max = 128;
}
int zebra_search_RPN (ZebraHandle zh, ODR o,
- Z_RPNQuery *query, const char *setname, int *hits)
+ Z_RPNQuery *query, const char *setname, zint *hits)
{
const char *max;
zint maxhits;
assert(recs);
assert(num_recs>0);
- yaz_log(log_level, "zebra_records_retrieve n=%d",num_recs);
+ yaz_log(log_level, "zebra_records_retrieve n=%d", num_recs);
zh->errCode = 0;
if (!zh->res)
char *buf;
int len;
recs[i].errCode =
- zebra_record_fetch (zh, poset[i].sysno, poset[i].score,
- stream, input_format, comp,
- &recs[i].format, &buf, &len,
- &recs[i].base, &recs[i].errString);
+ zebra_record_fetch(zh, poset[i].sysno, poset[i].score,
+ stream, input_format, comp,
+ &recs[i].format, &buf, &len,
+ &recs[i].base, &recs[i].errString);
recs[i].len = len;
if (len > 0)
{
return ret;
}
+int zebra_scan_PQF(ZebraHandle zh, ODR stream, const char *query,
+ int *position, int *num_entries, ZebraScanEntry **entries,
+ int *is_partial)
+{
+ YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
+ Z_AttributesPlusTerm *zapt;
+ int *attributeSet;
+
+ if (!(zapt = yaz_pqf_scan(pqf_parser, stream, &attributeSet, query)))
+ {
+ yaz_pqf_destroy (pqf_parser);
+ return -1;
+ }
+ yaz_pqf_destroy (pqf_parser);
+ return zebra_scan(zh, stream, zapt, VAL_BIB1,
+ position, num_entries, entries, is_partial);
+}
+
int zebra_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
- oid_value attributeset,
- int *position, int *num_entries, ZebraScanEntry **entries,
- int *is_partial)
+ oid_value attributeset,
+ int *position, int *num_entries, ZebraScanEntry **entries,
+ int *is_partial)
{
ASSERTZH;
assert(stream);
int i, status;
ASSERTZH;
assert(statuses);
- yaz_log(log_level, "zebra_deleleResultSet n=%d",num_setnames);
+ yaz_log(log_level, "zebra_deleteResultSet n=%d",num_setnames);
zh->errCode = 0;
if (zebra_begin_read(zh))
return Z_DeleteStatus_systemProblemAtTarget;
int delete_w_handle(const char *info, void *handle)
{
ZebraHandle zh = (ZebraHandle) handle;
- ISAMC_P pos;
+ ISAM_P pos;
ASSERTZH;
if (*info == sizeof(pos))
int zebra_begin_trans (ZebraHandle zh, int rw)
{
ASSERTZH;
- if (!zh->res)
- {
- /* no database has been selected - so we select based on
- resource setting (including group)
- */
- const char *group = res_get(zh->service->global_res, "group");
- const char *v = res_get_prefix(zh->service->global_res,
- "database", group, "Default");
- zebra_select_database(zh, v);
- }
+ zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = 2;
zh->records_processed, zh->records_inserted,
zh->records_updated, zh->records_deleted);
- status->processed = zh->records_processed;
- status->inserted = zh->records_inserted;
- status->updated = zh->records_updated;
- status->deleted = zh->records_deleted;
+ status->processed = (int) zh->records_processed;
+ status->inserted = (int) zh->records_inserted;
+ status->updated = (int) zh->records_updated;
+ status->deleted = (int) zh->records_deleted;
zebra_get_state (zh, &val, &seqno);
if (val != 'd')
ASSERTZH;
zh->errCode = 0;
+ zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = 109;
yaz_log(log_level, "zebra_init");
zh->errCode = 0;
+ zebra_select_default_database(zh);
if (!zh->res)
{
zh->errCode = 109;
}
rval = res_get (zh->res, "shadow");
- bfs = bfs_create (res_get (zh->service->global_res, "register"),
- zh->path_reg);
+ bfs = bfs_create (res_get (zh->res, "register"), zh->path_reg);
if (!bfs)
return -1;
if (rval && *rval)
*/
int zebra_search_PQF (ZebraHandle zh, const char *pqf_query,
- const char *setname, int *numhits)
+ const char *setname, zint *numhits)
{
- int hits = 0;
+ zint hits = 0;
int res = -1;
Z_RPNQuery *query;
ODR odr = odr_createmem(ODR_ENCODE);
assert(pqf_query);
assert(setname);
- yaz_log(log_level, "zebra_search_PQF s=%s q=%s",setname, pqf_query);
+ yaz_log(log_level, "zebra_search_PQF s=%s q=%s", setname, pqf_query);
query = p_query_rpn (odr, PROTO_Z3950, pqf_query);
odr_destroy(odr);
- yaz_log(log_level, "Hits: %d",hits);
+ yaz_log(log_level, "Hits: " ZINT_FORMAT, hits);
if (numhits)
*numhits = hits;
return sort_status;
}
+struct BFiles_struct *zebra_get_bfs(ZebraHandle zh)
+{
+ if (zh && zh->reg)
+ return zh->reg->bfs;
+ return 0;
+}