mozilla/mentat

[tx] Expand TypedValue to include non-namespaced keywords

Open

#285 创建于 2017年2月10日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Rust (116 fork)github user discovery
A-transactenhancementhelp wantedhygiene

仓库指标

Star
 (1,661 star)
PR 合并指标
 (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.

贡献者指南