-/* $Id: zebraapi.c,v 1.100 2003-05-20 12:52:50 adam Exp $
+/* $Id: zebraapi.c,v 1.102 2003-05-20 21:39:57 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
return 0;
}
-void zebra_search_rpn (ZebraHandle zh, ODR decode, ODR stream,
+void zebra_search_RPN (ZebraHandle zh,
Z_RPNQuery *query, const char *setname, int *hits)
{
ASSERTZH;
if (zebra_select_database (zh, database))
return;
- zebra_begin_trans (zh, 1);
+ if (zebra_begin_trans (zh, 1))
+ return;
zs = zh->service;
/* announce database */
int zebra_begin_trans (ZebraHandle zh, int rw)
{
+ yaz_log(LOG_LOG, "zebra_begin_trans rw=%d trans=%d", rw, zh->trans_no);
if (!zh->res)
{
zh->errCode = 2;
zh->errCode=0;
- yaz_log (LOG_LOG, "zebra_begin_trans");
-
zh->records_inserted = 0;
zh->records_updated = 0;
zh->records_deleted = 0;
zh->path_reg);
if (zh->reg)
zh->reg->seqno = seqno;
+ else
+ {
+ zebra_set_state (zh, 'o', seqno);
+
+ zebra_unlock (zh->lock_shadow);
+ zebra_unlock (zh->lock_normal);
+
+ zh->trans_no--;
+ zh->trans_w_no = 0;
+
+ zh->errCode = 2;
+ zh->errString = "zebra_begin_trans: cannot open register";
+ yaz_log(LOG_FATAL, zh->errString);
+ return -1;
+ }
}
else
{
zh->res, zh->path_reg);
if (!zh->reg)
{
+ zebra_unlock (zh->lock_normal);
+ zebra_unlock (zh->lock_shadow);
+ zh->trans_no--;
zh->errCode = 109;
return -1;
}
is not mandatory. (it's repeatable now, also in zebraapi.c)
*/
-void zebra_search_RPN (ZebraHandle zh, Z_RPNQuery *query,
- const char *setname, int *hits)
-{
- zh->hits = 0;
- *hits = 0;
-
- if (zebra_begin_read (zh))
- return;
- resultSetAddRPN (zh, query, zh->num_basenames, zh->basenames, setname);
-
- zebra_end_read (zh);
-
- *hits = zh->hits;
-}
-
int zebra_search_PQF (ZebraHandle zh, const char *pqf_query,
const char *setname)
{