-/* $Id: zserver.c,v 1.142 2005-12-07 17:00:46 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: zserver.c,v 1.148 2006-06-07 10:50:09 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
se->subqueryExpression->u.term->termComment = 0;
se->subqueryInterpretation = 0;
se->subqueryRecommendation = 0;
- if (count > 2000000000)
- count = 2000000000;
- se->subqueryCount = odr_intdup(r->stream, (int) count);
+ if (count > 2147483646)
+ count = 2147483647;
+ se->subqueryCount = odr_intdup(r->stream, CAST_ZINT_TO_INT(count));
se->subqueryWeight = 0;
se->resultsByDB = 0;
}
}
-int bend_search (void *handle, bend_search_rr *r)
+int bend_search(void *handle, bend_search_rr *r)
{
ZebraHandle zh = (ZebraHandle) handle;
zint zhits = 0;
zebra_result(zh, &r->errcode, &r->errstring);
else
{
- if (zhits > 2147483646)
- r->hits = 2147483647;
- else
- r->hits = (int) zhits;
+ if (zhits > 2147483646)
+ zhits = 2147483647;
+ r->hits = CAST_ZINT_TO_INT(zhits);
search_terms (zh, r);
}
break;
for (i = 0; i < r->num_entries; i++)
{
r->entries[i].term = entries[i].term;
- r->entries[i].occurrences = entries[i].occurrences;
+ r->entries[i].occurrences =
+ CAST_ZINT_TO_INT(entries[i].occurrences);
}
}
else
{
ZebraHandle zh = (ZebraHandle) handle;
- zebra_sort (zh, rr->stream,
- rr->num_input_setnames, (const char **) rr->input_setnames,
- rr->output_setname, rr->sort_sequence, &rr->sort_status);
- zebra_result (zh, &rr->errcode, &rr->errstring);
+ if (zebra_sort (zh, rr->stream,
+ rr->num_input_setnames, (const char **) rr->input_setnames,
+ rr->output_setname, rr->sort_sequence, &rr->sort_status)
+ != ZEBRA_OK)
+ zebra_result (zh, &rr->errcode, &rr->errstring);
return 0;
}
return 0;
}
-static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r)
+static void es_admin_request (bend_esrequest_rr *rr, ZebraHandle zh, Z_AdminEsRequest *r)
{
+ ZEBRA_RES res = ZEBRA_OK;
if (r->toKeep->databaseName)
{
yaz_log(YLOG_LOG, "adm request database %s", r->toKeep->databaseName);
{
case Z_ESAdminOriginPartToKeep_reIndex:
yaz_log(YLOG_LOG, "adm-reindex");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
break;
case Z_ESAdminOriginPartToKeep_truncate:
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
yaz_log(YLOG_LOG, "adm-truncate");
break;
case Z_ESAdminOriginPartToKeep_drop:
yaz_log(YLOG_LOG, "adm-drop");
- zebra_drop_database (zh, r->toKeep->databaseName);
+ res = zebra_drop_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_create:
yaz_log(YLOG_LOG, "adm-create %s", r->toKeep->databaseName);
- zebra_create_database (zh, r->toKeep->databaseName);
+ res = zebra_create_database (zh, r->toKeep->databaseName);
break;
case Z_ESAdminOriginPartToKeep_import:
yaz_log(YLOG_LOG, "adm-import");
- zebra_admin_import_begin (zh, r->toKeep->databaseName,
- r->toKeep->u.import->recordType);
+ res = zebra_admin_import_begin (zh, r->toKeep->databaseName,
+ r->toKeep->u.import->recordType);
break;
case Z_ESAdminOriginPartToKeep_refresh:
yaz_log(YLOG_LOG, "adm-refresh");
case Z_ESAdminOriginPartToKeep_commit:
yaz_log(YLOG_LOG, "adm-commit");
if (r->toKeep->databaseName)
- zebra_select_database(zh, r->toKeep->databaseName);
+ {
+ if (zebra_select_database(zh, r->toKeep->databaseName) !=
+ ZEBRA_OK)
+ yaz_log(YLOG_WARN, "zebra_select_database failed in "
+ "adm-commit");
+ }
zebra_commit(zh);
break;
case Z_ESAdminOriginPartToKeep_shutdown:
yaz_log(YLOG_LOG, "shutdown");
- zebra_admin_shutdown(zh);
+ res = zebra_admin_shutdown(zh);
break;
case Z_ESAdminOriginPartToKeep_start:
yaz_log(YLOG_LOG, "start");
break;
default:
yaz_log(YLOG_LOG, "unknown admin");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-reindex not implemented yet";
}
- return 0;
+ if (res != ZEBRA_OK)
+ zebra_result(zh, &rr->errcode, &rr->errstring);
}
-static int es_admin (ZebraHandle zh, Z_Admin *r)
+static void es_admin (bend_esrequest_rr *rr, ZebraHandle zh, Z_Admin *r)
{
switch (r->which)
{
case Z_Admin_esRequest:
- es_admin_request (zh, r->u.esRequest);
- break;
- case Z_Admin_taskPackage:
- yaz_log (YLOG_LOG, "adm taskpackage (unhandled)");
- break;
+ es_admin_request (rr, zh, r->u.esRequest);
+ return;
default:
break;
}
- return 0;
+ yaz_log (YLOG_WARN, "adm taskpackage (unhandled)");
+ rr->errcode = YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED;
+ rr->errstring = "adm-task package (unhandled)";
}
int bend_segment (void *handle, bend_segment_rr *rr)
}
else if (rr->esr->taskSpecificParameters->which == Z_External_ESAdmin)
{
- es_admin (zh, rr->esr->taskSpecificParameters->u.adminService);
-
- zebra_result (zh, &rr->errcode, &rr->errstring);
+ es_admin(rr, zh, rr->esr->taskSpecificParameters->u.adminService);
}
else if (rr->esr->taskSpecificParameters->which == Z_External_update)
{
Z_External *rec = notToKeep->elements[i]->record;
struct oident *oident = 0;
Odr_oct *opaque_recid = 0;
- SYSNO sysno = 0;
+ SYSNO *sysno = 0;
+ SYSNO sysno_tmp;
if (notToKeep->elements[i]->u.opaque)
{
opaque_recid = notToKeep->elements[i]->u.opaque;
break; /* OK, recid already set */
case Z_IUSuppliedRecords_elem_number:
- sysno = *notToKeep->elements[i]->u.number;
+ sysno_tmp = *notToKeep->elements[i]->u.number;
+ sysno = &sysno_tmp;
break;
}
}
r = zebra_insert_record(
zh,
0, /* recordType */
- &sysno,
+ sysno,
0, /* match */
0, /* fname */
(const char *) rec->u.octet_aligned->buf,
r = zebra_update_record(
zh,
0, /* recordType */
- &sysno,
+ sysno,
0, /* match */
0, /* fname */
(const char *) rec->u.octet_aligned->buf,
r = zebra_delete_record(
zh,
0, /* recordType */
- &sysno,
+ sysno,
0, /* match */
0, /* fname */
(const char *) rec->u.octet_aligned->buf,
}
}
}
- zebra_end_trans (zh);
+ if (zebra_end_trans (zh) != ZEBRA_OK)
+ {
+ yaz_log(YLOG_WARN, "zebra_end_trans failed for"
+ " extended service operation");
+ }
}
}
}
return statserv_main (argc, argv, bend_init, bend_close);
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+