[
https://issues.apache.org/jira/browse/SOLR-18033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chris M. Hostetter updated SOLR-18033:
--------------------------------------
Attachment: SOLR-18033-1.patch
Status: Open (was: Open)
bq. ... make it really hard to imagine what a "safe" generalized solution to
this problem will look like.
Since I don't have the mental fortitude to take on a complete overhaul of
entire FieldType API ecosystem, I'm attaching an updated patch with a minimaly
viable straw man solution for the immediate problem: A marker interface
FieldTypes can implement to tell {{DocsStreamer}} that it's
{{toObject(indexableField)}} method can be trusted to handle conversion of
stored field values to external Object representation.
That combined with the SolrDocumentFetcher fixes in the previous patch to
delegate to {{toObject(SchemaField,BytesRef)}} for converting docvalues into an
external object means that all of the new tests pass (and we should be able to
use whatever external representation we want in SOLR-17975)
> binary based fields can't control their external based representation
> ---------------------------------------------------------------------
>
> Key: SOLR-18033
> URL: https://issues.apache.org/jira/browse/SOLR-18033
> Project: Solr
> Issue Type: Bug
> Reporter: Chris M. Hostetter
> Priority: Major
> Attachments: SOLR-18033-1.patch, SOLR-18033.patch
>
>
> This was discovered while working on SOLR-17975:
> {quote}... the main issue i *HAVE* found is that even though FieldType has
> method(s) for converting internal BytesRef's into something type specific
> that can be returned to the client, SolrDocumentFetcher isn't consistently
> using those methods in all useDocValuesAsStored situations ... it's got it's
> own special case statement with specialized conditionals that would need to
> be rethought/refactored to ensure the BINARY DocValues for this new field
> type (and any other similar field types) can be reconstituted back into
> _whatever_ external representation _[...the field type wants to use...]_
> {quote}
> While working on a patch with tests for this, I discovered that the same
> problem exists for stored fields due to hardcoded logic in DocsStreamer --
> even though {{FieldType}} has a distinct {{void
> write(TextResponseWriter,...}}} method (for when the response format requires
> String-ification) distinct from the {{Object toObject(IndexableField)}}
> (designed for use by the javabincodec) {{DocStreamer}} only uses {{toObject}}
> with a hardcoded list of special classes -- otherwise it uses the very old
> {{String toExternal(IndexableField)}} method
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]