tursodatabase/turso

Improve OwnedValue Register in vdbe allocations

Open

#1 236 ouverte le 2 avr. 2025

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)Rust (1 001 forks)github user discovery
good first issueperformance

Métriques du dépôt

Stars
 (19 103 stars)
Métriques de merge PR
 (Métriques PR en attente)

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
   }
}

Guide contributeur