diff --git a/query-engine/connectors/query-connector/src/filter/scalar.rs b/query-engine/connectors/query-connector/src/filter/scalar.rs index b3943e8aced..78c499b5210 100644 --- a/query-engine/connectors/query-connector/src/filter/scalar.rs +++ b/query-engine/connectors/query-connector/src/filter/scalar.rs @@ -1,7 +1,7 @@ use super::Filter; use crate::compare::ScalarCompare; use prisma_models::{DataSourceFieldRef, ModelProjection, PrismaListValue, PrismaValue}; -use std::sync::Arc; +use std::{collections::BTreeSet, sync::Arc}; #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum ScalarProjection { @@ -31,11 +31,12 @@ impl ScalarFilter { } pub fn batched(self) -> Vec { - fn inner(list: PrismaListValue) -> Vec { + fn inner(mut list: PrismaListValue) -> Vec { + let dedup_list: BTreeSet<_> = list.drain(..).collect(); let mut batches = Vec::with_capacity(list.len() % BATCH_SIZE + 1); batches.push(Vec::with_capacity(BATCH_SIZE)); - for (idx, item) in list.into_iter().enumerate() { + for (idx, item) in dedup_list.into_iter().enumerate() { if idx != 0 && idx % BATCH_SIZE == 0 { batches.push(Vec::with_capacity(BATCH_SIZE)); }