Skip to content
Snippets Groups Projects
  1. Jul 26, 2023
  2. Jul 21, 2023
  3. Jul 20, 2023
  4. Jul 18, 2023
  5. Jul 14, 2023
  6. Jul 13, 2023
  7. Jul 07, 2023
  8. Jul 04, 2023
  9. Jul 03, 2023
  10. Jun 30, 2023
  11. Jun 28, 2023
  12. Jun 26, 2023
    • Arseniy Volynets's avatar
      feat: support HAVING clause · 095d347b
      Arseniy Volynets authored
      * added HAVING clause. HAVING condition may contain aggregates. Any column outside aggregate function must be part of a grouping expression. 
      
      E.g: `select sum(a) from t group by b having c > 1` Above query is invalid, because `c` is not a grouping expression.
      095d347b
  13. Jun 21, 2023
  14. Jun 19, 2023
  15. Jun 16, 2023
  16. Jun 15, 2023
    • Denis Smirnov's avatar
      feat: non-SQL insert · c64f009b
      Denis Smirnov authored
      Current commit redesigns distributed INSERT command. Previously we
      dispatched insert SQL command to the storages. If INSERT could be
      done locally (without building a virtual table on the router) we
      used SQL "bucket_id(<string>)" function to recalculate buckets
      on the starage via SQL.
      
      This approach had the main disadvantage - it worked only with a
      "bucket_id" SQL function that had a single argument as a parameter.
      An attempt to support multiple parameters of different types (tuple
      columns as we plan to implement for Picodata engine in future) faced
      serious technical problems.
      Also, the old implementation had performance issues:
      - we created temporary spaces on the storage even for a single VALUE
        insertion
      - we always dispatched VALUES to the storage to build a virtual table
      - the resulting SQL was too verbose (as we produced a subquery under
        INSERT node)
      
      It was desided to get rid of the old approach and migrate to non-SQL
      insertion. It means that a new type of motion was introduled - local
      segment. It allows us to build a virtual table on the storage in
      Rust memory, then using space API transform and insert collected tuples
      directly into the target space within a single transaction. Also we
      can materailize VALUES (if they contain only constants) on the router
      and get rid of the redundant network transmission over the network.
      c64f009b
  17. Jun 13, 2023
  18. Jun 02, 2023
  19. May 30, 2023
    • Arseniy Volynets's avatar
      fix: invalid Refs in join condition · 05762d16
      Arseniy Volynets authored
      In case we had a join where one of tables under
      Scan had bucket_id column in the middle (not in the end)
      than we incorrectly updated position in ALL references in
      join condition. The correct way is to update references only
      for corresponding join child, which is done in this commit
      05762d16
    • Arseniy Volynets's avatar
      fix: error on join condition "unary and bool" · 4baaf0c7
      Arseniy Volynets authored and Arseniy Volynets's avatar Arseniy Volynets committed
      - Because Unary is also a bool expression, we had
      wrong conflict resolution for join (without single),
      that didn't take into account that bool expression
      may have Unary as one of the children.
      - I also noticed a small bug for single distribution
      in join, fixed it.
      4baaf0c7
    • Arseniy Volynets's avatar
      refactor: simplify 2-stage, remove duplicates · e3aa17d6
      Arseniy Volynets authored
      - Refactor 2-stage aggregation pipeline, so it is easier to read and work with
      - add logic for removing duplicate grouping expressions and aggregates from local stage:
       
      `select sum(a), sum(a) from t` 
      
      We should compute only one aggregate at local stage.
      
      The same goes for grouping expressions: 
      
      `select sum(distinct a) from t group by a`
      
      At local stage we must use `a` only once in projection.
      e3aa17d6
  20. May 29, 2023
  21. May 18, 2023
  22. May 15, 2023
  23. May 12, 2023
Loading