mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-08-04 10:08:20 +00:00
Allow reading altered tables by defaulting to null in Column insn
This commit is contained in:
parent
ed7271a08c
commit
67eda10453
2 changed files with 14 additions and 3 deletions
|
@ -732,6 +732,10 @@ impl ImmutableRecord {
|
|||
&self.values[idx]
|
||||
}
|
||||
|
||||
pub fn get_value_opt(&self, idx: usize) -> Option<&RefValue> {
|
||||
self.values.get(idx)
|
||||
}
|
||||
|
||||
pub fn len(&self) -> usize {
|
||||
self.values.len()
|
||||
}
|
||||
|
|
|
@ -1278,7 +1278,10 @@ pub fn op_column(
|
|||
if cursor.get_null_flag() {
|
||||
RefValue::Null
|
||||
} else {
|
||||
record.get_value(*column).clone()
|
||||
match record.get_value_opt(*column) {
|
||||
Some(val) => val.clone(),
|
||||
None => RefValue::Null,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
RefValue::Null
|
||||
|
@ -1305,10 +1308,14 @@ pub fn op_column(
|
|||
let record = {
|
||||
let mut cursor = state.get_cursor(*cursor_id);
|
||||
let cursor = cursor.as_sorter_mut();
|
||||
cursor.record().map(|r| r.clone())
|
||||
cursor.record().cloned()
|
||||
};
|
||||
if let Some(record) = record {
|
||||
state.registers[*dest] = Register::OwnedValue(record.get_value(*column).to_owned());
|
||||
state.registers[*dest] =
|
||||
Register::OwnedValue(match record.get_value_opt(*column) {
|
||||
Some(val) => val.to_owned(),
|
||||
None => OwnedValue::Null,
|
||||
});
|
||||
} else {
|
||||
state.registers[*dest] = Register::OwnedValue(OwnedValue::Null);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue