Ver Fonte

Fix SQLiteProvider bug with InList on Guid.Empty

Kenric Nugteren há 9 meses atrás
pai
commit
d01204420c
1 ficheiros alterados com 7 adições e 1 exclusões
  1. 7 1
      inabox.database.sqlite/SQLiteProvider.cs

+ 7 - 1
inabox.database.sqlite/SQLiteProvider.cs

@@ -1523,7 +1523,13 @@ public class SQLiteProvider : IProvider
                     // 1000-parameter limit by using building the string ourselves
                     if (filter.Value is Guid[] list)
                     {
-                        result = string.Format("(" + operators[filter.Operator] + ")", prop, string.Format("\"{0}\"", string.Join("\",\"", list)));
+                        result = string.Format("(" + operators[filter.Operator] + ")",
+                            prop,
+                            string.Join(',', list.Where(x => x != Guid.Empty).Select(x => $"'{x}'")));
+                        if (list.Contains(Guid.Empty))
+                        {
+                            result = $"({result} or ({prop} IS NULL))";
+                        }
                     }
                     else if (filter.Value is IEnumerable enumerable)
                     {