From fdbd010d893c180569a1ee6ebb7dbf3589a837ee Mon Sep 17 00:00:00 2001 From: Piotr Jastrzebski Date: Sun, 7 Jul 2024 10:04:49 +0200 Subject: [PATCH] Remove incorrect Column::is_rowid_alias Fixes #83 Signed-off-by: Piotr Jastrzebski --- core/schema.rs | 6 ------ core/translate.rs | 13 ++++++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/schema.rs b/core/schema.rs index a8982dd77..302ddc3be 100644 --- a/core/schema.rs +++ b/core/schema.rs @@ -148,12 +148,6 @@ pub struct Column { pub primary_key: bool, } -impl Column { - pub fn is_rowid_alias(&self) -> bool { - self.primary_key && self.ty == Type::Integer - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub enum Type { Null, diff --git a/core/translate.rs b/core/translate.rs index d17b09ad0..76785cf01 100644 --- a/core/translate.rs +++ b/core/translate.rs @@ -3,7 +3,7 @@ use std::rc::Rc; use crate::function::AggFunc; use crate::pager::Pager; -use crate::schema::{Schema, Table}; +use crate::schema::{Schema, Table, Type}; use crate::sqlite3_ondisk::{DatabaseHeader, MIN_PAGE_CACHE_SIZE}; use crate::util::normalize_ident; use crate::vdbe::{Insn, Program, ProgramBuilder}; @@ -265,8 +265,15 @@ fn translate_column( } } sqlite3_parser::ast::ResultColumn::Star => { - for (i, col) in table.unwrap().columns.iter().enumerate() { - if col.is_rowid_alias() { + let table = table.unwrap(); + let composite_primary_key = table + .columns + .iter() + .filter(|col| col.primary_key) + .count() + > 1; + for (i, col) in table.columns.iter().enumerate() { + if col.primary_key && col.ty == Type::Integer && !composite_primary_key { // rowid alias program.emit_insn(Insn::RowId { cursor_id: cursor_id.unwrap(), dest: target_register + i,