From eff583ee889e4098ff0f5debb3a05ec09b2e7b19 Mon Sep 17 00:00:00 2001 From: Joel Bernstein Date: Wed, 21 Jun 2017 10:01:40 -0400 Subject: [PATCH] SOLR-10933: LetStream variables are not evaluated in proper order --- .../org/apache/solr/client/solrj/io/stream/LetStream.java | 4 ++-- .../solr/client/solrj/io/stream/StreamExpressionTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LetStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LetStream.java index 8c9f02be5b5..6dd73f5fdd0 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LetStream.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/LetStream.java @@ -18,7 +18,7 @@ package org.apache.solr.client.solrj.io.stream; import java.io.IOException; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -41,7 +41,7 @@ public class LetStream extends TupleStream implements Expressible { private static final long serialVersionUID = 1; private TupleStream stream; private StreamContext streamContext; - private Map letParams = new HashMap(); + private Map letParams = new LinkedHashMap(); public LetStream(StreamExpression expression, StreamFactory factory) throws IOException { List streamExpressions = factory.getExpressionOperandsRepresentingTypes(expression, Expressible.class, TupleStream.class); diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java index f58a19e0b0d..bd25e261cb5 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java @@ -6550,7 +6550,7 @@ public class StreamExpressionTest extends SolrCloudTestCase { updateRequest.commit(cluster.getSolrClient(), COLLECTIONORALIAS); String expr = "search("+COLLECTIONORALIAS+", q=\"*:*\", fl=\"id,test_t, test_i\", sort=\"id desc\")"; - String cat = "let(a ="+expr+", b = add(1,3), c=col(a, test_i), tuple(test = add(1,1), test1=b, results=a, test2=add(c)))"; + String cat = "let(d ="+expr+", b = add(1,3), c=col(d, test_i), tuple(test = add(1,1), test1=b, results=d, test2=add(c)))"; ModifiableSolrParams paramsLoc = new ModifiableSolrParams(); paramsLoc.set("expr", cat); paramsLoc.set("qt", "/stream");