Add test to prevent regression on #9119

pull/9199/head
Gabriel Horner 2023-04-20 12:20:56 -04:00 committed by Tienson Qin
parent a03bd6002c
commit 8697d59b72
2 changed files with 18 additions and 0 deletions

View File

@ -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

View File

@ -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"