Skip to content
Snippets Groups Projects
  1. Oct 15, 2024
    • Arseniy Volynets's avatar
      feat: show buckets estimation in explain · 56933ca1
      Arseniy Volynets authored and Denis Smirnov's avatar Denis Smirnov committed
      - Add new line in explain reporting on which buckets query will
        be executed.
      - For queries consisting of a single subtree we can say exactly on
        which buckets it will be executed, for queries with more subtrees
        (with motions), we provide an upper bound of total buckets used
        in the query. Upper bound is computed by merging buckets from the
        leaf subtrees.
      - In case for DML query with non-local motion we can't provide an
        upper bound, and print 'buckets: unknown'
      
      Examples:
      ```
      explain select a from t
      ->
      projection ("t"."a"::integer -> "a")
          scan "t"
      execution options:
          vdbe_max_steps = 45000
          vtable_max_rows = 5000
      buckets = [1-3000]
      
      explain select t.a from t join t as t2
      on t.a = t2.b
      ->
      projection ("t"."a"::integer -> "a")
        ...
      execution options:
          vdbe_max_steps = 45000
          vtable_max_rows = 5000
      buckets <= [1-3000]
      
      explain select id from _pico_table
      ->
      projection ("_pico_table"."id"::unsigned -> "id")
          scan "_pico_table"
      execution options:
          vdbe_max_steps = 45000
          vtable_max_rows = 5000
      buckets = any
      
      explain insert into t values (1, 2)
      ->
      insert "t" on conflict: fail
      motion [policy: segment([ref("COLUMN_1")])]
          values
              value row (...)
      execution options:
          vdbe_max_steps = 45000
          vtable_max_rows = 5000
      buckets = unknown
      ```
      56933ca1
  2. Oct 03, 2024
    • Arseniy Volynets's avatar
      fix: vtable max rows limit not applied · b6574768
      Arseniy Volynets authored
      - We didn't apply vtable max rows value
      when executing local sql. We tried to lookup
      it in the execute options hashmap and took
      the default value instead, though it was
      not stored in the hashmap.
      b6574768
  3. Oct 01, 2024
  4. Sep 27, 2024
    • Arseniy Volynets's avatar
      feat: support select without scan · 97d2b814
      Arseniy Volynets authored
      - Support simple queries that do not select
      data from tables. This is similar to `values ..`,
      but allows to add aliases for expressions.
      - Such selects can also be used in subqueries
      - Examples:
      ```
      select 1;
      select (select count(*) from t);
      select 2 as foo, 3 as bar;
      
      select a from t
      where b in (select 100)
      ```
      97d2b814
  5. Sep 26, 2024
  6. Sep 24, 2024
  7. Sep 23, 2024
  8. Sep 20, 2024
    • Dmitry Rodionov's avatar
      chore: make serde-yaml development dependency · d6bd73b8
      Dmitry Rodionov authored and Denis Smirnov's avatar Denis Smirnov committed
      
      Previous version was using yaml-rust which is marked as unmaintained.
      This gets reported by dependency scanner we use for certification.
      Though worth noting that serde-yaml itself is now archived. There is a
      promising replacement library but no need to hurry with that just yet.
      But anyway, we don't need this library in the production build, only
      for tests. So, moved it to development dependencies.
      
      Co-authored-by: Denis Smirnov's avatarDenis Smirnov <sd@picodata.io>
      Verified
      d6bd73b8
  9. Sep 17, 2024
  10. Sep 16, 2024
  11. Sep 13, 2024
  12. Sep 12, 2024
  13. Sep 11, 2024
  14. Sep 10, 2024
  15. Sep 09, 2024
    • Arseniy Volynets's avatar
      feat: use two round protocol for cacheable requests · 5ccdddaa
      Arseniy Volynets authored and Arseniy Volynets's avatar Arseniy Volynets committed
      - For cacheable requests, we now send only cache required data needed to
      execute the query if it is in the storage cache. If query is not in the
      storage cache, storage returns empty result with flag indicating there
      was a cache miss. Then coordinator sends the second round of requests to
      replicasets where cache miss happened. It sends the full message there.
      - Parameters for required message are now computed without compilation
      to SyntaxPlan - Fixed parameter order in SyntaxPlan
      5ccdddaa
  16. Sep 06, 2024
    • Denis Smirnov's avatar
      ci: switch to rocky linux 8 image · 213d358f
      Denis Smirnov authored
      Verified
      213d358f
    • Denis Smirnov's avatar
      feat: move to rust API for local SQL · 2c5217ff
      Denis Smirnov authored
      Verified
      2c5217ff
    • Denis Smirnov's avatar
      feat: improve tarantool caching for motions · 3af5734b
      Denis Smirnov authored
      Previously we cached only the leaf sub-trees of the IR plan under
      the first level of motions. The problem was in temporary tables as
      we used random names for them and dropped after usage (and invalidated
      corresponding prepared statements as well). Now we use idempotent
      names for temporary tables and truncate them after usage. It allows
      us to keep prepared statements in the cache. One more thing: as we
      use the same temporary table for multiple queries, we need to use
      latch locks for the prepared statement cache. One day we'll switch
      to more granular locks (mostly for vinyl spaces), but let's use
      current approach for the start.
      
      We also removed can_be_cached flag from the code. Only DQL uses VDBE
      and needs caching, and all these queries can be cached. The only
      exception are the queries with Local and LocalSegment motion policies
      but only DML can have them. So, no need for this flag and let's make the
      code cleaner.
      3af5734b
  17. Sep 01, 2024
  18. Aug 30, 2024
  19. Aug 26, 2024
    • Arseniy Volynets's avatar
      feat!: normalize identifiers to lowercase · 4e2e0a68
      Arseniy Volynets authored and Arseniy Volynets's avatar Arseniy Volynets committed
      - Normalize name to lowercase from parser
      - Identifiers are stored as normalized strings
      without quotes
      - During conversion to local SQL we wrap
      identifiers in quotes, because tarantool
      normalizes names without quotes to uppercase
      - For errors and explain, we also need to
      wrap names into quotes for better readability
      4e2e0a68
  20. Aug 22, 2024
  21. Jul 30, 2024
  22. Jul 14, 2024
  23. Jun 17, 2024
  24. Jun 13, 2024
  25. Jun 04, 2024
  26. May 15, 2024
  27. May 14, 2024
Loading