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/07/04 00:09:07 UTC
svn commit: r1499579 - in /lucene/dev/branches/branch_4x: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/schema/
solr/core/src/test-files/solr/collection1/conf/
solr/core/src/test/org/apache/solr/schema/
Author: sarowe
Date: Wed Jul 3 22:09:07 2013
New Revision: 1499579
URL: http://svn.apache.org/r1499579
Log:
SOLR-5000: ManagedIndexSchema doesn't persist uniqueKey tag after calling addFields method (merged trunk r1499578)
Added:
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema-one-field-no-dynamic-field-unique-key.xml
- copied unchanged from r1499578, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-one-field-no-dynamic-field-unique-key.xml
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/schema/IndexSchema.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.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=1499579&r1=1499578&r2=1499579&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Wed Jul 3 22:09:07 2013
@@ -213,6 +213,9 @@ Bug Fixes
* SOLR-4452: Hunspell stemmer should not merge duplicate dictionary entries (janhoy)
+* SOLR-5000: ManagedIndexSchema doesn't persist uniqueKey tag after calling addFields
+ method. (Jun Ohtani, Steve Rowe)
+
Optimizations
----------------------
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=1499579&r1=1499578&r2=1499579&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 Wed Jul 3 22:09:07 2013
@@ -309,8 +309,8 @@ public class IndexSchema {
*/
public SchemaField getUniqueKeyField() { return uniqueKeyField; }
- private String uniqueKeyFieldName;
- private FieldType uniqueKeyFieldType;
+ protected String uniqueKeyFieldName;
+ protected FieldType uniqueKeyFieldType;
/**
* The raw (field type encoded) value of the Unique Key field for
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java?rev=1499579&r1=1499578&r2=1499579&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java Wed Jul 3 22:09:07 2013
@@ -334,6 +334,8 @@ public final class ManagedIndexSchema ex
newSchema.similarityFactory = similarityFactory;
newSchema.isExplicitSimilarity = isExplicitSimilarity;
newSchema.uniqueKeyField = uniqueKeyField;
+ newSchema.uniqueKeyFieldName = uniqueKeyFieldName;
+ newSchema.uniqueKeyFieldType = uniqueKeyFieldType;
if (includeFieldDataStructures) {
// These need new collections, since addFields() can add members to them
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java?rev=1499579&r1=1499578&r2=1499579&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java Wed Jul 3 22:09:07 2013
@@ -57,6 +57,7 @@ public class TestManagedSchema extends A
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "solrconfig-basic.xml"), tmpConfDir);
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "solrconfig.snippet.randomindexconfig.xml"), tmpConfDir);
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "schema-one-field-no-dynamic-field.xml"), tmpConfDir);
+ FileUtils.copyFileToDirectory(new File(testHomeConfDir, "schema-one-field-no-dynamic-field-unique-key.xml"), tmpConfDir);
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "schema-minimal.xml"), tmpConfDir);
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "schema_codec.xml"), tmpConfDir);
FileUtils.copyFileToDirectory(new File(testHomeConfDir, "schema-bm25.xml"), tmpConfDir);
@@ -386,4 +387,39 @@ public class TestManagedSchema extends A
assertQ(req(fieldName + ":thing"), "//*[@numFound='1']");
}
+ public void testPersistUniqueKey() throws Exception {
+ assertSchemaResource(collection, "managed-schema");
+ deleteCore();
+ File managedSchemaFile = new File(tmpConfDir, "managed-schema");
+ assertTrue(managedSchemaFile.delete()); // Delete managed-schema so it won't block parsing a new schema
+ initCore("solrconfig-mutable-managed-schema.xml", "schema-one-field-no-dynamic-field-unique-key.xml", tmpSolrHome.getPath());
+
+ assertTrue(managedSchemaFile.exists());
+ String managedSchemaContents = FileUtils.readFileToString(managedSchemaFile, "UTF-8");
+ assertFalse(managedSchemaContents.contains("\"new_field\""));
+
+ Map<String,Object> options = new HashMap<String,Object>();
+ options.put("stored", "false");
+ IndexSchema oldSchema = h.getCore().getLatestSchema();
+ assertEquals("str", oldSchema.getUniqueKeyField().getName());
+ String fieldName = "new_field";
+ String fieldType = "string";
+ SchemaField newField = oldSchema.newField(fieldName, fieldType, options);
+ IndexSchema newSchema = oldSchema.addField(newField);
+ assertEquals("str", newSchema.getUniqueKeyField().getName());
+ h.getCore().setLatestSchema(newSchema);
+ log.info("####close harness");
+ h.close();
+ log.info("####close harness end");
+ initCore();
+
+ assertTrue(managedSchemaFile.exists());
+ FileInputStream stream = new FileInputStream(managedSchemaFile);
+ managedSchemaContents = IOUtils.toString(stream, "UTF-8");
+ stream.close(); // Explicitly close so that Windows can delete this file
+ assertTrue(managedSchemaContents.contains("<field name=\"new_field\" type=\"string\" stored=\"false\"/>"));
+ IndexSchema newNewSchema = h.getCore().getLatestSchema();
+ assertNotNull(newNewSchema.getUniqueKeyField());
+ assertEquals("str", newNewSchema.getUniqueKeyField().getName());
+ }
}