فهرست منبع

Add test to prevent regression on #9119

Gabriel Horner 2 سال پیش
والد
کامیت
8697d59b72
2فایلهای تغییر یافته به همراه18 افزوده شده و 0 حذف شده
  1. 1 0
      deps/db/src/logseq/db/rules.cljc
  2. 17 0
      src/test/frontend/db/query_dsl_test.cljs

+ 1 - 0
deps/db/src/logseq/db/rules.cljc

@@ -134,6 +134,7 @@
      [(str ?val) ?str-val]
      (or [(= ?v ?val)]
          [(contains? ?v ?val)]
+         ;; For integer pages that aren't strings
          [(contains? ?v ?str-val)])]
 
    :page-ref

+ 17 - 0
src/test/frontend/db/query_dsl_test.cljs

@@ -1,7 +1,9 @@
 (ns frontend.db.query-dsl-test
   (:require [cljs.test :refer [are deftest testing use-fixtures is]]
             [clojure.string :as str]
+            [logseq.graph-parser.util.page-ref :as page-ref]
             [frontend.db :as db]
+            [frontend.util :as util]
             [frontend.db.query-dsl :as query-dsl]
             [frontend.test.helper :as test-helper :include-macros true :refer [load-test-files]]))
 
@@ -142,6 +144,21 @@ prop-d:: nada"}])
     (test-helper/with-config {}
       (block-property-queries-test))))
 
+(deftest block-property-query-performance
+  (let [pages (->> (repeat 10 {:tags ["tag1" "tag2"]})
+                   (map-indexed (fn [idx {:keys [tags]}]
+                                  {:file/path (str "pages/page" idx ".md")
+                                   :file/content (if (seq tags)
+                                                   (str "tags:: " (str/join ", " (map page-ref/->page-ref tags)))
+                                                   "")})))
+        _ (load-test-files pages)
+        {:keys [result time]}
+        (util/with-time (dsl-query "(and (property tags tag1) (property tags tag2))"))]
+    ;; Specific number isn't as important as ensuring query doesn't take orders
+    ;; of magnitude longer
+    (is (> 25.0 time) "multi property query perf is reasonable")
+    (is (= 10 (count result)))))
+
 (defn- page-property-queries-test
   []
   (load-test-files [{:file/path "pages/page1.md"