Преглед на файлове

Fix SQLiteProvider bug with InList on Guid.Empty

Kenric Nugteren преди 9 месеца
родител
ревизия
d01204420c
променени са 1 файла, в които са добавени 7 реда и са изтрити 1 реда
  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
                     // 1000-parameter limit by using building the string ourselves
                     if (filter.Value is Guid[] list)
                     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)
                     else if (filter.Value is IEnumerable enumerable)
                     {
                     {