aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-04 00:06:46 +0000
committerJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-04 00:06:46 +0000
commita0a4c1b5542ae1cc4c095c1242e99ecf9c83b5fd (patch)
treee62c16a38cd191cb9d7da41cca6d3fe919eb076d /src
parentb946b93105c9c54dad249784ae9488cb7fdde356 (diff)
Tweaks
Diffstat (limited to 'src')
-rw-r--r--src/clojure/contrib/datalog/database.clj7
-rw-r--r--src/clojure/contrib/datalog/example.clj1
-rw-r--r--src/clojure/contrib/datalog/softstrat.clj8
3 files changed, 11 insertions, 5 deletions
diff --git a/src/clojure/contrib/datalog/database.clj b/src/clojure/contrib/datalog/database.clj
index 517c1b92..a24f093c 100644
--- a/src/clojure/contrib/datalog/database.clj
+++ b/src/clojure/contrib/datalog/database.clj
@@ -215,7 +215,7 @@
nil
(filter identity (for [key (keys pt)]
(if-let [idx-map (idxs key)]
- (idx-map (pt key))
+ (get idx-map (pt key) #{})
nil)))))
(defn- match?
@@ -235,12 +235,15 @@
space (if (empty? idxs)
(:data rel) ; table scan :(
(reduce intersection idxs))]
+ (trace-datalog (when (empty? idxs)
+ (println (format "Table scan of %s: %s rows!!!!!"
+ rn
+ (count space)))))
(fun #(match? % pt) space)))
(defn select
"finds all matching tuples to the partial tuple (pt) in the relation named (rn)"
[db rn pt]
-; (println " DB Lookup: " rn pt)
(scan-space filter db rn pt))
(defn any-match?
diff --git a/src/clojure/contrib/datalog/example.clj b/src/clojure/contrib/datalog/example.clj
index afc37bb4..31a7ddaf 100644
--- a/src/clojure/contrib/datalog/example.clj
+++ b/src/clojure/contrib/datalog/example.clj
@@ -35,6 +35,7 @@
(index :can-do-job :position)
(relation :job-replacement [:job :can-be-done-by])
+ ;(index :job-replacement :can-be-done-by)
(relation :job-exceptions [:id :job])))
diff --git a/src/clojure/contrib/datalog/softstrat.clj b/src/clojure/contrib/datalog/softstrat.clj
index f23bf50f..ca004981 100644
--- a/src/clojure/contrib/datalog/softstrat.clj
+++ b/src/clojure/contrib/datalog/softstrat.clj
@@ -39,9 +39,11 @@
(let [rules (pred-map pred)
preds (reduce (fn [pds lits]
(reduce (fn [pds lit]
- (conj pds (literal-predicate lit)))
- pds
- lits))
+ (if-let [pred (literal-predicate lit)]
+ (conj pds pred)
+ pds))
+ pds
+ lits))
#{}
(map :body rules))]
(assoc nbs pred preds)))