-/* $Id: zebraapi.c,v 1.192 2005-10-28 07:25:30 adam Exp $
+/* $Id: zebraapi.c,v 1.196 2005-12-09 10:45:04 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
reg->key_buf = 0;
-#if NEW_REC_KEYS
reg->keys = zebra_rec_keys_open();
-#else
- reg->keys.buf_max = 0;
- reg->keys.buf = 0;
- reg->keys.codec_handle = iscz1_start();
-#endif
+#if NATTR
+ reg->sortKeys = zebra_rec_keys_open();
+#else
reg->sortKeys.buf = 0;
reg->sortKeys.buf_max = 0;
-#if NATTR
- reg->sortKeys.codec_handle = iscz1_start();
#endif
reg->records = 0;
bfs_destroy (reg->bfs);
data1_destroy (reg->dh);
- xfree(reg->sortKeys.buf);
-#if NEW_REC_KEYS
zebra_rec_keys_close(reg->keys);
-#else
- xfree(reg->keys.buf);
- if (reg->keys.codec_handle)
- iscz1_stop(reg->keys.codec_handle);
#if NATTR
- if (reg->sortKeys.codec_handle)
- iscz1_stop(reg->sortKeys.codec_handle);
-#endif
+ zebra_rec_keys_close(reg->sortKeys);
+#else
+ xfree(reg->sortKeys.buf);
#endif
xfree(reg->key_buf);
zebra_clearError(zh);
if (!recid_buf || recid_len <= 0 || recid_len >= sizeof(recid_z))
+ {
+ zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
+ "no record ID or empty record ID");
return ZEBRA_FAIL;
+ }
memcpy (recid_z, recid_buf, recid_len);
recid_z[recid_len] = 0;
{
if (action == 1) /* fail if insert */
{
- zebra_end_trans(zh);
- return ZEBRA_FAIL;
+ zebra_end_trans(zh);
+ zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
+ "Cannot insert record: already exist");
+ return ZEBRA_FAIL;
}
memcpy (&sysno, rinfo+1, sizeof(sysno));
if (action == 2 || action == 3) /* fail if delete or update */
{
zebra_end_trans(zh);
+ zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
+ "Cannot delete/update record: does not exist");
return ZEBRA_FAIL;
}
action = 1; /* make it an insert (if it's an update).. */
&sysno,
0, /* match */
0, /* fname */
- 0, /* force update */
+ 0, /* force update */
1 /* allow update */
);
+ if (res == ZEBRA_FAIL)
+ {
+ zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED,
+ "Unable to parse record");
+ }
if (action == 1)
{
dict_insert (zh->reg->matchDict, recid_z, sizeof(sysno), &sysno);
int zebra_add_record(ZebraHandle zh,
const char *buf, int buf_size)
{
- SYSNO sysno = 0;
- return zebra_update_record(zh, 0, &sysno, 0, 0, buf, buf_size, 0);
+ return zebra_update_record(zh, 0, 0 /* sysno */, 0, 0, buf, buf_size, 0);
}
ZEBRA_RES zebra_insert_record (ZebraHandle zh,
{
ZEBRA_RES res;
ASSERTZH;
- assert(sysno);
assert(buf);
- yaz_log(log_level, "zebra_update_record sysno=" ZINT_FORMAT, *sysno);
+ yaz_log(log_level, "zebra_update_record sysno=" ZINT_FORMAT,
+ sysno ? *sysno : "none");
if (buf_size < 1) buf_size = strlen(buf);