mozilla/mentat

[tx] Expand TypedValue to include non-namespaced keywords

開放

#285 建立於 2017年2月10日

 (1 則留言) (0 個反應) (0 位負責人)Rust (116 個分叉)github user discovery
A-transactenhancementhelp wantedhygiene

倉庫指標

星標
 (1,661 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

For simplicity, in #214 I only handled namespaced keywords, like :namespaced/keyword. However, the transactor and query engine can and should handle non-namespaced keywords, like :keyword. This ticket tracks adding support for such keywords.

This ticket is similar to #201, but a little simpler and potentially a little longer, since there are no new :db.type/* definitions and no new ValueType. You'll need to:

  1. Add a new TypedValue case, preferably by encapsulating the two types of keywords into one enum Keyword { NamespacedKeyword(...), Keyword(...) };
  2. Implement the conversions to and from SQL, using the facts that:
  • the SQL TEXT representation of ":namespaced/keyword" and ":keyword" doesn't overlap;
  • the value type tag of namespaced and non-namespaced keywords is the same (tag 13)
  1. Add tests for conversion around https://github.com/mozilla/mentat/blob/1deed24f42847bc1eb0cfc26bada840643eaec33/db/tests/value_tests.rs#L25.
  2. Update the transactor to handle the two types of keywords as required -- start by generalizingto_namespaced_keyword to handle both types of keyword (around https://github.com/mozilla/mentat/blob/1deed24f42847bc1eb0cfc26bada840643eaec33/db/src/lib.rs#L42)
  3. Add tests of the new types in the transactor and potentially in the query engine as well.

貢獻者指南