Skip to content
Snippets Groups Projects
  1. Oct 01, 2024
    • Maksim Kaitmazian's avatar
      feat(sql): support IF EXIST and IF NOT EXISTS options · 1a553992
      Maksim Kaitmazian authored
      Note that after this merge request, we no longer validate whether the format
      of the created object matches with the schema. Consequently, we do not
      suppress errors if formats match anymore.
      
      Before:
      ```sql
      CREATE USER u WITH PASSWORD 'Passw0rd'
      1
      CREATE USER u WITH PASSWORD 'Passw0rd'
      0
      CREATE USER u WITH PASSWORD 'DifferentPassw0rd'
      error: user already exists with different auth method
      ```
      
      Now:
      ```sql
      CREATE USER u WITH PASSWORD 'Passw0rd'
      1
      CREATE USER u WITH PASSWORD 'Passw0rd'
      error: user u already exists
      CREATE USER u WITH PASSWORD 'DifferentPassw0rd'
      error: user u already exists
      CREATE USER IF NOT EXISTS u WITH PASSWORD 'DifferentPassw0rd'
      0
      ```
      1a553992
  2. Sep 27, 2024
  3. Sep 25, 2024
  4. Sep 16, 2024
  5. Sep 09, 2024
  6. Aug 30, 2024
  7. Aug 21, 2024
  8. Aug 20, 2024
  9. Aug 14, 2024
    • Dmitry Rodionov's avatar
      refactor: split reenterable_schema_change_request · a6dc7e99
      Dmitry Rodionov authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Previously function was ~700 loc. The patch splits out the logic of
      conversion from ir node to operation. Previously there were two stages,
      initial validation that constructed intermediate structure and then
      intermediate structure was transformed into Op potentially several times
      in case of retries. The patch removes intermediate conversion by
      direct mapping from ir node to op. It makes reading more convenient
      since there is no need to jump back and forth between initial checks and
      actual Op construction. Another benefit is that some checks need to be
      repeated on each retry since retries originate from conflicts and
      conflicts change system state. So in newer state operation may no longer
      make sense. By coupling both operations together there is no way a check
      can be missed in the retry phase.
      
      We still do some cloning here and there. We can probably improve on that
      by constructing Op once and then adjusting it in place for conflicts but
      since retries should be rare in practice it shouldnt be a problem.
      
      Additionally we do a lot of conversion between SmolStr and String. We
      need to use SmolStr in more placese inside picodata so we dont need to
      do that.
      a6dc7e99
  10. Aug 12, 2024
  11. Aug 08, 2024
  12. Aug 02, 2024
  13. Jul 25, 2024
  14. Jul 15, 2024
  15. Jul 04, 2024
    • Georgy Moshkin's avatar
      feat: introduce picoplugin::transport::rpc module · cb7e0a05
      Georgy Moshkin authored
      - use RouteBuilder to register rpc endpoints (input and ouptut is raw
        bytes for now)
      - use RequestBuilder to send RPC requests to other instances which are
        running a specified plugin.service (guarded by version)
          - supported routing by
              - explicit instance_id
              - replicaset_id
              - bucket_id
              - any available instance with given service
      - use context::Context to extract information about request or add
        custom fields at runtime (middleware not yet implemented)
      cb7e0a05
  16. Jun 26, 2024
  17. Jun 21, 2024
  18. Jun 19, 2024
  19. Jun 11, 2024
  20. Jun 03, 2024
  21. May 29, 2024
  22. May 22, 2024
    • godzie44's avatar
      chore(plugins): plugin system improvements · 664f32d8
      godzie44 authored and Georgy Moshkin's avatar Georgy Moshkin committed
      - add description field to `_pico_plugin` and `_pico_service`
      - plugin loading: filter files by its extensions
      - plugin loading: check possible service collisions
      - plugin loading: now plugin searching at {plugin_dir}/{plugin_name} path
      - now all errors between plugin and picodata wrapping with `BoxError` (this protects plugin caller from UAF)
      664f32d8
  23. May 21, 2024
  24. Apr 24, 2024
    • godzie44's avatar
      feature: two-step plugin installing and removing · 6a39a360
      godzie44 authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Now for installation and enable plugin, there are two steps instead of one
      (`pico.load_plugin` previously).
      1. Install plugin (`pico.install_plugin`):
      validate plugin, create system tables.
      2. Enable plugin (`pico.enable_plugin`):
      loads plugin into instances memory, call `on_start` callback.
      
      Same for a plugin removing process (`pico.remove_plugin` previously):
      1. Disable plugin (`pico.disable_plugin`): call `on_stop` callbacks, drop
      plugin from instances.
      2. Remove plugin (`pico.remove_plugin`):
      remove plugin meta from system tables.
      6a39a360
  25. Apr 12, 2024
Loading