Issue raised by:
How should a target behave when it receives a search request (single-PDU) specifying two or more databases, and the query is supported for at least one database and not supported for at least one database (for example, a request specifying 2 databases, where the query includes an attribute supported by one databases but not the other).
When the query is not supported for one of the databases listed in a search request (that is, when there is at least one database for which the query is not supported, even though the query may be supported for other listed databases), the target should set 'search-status' to 'failure' , and supply an appropriate diagnostic. (For example, when an attribute is not supported for a database, supply bib-1 diagnostic 1056: "Attribute not supported for database". Multiple instances of diagnostic 1056 may be supplied for multiple attribute/database combinations.)
Please note: this clarification does not imply that single-PDU mult-database searching must be supported. See Support for Single-PDU, Multi-database Searching .
When a query is supported for one or more but not all of the databases, and if the target wishes to make the result set available to the client (the result set produced by applying the query to the subset of supported databases) the target may set result-set-status to 'subset': "partial, valid results available" .
The reasoning for this prescribed behavior is as follows. Setting the status to 'success' would give the origin the false impression that the search was executed across all of the databases. For those databases for which the query is not supported, the origin would be led to believe instead that the query is indeed supported and that no records were found. But while a status of 'success' is misleading when part of the search fails, 'failure', too, is misleading when part of the search succeeds. Thus the parameter Result-set-status helps disambiguate a 'failure' status.
Result-set-status may be supplied only when Search-status is 'failure'. Thus, setting status to 'failure' is prescribed, not because of any implied semantics of a failure status, but more pragmatically, because it provides the origin with access to the result set.