mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-02 23:04:23 +01:00
fix merge conflicts
This commit is contained in:
12
core/lib.rs
12
core/lib.rs
@@ -42,6 +42,7 @@ mod numeric;
|
||||
#[global_allocator]
|
||||
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
|
||||
|
||||
use crate::storage::header_accessor::HeaderRef;
|
||||
use crate::translate::optimizer::optimize_plan;
|
||||
use crate::translate::pragma::TURSO_CDC_DEFAULT_TABLE_NAME;
|
||||
#[cfg(all(feature = "fs", feature = "conn_raw_api"))]
|
||||
@@ -310,7 +311,10 @@ impl Database {
|
||||
let pager = conn.pager.borrow().clone();
|
||||
|
||||
db.with_schema_mut(|schema| {
|
||||
schema.schema_version = header_accessor::get_schema_cookie(&conn.pager.borrow())?;
|
||||
let header_ref = pager.io.block(|| HeaderRef::from_pager(&pager))?;
|
||||
let header = header_ref.borrow();
|
||||
let header_schema_cookie = header.schema_cookie.get();
|
||||
schema.schema_version = header_schema_cookie;
|
||||
let result = schema
|
||||
.make_from_btree(None, pager.clone(), &syms)
|
||||
.or_else(|e| {
|
||||
@@ -1702,8 +1706,9 @@ impl Statement {
|
||||
let mut res = self
|
||||
.program
|
||||
.step(&mut self.state, self.mv_store.clone(), self.pager.clone());
|
||||
for _ in 0..MAX_SCHEMA_RETRY {
|
||||
for i in 0..MAX_SCHEMA_RETRY {
|
||||
// Only reprepare if we still need to update schema
|
||||
dbg!(i);
|
||||
if !matches!(res, Err(LimboError::SchemaUpdated)) {
|
||||
break;
|
||||
}
|
||||
@@ -1717,12 +1722,13 @@ impl Statement {
|
||||
}
|
||||
|
||||
fn reprepare(&mut self) -> Result<()> {
|
||||
let conn = self.program.connection.clone();
|
||||
*conn.schema.borrow_mut() = conn._db.clone_schema()?;
|
||||
self.program = {
|
||||
let mut parser = Parser::new(self.program.sql.as_bytes());
|
||||
let cmd = parser.next()?;
|
||||
let cmd = cmd.expect("Same SQL string should be able to be parsed");
|
||||
|
||||
let conn = self.program.connection.clone();
|
||||
let syms = conn.syms.borrow();
|
||||
|
||||
match cmd {
|
||||
|
||||
@@ -113,7 +113,6 @@ pub fn translate_attach(
|
||||
},
|
||||
});
|
||||
|
||||
program.epilogue(super::emitter::TransactionMode::None);
|
||||
Ok(program)
|
||||
}
|
||||
|
||||
@@ -178,6 +177,5 @@ pub fn translate_detach(
|
||||
},
|
||||
});
|
||||
|
||||
program.epilogue(super::emitter::TransactionMode::None);
|
||||
Ok(program)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ use crate::numeric::{NullableInteger, Numeric};
|
||||
use crate::schema::Table;
|
||||
use crate::storage::btree::{integrity_check, IntegrityCheckError, IntegrityCheckState};
|
||||
use crate::storage::database::DatabaseFile;
|
||||
use crate::storage::header_accessor::HeaderRef;
|
||||
use crate::storage::page_cache::DumbLruPageCache;
|
||||
use crate::storage::pager::{AtomicDbState, CreateBTreeFlags, DbState};
|
||||
use crate::storage::sqlite3_ondisk::read_varint;
|
||||
@@ -2008,7 +2009,9 @@ pub fn op_transaction(
|
||||
if state.mv_tx_id.is_none() {
|
||||
// We allocate the first page lazily in the first transaction.
|
||||
return_if_io!(pager.maybe_allocate_page1());
|
||||
let header_schema_cookie = header_accessor::get_schema_cookie(pager)?;
|
||||
let header_ref = pager.io.block(|| HeaderRef::from_pager(&pager))?;
|
||||
let header = header_ref.borrow();
|
||||
let header_schema_cookie = header.schema_cookie.get();
|
||||
if header_schema_cookie != *schema_cookie {
|
||||
return Err(LimboError::SchemaUpdated);
|
||||
}
|
||||
@@ -2084,8 +2087,9 @@ pub fn op_transaction(
|
||||
|
||||
// Can only read header if page 1 has been allocated already
|
||||
// begin_write_tx and begin_read_tx guarantee that happens
|
||||
let header_schema_cookie = header_accessor::get_schema_cookie(pager)?;
|
||||
tracing::info!(header_schema_cookie, schema_cookie);
|
||||
let header_ref = pager.io.block(|| HeaderRef::from_pager(&pager))?;
|
||||
let header = header_ref.borrow();
|
||||
let header_schema_cookie = header.schema_cookie.get();
|
||||
if header_schema_cookie != *schema_cookie {
|
||||
return Err(LimboError::SchemaUpdated);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user