Skip to content

Queries with "null" in JSON results cannot be deserialized #3813

Closed
@rGunti

Description

@rGunti

NEST/Elasticsearch.Net version: 7.0.0-alpha2

Elasticsearch version: 7.0.1

Description of the problem including expected versus actual behavior:
I am using client.QuerySql() to fetch data (configured externally). When the resulting data contains a null token, the deserialization fails with the following stack trace.

Elasticsearch.Net.UnexpectedElasticsearchClientException: expected:',', actual:'null', at offset:4450 ---> Elasticsearch.Net.JsonParsingException: expected:',', actual:'null', at offset:4450
   at Elasticsearch.Net.JsonReader.ReadIsValueSeparatorWithVerify()
   at Elasticsearch.Net.JsonReader.ReadIsEndArrayWithSkipValueSeparator(Int32& count)
   at Elasticsearch.Net.CollectionFormatterBase`4.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Nest.SqlRowFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Elasticsearch.Net.CollectionFormatterBase`4.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
   at Elasticsearch.Net.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
   at Elasticsearch.Net.JsonSerializer.Deserialize[T](Stream stream, IJsonFormatterResolver resolver)
   at Nest.InternalSerializer.Deserialize[T](Stream stream)
   at Elasticsearch.Net.ResponseBuilder.SetBody[TResponse](ApiCallDetails details, RequestData requestData, Stream responseStream, String mimeType)
   at Elasticsearch.Net.ResponseBuilder.ToResponse[TResponse](RequestData requestData, Exception ex, Nullable`1 statusCode, IEnumerable`1 warnings, Stream responseStream, String mimeType)
   at Elasticsearch.Net.HttpConnection.Request[TResponse](RequestData requestData)
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData)
   at Elasticsearch.Net.Transport`1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters)
   --- End of inner exception stack trace ---
   at Elasticsearch.Net.Transport`1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters)
   at Nest.ElasticClient.QuerySql(Func`2 selector)
   at ElasticActor.Core.Worker.ExecuteTask(ActivatedTask task)

Am I missing a config setting or is this an oversight in development?

Steps to reproduce:

  1. Query data using SQL with ElasticClient.QuerySql(...)
  2. Exception gets thrown

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions