SOLR-13762: Allow BinaryField use with non-binary wt's.

Closes #883
This commit is contained in:
Jason Gerlowski 2019-11-01 10:05:09 -04:00
parent 2f8b3ea634
commit a98198cc04
3 changed files with 5 additions and 1 deletions

View File

@ -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 * 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) 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 Other Changes
--------------------- ---------------------

View File

@ -110,6 +110,9 @@ public class BinaryField extends FieldType {
public Object toNativeType(Object val) { public Object toNativeType(Object val) {
if (val instanceof byte[]) { if (val instanceof byte[]) {
return ByteBuffer.wrap((byte[]) val); 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); return super.toNativeType(val);
} }

View File

@ -209,7 +209,6 @@ public abstract class AbstractAtomicUpdatesMultivalueTestBase extends EmbeddedSo
} }
@Test @Test
@AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-13762")
public void testMultivalueBinaryField() throws SolrServerException, IOException { public void testMultivalueBinaryField() throws SolrServerException, IOException {
runTestForFieldWithoutQuery("binaryRemove", runTestForFieldWithoutQuery("binaryRemove",
new byte[][] {new byte[] {0}, new byte[] {1}, new byte[] {2}, new byte[] {3}}); new byte[][] {new byte[] {0}, new byte[] {1}, new byte[] {2}, new byte[] {3}});