projects
/
metaproxy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use base db for Torus lookup - up to comma - if given
[metaproxy-moved-to-github.git]
/
src
/
filter_zoom.cpp
diff --git
a/src/filter_zoom.cpp
b/src/filter_zoom.cpp
index
8927d79
..
5860e15
100644
(file)
--- a/
src/filter_zoom.cpp
+++ b/
src/filter_zoom.cpp
@@
-423,7
+423,7
@@
void yf::Zoom::Impl::configure(const xmlNode *ptr, bool test_only)
"Bad attribute " + std::string((const char *)
attr->name));
}
"Bad attribute " + std::string((const char *)
attr->name));
}
- if (ccl_field.length() && cql_field.length())
+ if (cql_field.length())
fieldmap[cql_field] = ccl_field;
}
else if (!strcmp((const char *) ptr->name, "records"))
fieldmap[cql_field] = ccl_field;
}
else if (!strcmp((const char *) ptr->name, "records"))
@@
-737,7
+737,10
@@
struct cql_node *yf::Zoom::Impl::convert_cql_fields(struct cql_node *cn,
it = fieldmap.find(cn->u.st.index);
if (it == fieldmap.end())
return cn;
it = fieldmap.find(cn->u.st.index);
if (it == fieldmap.end())
return cn;
- cn->u.st.index = odr_strdup(odr, it->second.c_str());
+ if (it->second.length())
+ cn->u.st.index = odr_strdup(odr, it->second.c_str());
+ else
+ cn->u.st.index = 0;
}
break;
case CQL_NODE_BOOL:
}
break;
case CQL_NODE_BOOL:
@@
-770,7
+773,14
@@
void yf::Zoom::Frontend::handle_search(mp::Package &package)
int error = 0;
const char *addinfo = 0;
std::string db(sr->databaseNames[0]);
int error = 0;
const char *addinfo = 0;
std::string db(sr->databaseNames[0]);
- BackendPtr b = get_backend_from_databases(db, &error, &addinfo);
+ std::string torus_db;
+ size_t db_arg_pos = db.find(',');
+ if (db_arg_pos != std::string::npos)
+ torus_db = db.substr(0, db_arg_pos);
+ else
+ torus_db = db;
+
+ BackendPtr b = get_backend_from_databases(torus_db, &error, &addinfo);
if (error)
{
apdu_res =
if (error)
{
apdu_res =
@@
-866,6
+876,7
@@
void yf::Zoom::Frontend::handle_search(mp::Package &package)
assert(pqf_wrbuf == 0);
int cerror, cpos;
struct ccl_rpn_node *cn;
assert(pqf_wrbuf == 0);
int cerror, cpos;
struct ccl_rpn_node *cn;
+ yaz_log(YLOG_LOG, "CCL: %s", wrbuf_cstr(ccl_wrbuf));
cn = ccl_find_str(b->sptr->ccl_bibset, wrbuf_cstr(ccl_wrbuf),
&cerror, &cpos);
wrbuf_destroy(ccl_wrbuf);
cn = ccl_find_str(b->sptr->ccl_bibset, wrbuf_cstr(ccl_wrbuf),
&cerror, &cpos);
wrbuf_destroy(ccl_wrbuf);