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
Fixed bug #316: Numerical sort does not work for search.
[idzebra-moved-to-github.git]
/
index
/
zserver.c
diff --git
a/index/zserver.c
b/index/zserver.c
index
3077ed1
..
87dab70
100644
(file)
--- a/
index/zserver.c
+++ b/
index/zserver.c
@@
-1,6
+1,6
@@
-/* $Id: zserver.c,v 1.126 2004-12-21 22:00:57 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
- Index Data Aps
+/* $Id: zserver.c,v 1.131 2005-04-15 10:47:49 adam Exp $
+ Copyright (C) 1995-2005
+ Index Data ApS
This file is part of the Zebra server.
This file is part of the Zebra server.
@@
-20,8
+20,9
@@
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
02111-1307, USA.
*/
-#include <stdio.h>
#include <assert.h>
#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <fcntl.h>
#ifdef WIN32
#include <io.h>
#include <fcntl.h>
#ifdef WIN32
#include <io.h>
@@
-261,6
+262,8
@@
static void search_terms (ZebraHandle zh, bend_search_rr *r)
int bend_search (void *handle, bend_search_rr *r)
{
ZebraHandle zh = (ZebraHandle) handle;
int bend_search (void *handle, bend_search_rr *r)
{
ZebraHandle zh = (ZebraHandle) handle;
+ zint zhits = 0;
+ ZEBRA_RES res;
r->hits = 0;
r->errcode = 0;
r->hits = 0;
r->errcode = 0;
@@
-276,11
+279,18
@@
int bend_search (void *handle, bend_search_rr *r)
switch (r->query->which)
{
case Z_Query_type_1: case Z_Query_type_101:
switch (r->query->which)
{
case Z_Query_type_1: case Z_Query_type_101:
- zebra_search_RPN (zh, r->stream, r->query->u.type_1,
- r->setname, &r->hits);
- zebra_result (zh, &r->errcode, &r->errstring);
- if (!r->errcode)
+ res = zebra_search_RPN (zh, r->stream, r->query->u.type_1,
+ r->setname, &zhits);
+ if (zebra_errCode(zh) == 0)
+ {
+ if (zhits > 2147483646)
+ r->hits = 2147483647;
+ else
+ r->hits = (int) zhits;
search_terms (zh, r);
search_terms (zh, r);
+ }
+ else
+ zebra_result (zh, &r->errcode, &r->errstring);
break;
case Z_Query_type_2:
r->errcode = 107;
break;
case Z_Query_type_2:
r->errcode = 107;
@@
-381,7
+391,7
@@
int bend_delete (void *handle, bend_delete_rr *rr)
{
ZebraHandle zh = (ZebraHandle) handle;
{
ZebraHandle zh = (ZebraHandle) handle;
- rr->delete_status = zebra_deleleResultSet(zh, rr->function,
+ rr->delete_status = zebra_deleteResultSet(zh, rr->function,
rr->num_setnames, rr->setnames,
rr->statuses);
return 0;
rr->num_setnames, rr->setnames,
rr->statuses);
return 0;
@@
-637,7
+647,7
@@
int bend_esrequest (void *handle, bend_esrequest_rr *rr)
}
else
{
}
else
{
- int r = -1;
+ ZEBRA_RES r = ZEBRA_FAIL;
switch(action) {
case 1:
r = zebra_insert_record(
switch(action) {
case 1:
r = zebra_insert_record(
@@
-649,7
+659,7
@@
int bend_esrequest (void *handle, bend_esrequest_rr *rr)
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
0);
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
0);
- if (r)
+ if (r == ZEBRA_FAIL)
{
rr->errcode = 224;
rr->errstring = "insert_record failed";
{
rr->errcode = 224;
rr->errstring = "insert_record failed";
@@
-666,7
+676,7
@@
int bend_esrequest (void *handle, bend_esrequest_rr *rr)
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
1);
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
1);
- if (r)
+ if (r == ZEBRA_FAIL)
{
rr->errcode = 224;
rr->errstring = "update_record failed";
{
rr->errcode = 224;
rr->errstring = "update_record failed";
@@
-682,7
+692,7
@@
int bend_esrequest (void *handle, bend_esrequest_rr *rr)
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
0);
rec->u.octet_aligned->buf,
rec->u.octet_aligned->len,
0);
- if (r)
+ if (r == ZEBRA_FAIL)
{
rr->errcode = 224;
rr->errstring = "delete_record failed";
{
rr->errcode = 224;
rr->errstring = "delete_record failed";