Skip to content
Snippets Groups Projects
  1. Feb 08, 2023
  2. Feb 07, 2023
    • ms.evilhat's avatar
      feat: add arithmetic expressions to projection · 38262373
      ms.evilhat authored
      we need to support arbitrary expressions consisting of logical, comparison and arithmetic operations and as sub-expression of aggregates. previously we added arithmetic exprs to selection ans join. this commit supports arithmetic (and only arithmetic) as a part of projection
      38262373
  3. Feb 03, 2023
  4. Feb 02, 2023
  5. Jan 31, 2023
  6. Jan 30, 2023
  7. Jan 25, 2023
    • Denis Smirnov's avatar
      fix: parameter binding · 87b26fe2
      Denis Smirnov authored
      
      We had a problem with the queries like:
      
      select * from t1 where (a, b) in (select c, d from ...)
      
      The root of the problem was that in a case of multiple references
      to the subquery ((a, b) in (ref_c_sq, ref_d_sq)) we tried to bind
      parameters multiple times that caused subtraction overflow and UB.
      As a fix we stop binding parameters more than once.
      
      Co-authored-by: default avatarms.evilhat <ms.evilhat@gmail.com>
      87b26fe2
  8. Jan 24, 2023
    • Denis Smirnov's avatar
      fix: trasaction already started error · 1befa37f
      Denis Smirnov authored
      Remove redundant transaction start from the open telemetry's spans
      in the code. There is no sense in it at the moment (seems like it
      was added while prototyping tarantool space as a storage for the
      per-fiber traces... but we gave this idea up and switched to the
      custom Rust implementation). But if we start a transaction manually
      and call sbroad execute() method, we end up with transaction already
      started error. So, remove the transaction start wrappers and make
      nested transactions work.
      1befa37f
  9. Jan 23, 2023
  10. Jan 20, 2023
  11. Jan 19, 2023
    • Denis Smirnov's avatar
      feat: use spaces as virtual tables · 21f90b86
      Denis Smirnov authored
      We stop using VALUES to store temporary tuple on the storages and
      switch to the tarantool spaces instead. This is done to avoid the
      problems with the auto generated column names in VALUES, parser
      stack and parameters limitations.
      
      Tarantool forbids to use multiple space engines in a single transaction.
      So for vinyl tables we have to use vinyl spaces as a tepmorary storage.
      For memtx tables we can use temporary memtx spaces.
      
      One more important change is that we can't insert values of
      different numeric types in a number column (as we don't cast them
      as the local SQL does).
      21f90b86
  12. Jan 16, 2023
  13. Jan 14, 2023
  14. Dec 31, 2022
  15. Dec 30, 2022
  16. Dec 29, 2022
    • Denis Smirnov's avatar
      feat!: dispatch IR instead of the SQL with parameters · 214b55a5
      Denis Smirnov authored
      BREAKING CHANGE: api functions have changed signatures.
      
      This commit changes the way how the router dispatches commands to
      the storages. Previously, the router compiled the SQL statements
      with parameters from the plan subtrees and sent them to the storages.
      
      Now the router sends the raw IR subtrees to the storages.
      
      1. The subtrees are constructed from the original plan nodes
         for performance reasons: the node's memory chunk is extracted
         from the original plan tree (replaced with invalid parameter node)
         and reused in the sub-plan.
      2. The router-storage message consists of the two parts: required and
         optional. The required part is the hash of the sub-plan (excluding
         constants - analogue of the SQL pattern in the previous version)
         and parameters. The optional part is the IR itself and the syntax
         node tree (precompiled on the router to skip redundant work on the
         multiple storages). Storage uses a lazy deserialization of the message:
         - first it deserialized the part with the hash and parameters (to
           check the plan cache)
         - if the cache lookup failed, it deserializes the IR and the syntax
           node tree and updates the cache.
      3. The SHA256 hash was replaced with BLAKE3 for performance reasons.
      214b55a5
  17. Dec 23, 2022
  18. Dec 22, 2022
  19. Nov 28, 2022
  20. Nov 25, 2022
Loading