Skip to content

Commit

Permalink
set vnode mapping for materialzied source
Browse files Browse the repository at this point in the history
  • Loading branch information
xx01cyx committed Jun 17, 2022
1 parent 1374eb8 commit 3a95caf
Showing 1 changed file with 26 additions and 21 deletions.
47 changes: 26 additions & 21 deletions src/meta/src/rpc/service/ddl_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,27 +296,7 @@ where
.map_err(tonic_err)?;
return Err(e.into());
} else {
// Fill in vnode mapping in order to inform frontend of data distribution.
let vnode_mapping = self
.env
.hash_mapping_manager_ref()
.get_table_hash_mapping(&id);
match vnode_mapping {
Some(vnode_mapping) => {
let (original_indices, data) = compress_data(&vnode_mapping);
mview.mapping = Some(ParallelUnitMapping {
table_id: id,
original_indices,
data,
});
}
None => {
return Err(ErrorCode::InternalError(
"no data distribution found for materialized view".to_string(),
))
.map_err(tonic_err);
}
}
self.set_mview_mapping(&mut mview).map_err(tonic_err)?;
}

// 4. Finally, update the catalog.
Expand Down Expand Up @@ -547,6 +527,8 @@ where
// drop previously created source
self.source_manager.drop_source(source_id).await?;
return Err(e);
} else {
self.set_mview_mapping(&mut mview).map_err(tonic_err)?;
}

// Finally, update the catalog.
Expand Down Expand Up @@ -580,4 +562,27 @@ where

Ok(version)
}

/// Fill in mview's vnode mapping so that frontend will know the data distribution.
fn set_mview_mapping(&self, mview: &mut Table) -> RwResult<()> {
let vnode_mapping = self
.env
.hash_mapping_manager_ref()
.get_table_hash_mapping(&mview.id);
match vnode_mapping {
Some(vnode_mapping) => {
let (original_indices, data) = compress_data(&vnode_mapping);
mview.mapping = Some(ParallelUnitMapping {
table_id: mview.id,
original_indices,
data,
});
Ok(())
}
None => Err(ErrorCode::InternalError(
"no data distribution found for materialized view".to_string(),
)
.into()),
}
}
}

0 comments on commit 3a95caf

Please sign in to comment.