tursodatabase/turso

Improve OwnedValue Register in vdbe allocations

Open

#1.236 geöffnet am 2. Apr. 2025

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Rust (1.001 Forks)github user discovery
good first issueperformance

Repository-Metriken

Stars
 (19.103 Stars)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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

Contributor Guide