From 0b71e05ce0474fcee4d32ca6a7127342fd681af2 Mon Sep 17 00:00:00 2001 From: Keith Lee Date: Wed, 21 Jan 2026 08:39:47 +0000 Subject: [PATCH] Fix TableLookup so that SchemaId field bytes are not passed to CompactedRow::from_bytes(), these fields can be skipped as current rust client implementation does not check schema and already passes row_type --- crates/fluss/src/client/table/lookup.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/fluss/src/client/table/lookup.rs b/crates/fluss/src/client/table/lookup.rs index cd23503a..4e89176a 100644 --- a/crates/fluss/src/client/table/lookup.rs +++ b/crates/fluss/src/client/table/lookup.rs @@ -20,6 +20,7 @@ use crate::client::connection::FlussConnection; use crate::client::metadata::Metadata; use crate::error::{Error, Result}; use crate::metadata::{RowType, TableBucket, TableInfo}; +use crate::record::kv::SCHEMA_ID_LENGTH; use crate::row::InternalRow; use crate::row::compacted::CompactedRow; use crate::row::encode::{KeyEncoder, KeyEncoderFactory}; @@ -64,7 +65,10 @@ impl<'a> LookupResult<'a> { pub fn get_single_row(&self) -> Result>> { match self.rows.len() { 0 => Ok(None), - 1 => Ok(Some(CompactedRow::from_bytes(self.row_type, &self.rows[0]))), + 1 => Ok(Some(CompactedRow::from_bytes( + self.row_type, + &self.rows[0][SCHEMA_ID_LENGTH..], + ))), _ => Err(Error::UnexpectedError { message: "LookupResult contains multiple rows, use get_rows() instead".to_string(), source: None, @@ -76,7 +80,8 @@ impl<'a> LookupResult<'a> { pub fn get_rows(&self) -> Vec> { self.rows .iter() - .map(|bytes| CompactedRow::from_bytes(self.row_type, bytes)) + // TODO Add schema id check and fetch when implementing prefix lookup + .map(|bytes| CompactedRow::from_bytes(self.row_type, &bytes[SCHEMA_ID_LENGTH..])) .collect() } }