tursodatabase/turso

Improve OwnedValue Register in vdbe allocations

Open

#1.236 aberto em 2 de abr. de 2025

Ver no GitHub
 (1 comment) (0 reactions) (0 assignees)Rust (1.001 forks)github user discovery
good first issueperformance

Métricas do repositório

Stars
 (19.103 stars)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

The idea is to make OwnedRecord register an enum that has a buffer to store all values. For example right now if you replace OwnedValue::Integer with OwnedValue::Float it will deallocate OwnedValue::Integer which is unnecessary.

This can help with stuff with affinity for example, let's say you update a OnwedValue::Text to a OwnedValue::intenger, then you would have to allocate a new OwnedValue and dispose of the buffer in Text.

So in pseudo code:

enum OwnedValueType {
  Integer,
  Float,
  Text,
  Blob,
  Null
}

struct OwnedValue {
  buffer: Vec<u8>,
  type: OwnedValueType,
}

impl OwnedValue {
   pub fn set_text(&[u8]) {
     // 1. increase self.buffer if necessary
     // 2. clear buffer
    // 3. set buffer with data
   }
}

Guia do colaborador