Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-7463

New ANTLR grammar to evaluate BSON's SQL style expressions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      PHOENIX-7330 introduces BSON as Data type in Phoenix. It also introduces complex expressions BSON_CONDITION_EXPRESSION() and BSON_UPDATE_EXPRESSION() to evaluate various WHERE clause based conditions and to perform full or partial document updates.

      BSON_CONDITION_EXPRESSION() has two flavors of expressions:

      1. Document style condition expression
      2. SQL style condition expression with placeholder values

      The Document style condition expression already comes in AST (Abstract Syntax Tree) form and hence the tree is directly parsed to evaluate the given condition.

      The SQL style condition expression has statement that needs to be evaluated. This style of expressions do have substantial difference from what we use in Phoenix SQL based WHERE clause. The expression also has BSON specific functions.

      PHOENIX-7330 uses MVEL based expression evaluation language to evaluate the given statement. MVEL also internally parses the string into AST tree before evaluating it. While this works well, it has some disadvantages:

      • The approach has dependency on regex based string conversions.
      • Adding more internal functions for BSON might require significant changes and potentially more regex overhead.

      The purpose of this Jira it to introduce new ANTLR grammar for BSON's SQL style condition expressions such that it can be extended to support more complex BSON functions in future. ANTLR is a powerful parser framework and it is already in use for Phoenix SQL use cases. While the same ANTLR grammar rules are not fully applicable to BSON conditions and internal functions (e.g. field_exists()), creating new grammar rules for BSON (Document) data type should be beneficial.

      Attachments

        Issue Links

          Activity

            People

              vjasani Viraj Jasani
              vjasani Viraj Jasani
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: