Skip to content
This repository was archived by the owner on Sep 12, 2018. It is now read-only.
This repository was archived by the owner on Sep 12, 2018. It is now read-only.

[tx] Expand TypedValue to include non-namespaced keywords #285

@ncalexan

Description

@ncalexan

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
    fn test_from_sql_value_pair() {
    .
  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
    pub fn to_namespaced_keyword(s: &str) -> Option<symbols::NamespacedKeyword> {
    )
  3. Add tests of the new types in the transactor and potentially in the query engine as well.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions