From a98198cc045dc55171df867e5541aaf292cc044b Mon Sep 17 00:00:00 2001 From: Jason Gerlowski Date: Fri, 1 Nov 2019 10:05:09 -0400 Subject: [PATCH] SOLR-13762: Allow BinaryField use with non-binary wt's. Closes #883 --- solr/CHANGES.txt | 2 ++ solr/core/src/java/org/apache/solr/schema/BinaryField.java | 3 +++ .../processor/AbstractAtomicUpdatesMultivalueTestBase.java | 1 - 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index cb8029e0e56..61d992c17ab 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -74,6 +74,8 @@ Bug Fixes * SOLR-13207: In dismax and edismax "minimum should match" queries, the < operator not followed by a number will now return an HTTP 400 error rather than 500, and the error message will explain that < must be followed by a number. (Chris Hennick) +* SOLR-13762: Fix BinaryField support for non-binary wt's (Thomas Woeckinger via Jason Gerlowski) + Other Changes --------------------- diff --git a/solr/core/src/java/org/apache/solr/schema/BinaryField.java b/solr/core/src/java/org/apache/solr/schema/BinaryField.java index 39b895a2416..a7eb64b2d72 100644 --- a/solr/core/src/java/org/apache/solr/schema/BinaryField.java +++ b/solr/core/src/java/org/apache/solr/schema/BinaryField.java @@ -110,6 +110,9 @@ public class BinaryField extends FieldType { public Object toNativeType(Object val) { if (val instanceof byte[]) { return ByteBuffer.wrap((byte[]) val); + } else if (val instanceof CharSequence) { + final CharSequence valAsCharSequence = (CharSequence) val; + return ByteBuffer.wrap(Base64.base64ToByteArray(valAsCharSequence.toString())); } return super.toNativeType(val); } diff --git a/solr/core/src/test/org/apache/solr/update/processor/AbstractAtomicUpdatesMultivalueTestBase.java b/solr/core/src/test/org/apache/solr/update/processor/AbstractAtomicUpdatesMultivalueTestBase.java index 05fd0e7e962..1bce4222385 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/AbstractAtomicUpdatesMultivalueTestBase.java +++ b/solr/core/src/test/org/apache/solr/update/processor/AbstractAtomicUpdatesMultivalueTestBase.java @@ -209,7 +209,6 @@ public abstract class AbstractAtomicUpdatesMultivalueTestBase extends EmbeddedSo } @Test - @AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-13762") public void testMultivalueBinaryField() throws SolrServerException, IOException { runTestForFieldWithoutQuery("binaryRemove", new byte[][] {new byte[] {0}, new byte[] {1}, new byte[] {2}, new byte[] {3}});