Leapfrog Triejoin
Jan 3, 2017
1 minute read

Итак, из вчерашнего мы узнали, что сердце моего движка запросов - Leapfrog Triejoin алгоритм. Надо закончить с выбором плана и построением соответствующих итераторов.

В общем, после всей ебаты на 300 строк, оно заработало. Сам join проще простого:

  var join: TrieJoin[TrieIter]
  join.init(plan)

  proc joinOn(v: int) =
    var leapfrog = join.open
    while not leapfrog.atEnd:
      echo q.vars[v].name, " <- ", leapfrog.key.key
      if v < q.vars.len - 1:
        joinOn(v + 1)
      leapfrog.next
    join.up

  joinOn(0)

Результат под тегом day-170103.


Назад, к записям


comments powered by Disqus