Skip to content

Commit

Permalink
fix: unexpected warning on undefined-field-padding-null error (#19002) (
Browse files Browse the repository at this point in the history
#19224)

Signed-off-by: tabVersion <[email protected]>
Co-authored-by: Bohan Zhang <[email protected]>
  • Loading branch information
github-actions[bot] and tabVersion authored Nov 1, 2024
1 parent 9f677cd commit 3e96f7c
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/connector/src/parser/plain_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ impl PlainParser {
row_op.with_value(self.payload_builder.generate_accessor(data).await?);
}

writer.do_insert(|column: &SourceColumnDesc| row_op.access_field(column))?;
writer.do_insert(|column: &SourceColumnDesc| row_op.access_field::<false>(column))?;

Ok(ParseResult::Rows)
}
Expand Down
16 changes: 11 additions & 5 deletions src/connector/src/parser/unified/kv_event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,19 @@ where
}
}

pub fn access_field(&self, desc: &SourceColumnDesc) -> AccessResult<DatumCow<'_>> {
match desc.additional_column.column_type {
Some(AdditionalColumnType::Key(_)) => self.access_key(&[&desc.name], &desc.data_type),
pub fn access_field<const KEY_ONLY: bool>(
&self,
desc: &SourceColumnDesc,
) -> AccessResult<DatumCow<'_>> {
match (&desc.additional_column.column_type, KEY_ONLY) {
(Some(AdditionalColumnType::Key(_)), _) => {
self.access_key(&[&desc.name], &desc.data_type)
}
// hack here: Get the whole payload as a single column
// use a special mark empty slice as path to represent the whole payload
Some(AdditionalColumnType::Payload(_)) => self.access_value(&[], &desc.data_type),
None => self.access_value(&[&desc.name], &desc.data_type),
(Some(AdditionalColumnType::Payload(_)), _) => self.access_value(&[], &desc.data_type),
(None, false) => self.access_value(&[&desc.name], &desc.data_type),
(_, true) => Ok(DatumCow::Owned(None)),
_ => unreachable!(),
}
}
Expand Down
12 changes: 9 additions & 3 deletions src/connector/src/parser/upsert_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,16 @@ impl UpsertParser {
} else {
change_event_op = ChangeEventOperation::Delete;
}
let f = |column: &SourceColumnDesc| row_op.access_field(column);

match change_event_op {
ChangeEventOperation::Upsert => writer.do_insert(f)?,
ChangeEventOperation::Delete => writer.do_delete(f)?,
ChangeEventOperation::Upsert => {
let f = |column: &SourceColumnDesc| row_op.access_field::<false>(column);
writer.do_insert(f)?
}
ChangeEventOperation::Delete => {
let f = |column: &SourceColumnDesc| row_op.access_field::<true>(column);
writer.do_delete(f)?
}
}
Ok(())
}
Expand Down

0 comments on commit 3e96f7c

Please sign in to comment.