mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-08-04 18:18:03 +00:00
Resolve merge conflict: Add columns names to result set for pragma statement output
This commit is contained in:
parent
74d4726b0c
commit
d802075ea9
2 changed files with 22 additions and 1 deletions
|
@ -23,7 +23,7 @@ fn list_pragmas(program: &mut ProgramBuilder) {
|
|||
let register = program.emit_string8_new_reg(x.to_string());
|
||||
program.emit_result_row(register, 1);
|
||||
}
|
||||
|
||||
program.add_pragma_result_column("pragma_list".into());
|
||||
program.epilogue(crate::translate::emitter::TransactionMode::None);
|
||||
}
|
||||
|
||||
|
@ -279,10 +279,12 @@ fn query_pragma(
|
|||
register,
|
||||
);
|
||||
program.emit_result_row(register, 1);
|
||||
program.add_pragma_result_column("cache_size".into());
|
||||
}
|
||||
PragmaName::JournalMode => {
|
||||
program.emit_string8("wal".into(), register);
|
||||
program.emit_result_row(register, 1);
|
||||
program.add_pragma_result_column("journal_mode".into());
|
||||
}
|
||||
PragmaName::LegacyFileFormat => {}
|
||||
PragmaName::WalCheckpoint => {
|
||||
|
@ -303,6 +305,7 @@ fn query_pragma(
|
|||
dest: register,
|
||||
});
|
||||
program.emit_result_row(register, 1);
|
||||
program.add_pragma_result_column("page_count".into());
|
||||
}
|
||||
PragmaName::TableInfo => {
|
||||
let table = match value {
|
||||
|
@ -348,6 +351,10 @@ fn query_pragma(
|
|||
program.emit_result_row(base_reg, 6);
|
||||
}
|
||||
}
|
||||
let col_names = ["cid", "name", "type", "notnull", "dflt_value", "pk"];
|
||||
for name in col_names {
|
||||
program.add_pragma_result_column(name.into());
|
||||
}
|
||||
}
|
||||
PragmaName::UserVersion => {
|
||||
program.emit_insn(Insn::ReadCookie {
|
||||
|
@ -355,6 +362,7 @@ fn query_pragma(
|
|||
dest: register,
|
||||
cookie: Cookie::UserVersion,
|
||||
});
|
||||
program.add_pragma_result_column("user_version".into());
|
||||
program.emit_result_row(register, 1);
|
||||
}
|
||||
PragmaName::SchemaVersion => {
|
||||
|
@ -363,11 +371,13 @@ fn query_pragma(
|
|||
dest: register,
|
||||
cookie: Cookie::SchemaVersion,
|
||||
});
|
||||
program.add_pragma_result_column("schema_version".into());
|
||||
program.emit_result_row(register, 1);
|
||||
}
|
||||
PragmaName::PageSize => {
|
||||
program.emit_int(database_header.lock().get_page_size().into(), register);
|
||||
program.emit_result_row(register, 1);
|
||||
program.add_pragma_result_column("page_size".into());
|
||||
}
|
||||
PragmaName::AutoVacuum => {
|
||||
let auto_vacuum_mode = pager.get_auto_vacuum_mode();
|
||||
|
|
|
@ -285,6 +285,17 @@ impl ProgramBuilder {
|
|||
cursor
|
||||
}
|
||||
|
||||
pub fn add_pragma_result_column(&mut self, col_name: String) {
|
||||
// TODO figure out a better type definition for ResultSetColumn
|
||||
// or invent another way to set pragma result columns
|
||||
let expr = ast::Expr::Id(ast::Id("".to_string()));
|
||||
self.result_columns.push(ResultSetColumn {
|
||||
expr,
|
||||
alias: Some(col_name),
|
||||
contains_aggregates: false,
|
||||
});
|
||||
}
|
||||
|
||||
#[instrument(skip(self), level = Level::TRACE)]
|
||||
pub fn emit_insn(&mut self, insn: Insn) {
|
||||
let function = insn.to_function();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue