[
https://issues.apache.org/jira/browse/SOLR-10945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16068433#comment-16068433
]
Susheel Kumar commented on SOLR-10945:
--------------------------------------
Hi Joel - I looked the code to debug this issue and here is what i found
The above two expressions (...merge(get(a)... or ...merge(sort(get(a)...) which
are similar (mathematically/syntactically/functionally) as a whole, but the
one which fails where merge is passed get(a) directly, results into error since
GetStream is passed in the merge init method and GetStream.getStreamSort()
method returns null (below) while in the other case SortStream is passed its
getStreamSort() method returns proper comparator.
Wondering how can we handle this either by passing StreamComparator to
GetStream (and how) or do something in merge to not upfront check. Please
share your thoughts
/** Return the stream sort - ie, the order in which records are returned */
public StreamComparator getStreamSort(){
return null;
}
MergeStream
--
private void init(StreamComparator comp, TupleStream ... streams) throws
IOException {
// All streams must both be sorted so that comp can be derived from
for(TupleStream stream : streams){
if(!comp.isDerivedFrom(stream.getStreamSort())){
throw new IOException("Invalid MergeStream - all substream comparators
(sort) must be a superset of this stream's comparator.");
}
}
> Get expression fails to operate on sort expr
> --------------------------------------------
>
> Key: SOLR-10945
> URL: https://issues.apache.org/jira/browse/SOLR-10945
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: search
> Affects Versions: 6.6
> Reporter: Susheel Kumar
> Priority: Minor
>
> Get expr fails to operate on a variable which has sort stream and returns
> "Invalid MergeStream - all substream comparators (sort) must be a superset of
> this stream's comparator." Exception tuple.
> Below get is given variable a and b which are having sort expr and fails to
> work
> ==
> let(
> a=sort(select(tuple(id=3,email="C"),id,email),by="id asc,email asc"),
> b=sort(select(tuple(id=2,email="B"),id,email),by="id asc,email asc"),
> c=merge(get(a),get(b),on="id asc,email asc"),
> get(c)
> )
> {
> "result-set": {
> "docs": [
> {
> "EXCEPTION": "Invalid MergeStream - all substream comparators (sort)
> must be a superset of this stream's comparator.",
> "EOF": true
> }
> ]
> }
> }
> while below sort outside get works
> ==
> let(
> a=select(tuple(id=3,email="C"),id,email),
> b=select(tuple(id=2,email="B"),id,email),
> c=merge(sort(get(a),by="id asc,email asc"),sort(get(b),by="id asc,email asc"),
> on="id asc,email asc"),
> get(c)
> )
> {
> "result-set": {
> "docs": [
> {
> "email": "B",
> "id": "2"
> },
> {
> "email": "C",
> "id": "3"
> },
> {
> "EOF": true,
> "RESPONSE_TIME": 0
> }
> ]
> }
> }
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]