From a1dba281bafc701a7e958d6e7512a2dbb3027191 Mon Sep 17 00:00:00 2001 From: pop Date: Mon, 3 Mar 2003 00:48:55 +0000 Subject: [PATCH] CQL tests and error handling --- perl/demo/cql.map | 10 ++++------ perl/zebra_api_ext.c | 25 +++++++++++++++---------- perl/zebra_perl.h | 2 +- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/perl/demo/cql.map b/perl/demo/cql.map index 4f85a0b..6ca9861 100644 --- a/perl/demo/cql.map +++ b/perl/demo/cql.map @@ -1,11 +1,9 @@ set.srw = http://www.loc.gov/zing/cql/srw-indexes/v1.0/ set.dc = http://www.loc.gov/zing/cql/dc-indexes/v1.0/ -set.job = http://www.technomat.hu/zombine/1.0/cql/job/ -qualifier.srw.serverChoice = 1=1016 4=2 6=1 +qualifier.srw.serverChoice = 1=1016 qualifier.dc.title = 1=4 qualifier.dc.subject = 1=21 -qualifier.job.id = 1=5000 4=109 6=3 relation.< = 2=1 relation.le = 2=2 @@ -14,6 +12,6 @@ relation.ge = 2=4 relation.> = 2=5 relation.scr = 2=3 -position.any = 3=3 -#structure.job.id = 4=109 -#structure.* = 4=1 +position.any = 3=3 6=1 + +structure.* = 4=1 diff --git a/perl/zebra_api_ext.c b/perl/zebra_api_ext.c index 0712d5f..32289e9 100644 --- a/perl/zebra_api_ext.c +++ b/perl/zebra_api_ext.c @@ -228,22 +228,22 @@ int zebra_cql2pqf (cql_transform_t ct, const char *query, char *res, int len) { int status; - const char *addinfo; + const char *addinfo = ""; CQL_parser cp = cql_parser_create(); - if (status = cql_transform_error(ct, &addinfo)) { - logf (LOG_WARN,"Transform error %d %s\n", status, addinfo ? addinfo : ""); + if (status = cql_parser_string(cp, query)) { + cql_parser_destroy(cp); return (status); } - if (status = cql_parser_string(cp, query)) - return (status); - - if (status = cql_transform_buf(ct, cql_parser_result(cp), res, len)) { + if (cql_transform_buf(ct, cql_parser_result(cp), res, len)) { + status = cql_transform_error(ct, &addinfo); logf (LOG_WARN,"Transform error %d %s\n", status, addinfo ? addinfo : ""); + cql_parser_destroy(cp); return (status); } + cql_parser_destroy(cp); return (0); } @@ -311,10 +311,15 @@ void record_retrieve(RetrievalObj *ro, (RetrievalRecordBuf *) odr_malloc(stream, sizeof(*buf)); res->errCode = ro->records[i].errCode; - res->errString = ro->records[i].errString; + if (ro->records[i].errString) { + res->errString = odr_strdup(stream, ro->records[i].errString); + } else { + res->errString = ""; + } res->position = ro->records[i].position; res->base = ro->records[i].base; - res->format = ro->records[i].format; + res->format = (char *) + yaz_z3950_oid_value_to_str(ro->records[i].format, CLASS_RECSYN); res->buf = buf; res->buf->len = ro->records[i].len; res->buf->buf = ro->records[i].buf; @@ -507,7 +512,7 @@ void api_records_retrieve (ZebraHandle zh, ODR stream, &recs[i].base); recs[i].buf = (char *) odr_malloc(stream,recs[i].len); memcpy(recs[i].buf, b, recs[i].len); - recs[i].errString = NULL; + recs[i].errString = 0; /* Hmmm !!! we should get this */ recs[i].sysno = poset[i].sysno; recs[i].score = poset[i].score; } diff --git a/perl/zebra_perl.h b/perl/zebra_perl.h index 7020563..b7826df 100644 --- a/perl/zebra_perl.h +++ b/perl/zebra_perl.h @@ -31,7 +31,7 @@ typedef struct { char *base; int sysno; int score; - oid_value format; /* record syntax */ + char *format; /* record syntax */ RetrievalRecordBuf *buf; } RetrievalRecord; -- 1.7.10.4