You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2013/04/23 08:00:09 UTC

svn commit: r1470821 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/ solr/core/src/java/org/apache/solr/handler/admin/ solr/core/src/java/org/apache/solr/schema/ solr/core/src/test/org/apache/solr/handler/admin/

Author: sarowe
Date: Tue Apr 23 06:00:09 2013
New Revision: 1470821

URL: http://svn.apache.org/r1470821
Log:
SOLR-4729: LukeRequestHandler: Using a dynamic copyField source that is not also a dynamic field triggers error message 'undefined field: "(glob)"' (merged trunk r1470820)

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1470821&r1=1470820&r2=1470821&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Tue Apr 23 06:00:09 2013
@@ -45,6 +45,10 @@ Bug Fixes
 * SOLR-4333: edismax parser to not double-escape colons if already escaped by 
   the client application (James Dyer, Robert J. van der Boon)
 
+* SOLR-4729: LukeRequestHandler: Using a dynamic copyField source that is
+  not also a dynamic field triggers error message 'undefined field: "(glob)"'.
+  (Adam Hahn, hossman, Steve Rowe)
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1470821&r1=1470820&r2=1470821&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Tue Apr 23 06:00:09 2013
@@ -525,7 +525,7 @@ public class LukeRequestHandler extends 
       field.add("positionIncrementGap", ft.getAnalyzer().getPositionIncrementGap(f.getName()));
     }
     field.add("copyDests", toListOfStringDests(schema.getCopyFieldsList(f.getName())));
-    field.add("copySources", toListOfStrings(schema.getCopySources(f.getName())));
+    field.add("copySources", schema.getCopySources(f.getName()));
 
 
     fields.put( f.getName(), field );

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/IndexSchema.java?rev=1470821&r1=1470820&r2=1470821&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/IndexSchema.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/IndexSchema.java Tue Apr 23 06:00:09 2013
@@ -1224,25 +1224,25 @@ public class IndexSchema {
    * @return Array of fields copied into this field
    */
 
-  public SchemaField[] getCopySources(String destField) {
+  public List<String> getCopySources(String destField) {
     SchemaField f = getField(destField);
     if (!isCopyFieldTarget(f)) {
-      return new SchemaField[0];
+      return Collections.emptyList();
     }
-    List<SchemaField> sf = new ArrayList<SchemaField>();
+    List<String> fieldNames = new ArrayList<String>();
     for (Map.Entry<String, List<CopyField>> cfs : copyFieldsMap.entrySet()) {
       for (CopyField copyField : cfs.getValue()) {
         if (copyField.getDestination().getName().equals(destField)) {
-          sf.add(copyField.getSource());
+          fieldNames.add(copyField.getSource().getName());
         }
       }
     }
     for (DynamicCopy dynamicCopy : dynamicCopyFields) {
       if (dynamicCopy.getDestFieldName().equals(destField)) {
-        sf.add(getField(dynamicCopy.getRegex()));
+        fieldNames.add(dynamicCopy.getRegex());
       }
     }
-    return sf.toArray(new SchemaField[sf.size()]);
+    return fieldNames;
   }
 
   /**

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java?rev=1470821&r1=1470820&r2=1470821&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java Tue Apr 23 06:00:09 2013
@@ -22,6 +22,7 @@ import java.util.EnumSet;
 
 import org.apache.solr.common.luke.FieldFlag;
 import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -196,4 +197,27 @@ public class LukeRequestHandlerTest exte
     assertEquals(xml, null, r);
   }
 
+  public void testCatchAllCopyField() throws Exception {
+    deleteCore();
+    initCore("solrconfig.xml", "schema-copyfield-test.xml");
+    
+    IndexSchema schema = h.getCore().getSchema();
+    
+    assertNull("'*' should not be (or match) a dynamic field", schema.getDynamicPattern("*"));
+    
+    boolean foundCatchAllCopyField = false;
+    for (IndexSchema.DynamicCopy dcf : schema.getDynamicCopyFields()) {
+      foundCatchAllCopyField = dcf.getRegex().equals("*") && dcf.getDestFieldName().equals("catchall_t");
+    }
+    assertTrue("<copyField source=\"*\" dest=\"catchall_t\"/> is missing from the schema", foundCatchAllCopyField);
+
+    SolrQueryRequest req = req("qt", "/admin/luke", "show", "schema", "indent", "on");
+    String xml = h.query(req);
+    String result = h.validateXPath(xml, field("bday") + "/arr[@name='copyDests']/str[.='catchall_t']");
+    assertNull(xml, result);
+
+    // Put back the configuration expected by the rest of the tests in this suite
+    deleteCore();
+    initCore("solrconfig.xml", "schema12.xml");
+  }
 }