(
name: &QualifiedItemName,
data_source: &DataSourceDesc,
in_cluster: Option<ClusterId>,
role_id: RoleId,
)
| 1698 | } |
| 1699 | |
| 1700 | fn generate_required_source_privileges( |
| 1701 | name: &QualifiedItemName, |
| 1702 | data_source: &DataSourceDesc, |
| 1703 | in_cluster: Option<ClusterId>, |
| 1704 | role_id: RoleId, |
| 1705 | ) -> Vec<(SystemObjectId, AclMode, RoleId)> { |
| 1706 | let mut privileges = vec![( |
| 1707 | SystemObjectId::Object(name.qualifiers.clone().into()), |
| 1708 | AclMode::CREATE, |
| 1709 | role_id, |
| 1710 | )]; |
| 1711 | match (data_source, in_cluster) { |
| 1712 | (_, Some(id)) => { |
| 1713 | privileges.push((SystemObjectId::Object(id.into()), AclMode::CREATE, role_id)) |
| 1714 | } |
| 1715 | (DataSourceDesc::Ingestion(_), None) => { |
| 1716 | privileges.push((SystemObjectId::System, AclMode::CREATE_CLUSTER, role_id)) |
| 1717 | } |
| 1718 | // Non-ingestion data-sources have meaningless cluster config's (for now...) and they need |
| 1719 | // to be ignored. |
| 1720 | // This feels very brittle, but there's not much we can do until the UNDEFINED cluster |
| 1721 | // config is removed. |
| 1722 | (_, None) => {} |
| 1723 | } |
| 1724 | privileges |
| 1725 | } |
| 1726 | |
| 1727 | /// Generates all the privileges required to execute a read that includes the objects in `ids`. |
| 1728 | /// |
no test coverage detected