mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-23 02:27:40 +08:00
Merge #4364
4364: Revert "Remove panic on the geosearch" r=curquiza a=irevoire After more thought about it, we want to fix this bug in a patch release instead of `main`. I revert this PR for now, but the fix will still land on `main` once we bring back the change of the `v1.6.1` on `main`. Reverts meilisearch/meilisearch#4337 Co-authored-by: Tamo <irevoire@protonmail.ch>
This commit is contained in:
commit
b968616a99
@ -64,7 +64,7 @@ impl Display for Value {
|
|||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
"{}",
|
"{}",
|
||||||
json_string!(self, { ".enqueuedAt" => "[date]", ".startedAt" => "[date]", ".finishedAt" => "[date]", ".duration" => "[duration]" })
|
json_string!(self, { ".enqueuedAt" => "[date]", ".processedAt" => "[date]", ".finishedAt" => "[date]", ".duration" => "[duration]" })
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1760,181 +1760,6 @@ async fn add_documents_invalid_geo_field() {
|
|||||||
"finishedAt": "[date]"
|
"finishedAt": "[date]"
|
||||||
}
|
}
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
// The three next tests are related to #4333
|
|
||||||
|
|
||||||
// _geo has a lat and lng but set to `null`
|
|
||||||
let documents = json!([
|
|
||||||
{
|
|
||||||
"id": "12",
|
|
||||||
"_geo": { "lng": null, "lat": 67}
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
let (response, code) = index.add_documents(documents, None).await;
|
|
||||||
snapshot!(code, @"202 Accepted");
|
|
||||||
let response = index.wait_task(response.uid()).await;
|
|
||||||
snapshot!(json_string!(response, { ".duration" => "[duration]", ".enqueuedAt" => "[date]", ".startedAt" => "[date]", ".finishedAt" => "[date]" }),
|
|
||||||
@r###"
|
|
||||||
{
|
|
||||||
"uid": 14,
|
|
||||||
"indexUid": "test",
|
|
||||||
"status": "failed",
|
|
||||||
"type": "documentAdditionOrUpdate",
|
|
||||||
"canceledBy": null,
|
|
||||||
"details": {
|
|
||||||
"receivedDocuments": 1,
|
|
||||||
"indexedDocuments": 0
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"message": "Could not parse longitude in the document with the id: `12`. Was expecting a finite number but instead got `null`.",
|
|
||||||
"code": "invalid_document_geo_field",
|
|
||||||
"type": "invalid_request",
|
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_document_geo_field"
|
|
||||||
},
|
|
||||||
"duration": "[duration]",
|
|
||||||
"enqueuedAt": "[date]",
|
|
||||||
"startedAt": "[date]",
|
|
||||||
"finishedAt": "[date]"
|
|
||||||
}
|
|
||||||
"###);
|
|
||||||
|
|
||||||
// _geo has a lat and lng but set to `null`
|
|
||||||
let documents = json!([
|
|
||||||
{
|
|
||||||
"id": "12",
|
|
||||||
"_geo": { "lng": 35, "lat": null }
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
let (response, code) = index.add_documents(documents, None).await;
|
|
||||||
snapshot!(code, @"202 Accepted");
|
|
||||||
let response = index.wait_task(response.uid()).await;
|
|
||||||
snapshot!(json_string!(response, { ".duration" => "[duration]", ".enqueuedAt" => "[date]", ".startedAt" => "[date]", ".finishedAt" => "[date]" }),
|
|
||||||
@r###"
|
|
||||||
{
|
|
||||||
"uid": 15,
|
|
||||||
"indexUid": "test",
|
|
||||||
"status": "failed",
|
|
||||||
"type": "documentAdditionOrUpdate",
|
|
||||||
"canceledBy": null,
|
|
||||||
"details": {
|
|
||||||
"receivedDocuments": 1,
|
|
||||||
"indexedDocuments": 0
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"message": "Could not parse latitude in the document with the id: `12`. Was expecting a finite number but instead got `null`.",
|
|
||||||
"code": "invalid_document_geo_field",
|
|
||||||
"type": "invalid_request",
|
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_document_geo_field"
|
|
||||||
},
|
|
||||||
"duration": "[duration]",
|
|
||||||
"enqueuedAt": "[date]",
|
|
||||||
"startedAt": "[date]",
|
|
||||||
"finishedAt": "[date]"
|
|
||||||
}
|
|
||||||
"###);
|
|
||||||
|
|
||||||
// _geo has a lat and lng but set to `null`
|
|
||||||
let documents = json!([
|
|
||||||
{
|
|
||||||
"id": "13",
|
|
||||||
"_geo": { "lng": null, "lat": null }
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
let (response, code) = index.add_documents(documents, None).await;
|
|
||||||
snapshot!(code, @"202 Accepted");
|
|
||||||
let response = index.wait_task(response.uid()).await;
|
|
||||||
snapshot!(json_string!(response, { ".duration" => "[duration]", ".enqueuedAt" => "[date]", ".startedAt" => "[date]", ".finishedAt" => "[date]" }),
|
|
||||||
@r###"
|
|
||||||
{
|
|
||||||
"uid": 16,
|
|
||||||
"indexUid": "test",
|
|
||||||
"status": "failed",
|
|
||||||
"type": "documentAdditionOrUpdate",
|
|
||||||
"canceledBy": null,
|
|
||||||
"details": {
|
|
||||||
"receivedDocuments": 1,
|
|
||||||
"indexedDocuments": 0
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"message": "Could not parse latitude nor longitude in the document with the id: `13`. Was expecting finite numbers but instead got `null` and `null`.",
|
|
||||||
"code": "invalid_document_geo_field",
|
|
||||||
"type": "invalid_request",
|
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_document_geo_field"
|
|
||||||
},
|
|
||||||
"duration": "[duration]",
|
|
||||||
"enqueuedAt": "[date]",
|
|
||||||
"startedAt": "[date]",
|
|
||||||
"finishedAt": "[date]"
|
|
||||||
}
|
|
||||||
"###);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Related to #4333
|
|
||||||
#[actix_rt::test]
|
|
||||||
async fn add_invalid_geo_and_then_settings() {
|
|
||||||
let server = Server::new().await;
|
|
||||||
let index = server.index("test");
|
|
||||||
index.create(Some("id")).await;
|
|
||||||
|
|
||||||
// _geo is not an object
|
|
||||||
let documents = json!([
|
|
||||||
{
|
|
||||||
"id": "11",
|
|
||||||
"_geo": { "lat": null, "lng": null },
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
let (ret, code) = index.add_documents(documents, None).await;
|
|
||||||
snapshot!(code, @"202 Accepted");
|
|
||||||
let ret = index.wait_task(ret.uid()).await;
|
|
||||||
snapshot!(ret, @r###"
|
|
||||||
{
|
|
||||||
"uid": 1,
|
|
||||||
"indexUid": "test",
|
|
||||||
"status": "succeeded",
|
|
||||||
"type": "documentAdditionOrUpdate",
|
|
||||||
"canceledBy": null,
|
|
||||||
"details": {
|
|
||||||
"receivedDocuments": 1,
|
|
||||||
"indexedDocuments": 1
|
|
||||||
},
|
|
||||||
"error": null,
|
|
||||||
"duration": "[duration]",
|
|
||||||
"enqueuedAt": "[date]",
|
|
||||||
"startedAt": "[date]",
|
|
||||||
"finishedAt": "[date]"
|
|
||||||
}
|
|
||||||
"###);
|
|
||||||
|
|
||||||
let (ret, code) = index.update_settings(json!({"sortableAttributes": ["_geo"]})).await;
|
|
||||||
snapshot!(code, @"202 Accepted");
|
|
||||||
let ret = index.wait_task(ret.uid()).await;
|
|
||||||
snapshot!(ret, @r###"
|
|
||||||
{
|
|
||||||
"uid": 2,
|
|
||||||
"indexUid": "test",
|
|
||||||
"status": "failed",
|
|
||||||
"type": "settingsUpdate",
|
|
||||||
"canceledBy": null,
|
|
||||||
"details": {
|
|
||||||
"sortableAttributes": [
|
|
||||||
"_geo"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"message": "Could not parse latitude in the document with the id: `\"11\"`. Was expecting a finite number but instead got `null`.",
|
|
||||||
"code": "invalid_document_geo_field",
|
|
||||||
"type": "invalid_request",
|
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_document_geo_field"
|
|
||||||
},
|
|
||||||
"duration": "[duration]",
|
|
||||||
"enqueuedAt": "[date]",
|
|
||||||
"startedAt": "[date]",
|
|
||||||
"finishedAt": "[date]"
|
|
||||||
}
|
|
||||||
"###);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
|
@ -34,9 +34,7 @@ pub fn extract_geo_points<R: io::Read + io::Seek>(
|
|||||||
// since we only need the primary key when we throw an error
|
// since we only need the primary key when we throw an error
|
||||||
// we create this getter to lazily get it when needed
|
// we create this getter to lazily get it when needed
|
||||||
let document_id = || -> Value {
|
let document_id = || -> Value {
|
||||||
let reader = KvReaderDelAdd::new(obkv.get(primary_key_id).unwrap());
|
let document_id = obkv.get(primary_key_id).unwrap();
|
||||||
let document_id =
|
|
||||||
reader.get(DelAdd::Deletion).or(reader.get(DelAdd::Addition)).unwrap();
|
|
||||||
serde_json::from_slice(document_id).unwrap()
|
serde_json::from_slice(document_id).unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user