You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2015/03/09 21:27:42 UTC
svn commit: r1665347 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/CHANGES.txt solr/solrj/
solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
Author: noble
Date: Mon Mar 9 20:27:42 2015
New Revision: 1665347
URL: http://svn.apache.org/r1665347
Log:
SOLR-7209: /update/json/docs carry forward fields from previous records
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1665347&r1=1665346&r2=1665347&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Mon Mar 9 20:27:42 2015
@@ -148,6 +148,9 @@ Bug Fixes
* SOLR-4464: DIH Processed documents counter resets to zero after first entity is processed.
(Dave Cook, Shawn Heisey, Aaron Greenspan, Thomas Champagne via shalin)
+* SOLR-7209: /update/json/docs carry forward fields from previous records (Noble Paul)
+
+
Optimizations
----------------------
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java?rev=1665347&r1=1665346&r2=1665347&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java Mon Mar 9 20:27:42 2015
@@ -320,7 +320,7 @@ public class JsonRecordReader {
final boolean isRecordStarted = recordStarted || isRecord;
Set<String> valuesAddedinThisFrame = null;
- if (isRecord) {
+ if (isRecord || !recordStarted) {
// This Node is a match for an PATH from a forEach attribute,
// prepare for the clean up that will occurr when the record
// is emitted after its END_ELEMENT is matched
@@ -384,7 +384,7 @@ public class JsonRecordReader {
Object val = parseSingleFieldValue(event, parser, runnable);
if (val != null) {
putValue(values, nameInRecord, val);
- if (isRecordStarted) valuesAddedinThisFrame.add(nameInRecord);
+ valuesAddedinThisFrame.add(nameInRecord);
}
} else {
@@ -414,12 +414,9 @@ public class JsonRecordReader {
}
}
} finally {
- if ((isRecord() || !isRecordStarted) && !stack.empty()) {
- Set<String> cleanThis = stack.pop();
- if (cleanThis != null) {
- for (String fld : cleanThis) {
- values.remove(fld);
- }
+ if ((isRecord() || !isRecordStarted)) {
+ for (String fld : valuesAddedinThisFrame) {
+ values.remove(fld);
}
}
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java?rev=1665347&r1=1665346&r2=1665347&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java Mon Mar 9 20:27:42 2015
@@ -220,4 +220,38 @@ public class TestJsonRecordReader extend
records = streamer.getAllRecords(new StringReader(json));
assertEquals(2, records.size());
}
+
+ public void testClearPreviousRecordFields() throws Exception {
+ String json = "{\n" +
+ "'first': 'John',\n" +
+ "'exams': [\n" +
+ "{'subject': 'Maths', 'test' : 'term1', 'marks':90},\n" +
+ "{'subject': 'Biology', 'test' : 'term1', 'marks':86}\n" +
+ "]\n" +
+ "}\n" +
+ "{\n" +
+ "'first': 'Bob',\n" +
+ "'exams': [\n" +
+ "{'subject': 'Maths', 'test': 'term1', 'marks': 95\n" +
+ "}\n" +
+ ",\n" +
+ "{\n" +
+ "'subject': 'Biology', 'test' : 'term1', 'marks': 92}\n" +
+ "]\n" +
+ "}";
+
+
+ JsonRecordReader streamer;
+ List<Map<String, Object>> records;
+
+ streamer = JsonRecordReader.getInst("/exams", Collections.singletonList("/**"));
+ records = streamer.getAllRecords(new StringReader(json));
+ assertEquals(4, records.size());
+
+ for (Map<String, Object> record : records) {
+ for (Map.Entry<String, Object> e : record.entrySet()) {
+ assertFalse(e.getValue() instanceof List);
+ }
+ }
+ }
}