(&self, delete: &Delete)
| 938 | } |
| 939 | |
| 940 | async fn handle_delete(&self, delete: &Delete) -> DFResult<DataFrame> { |
| 941 | let tables = match &delete.from { |
| 942 | FromTable::WithFromKeyword(t) | FromTable::WithoutKeyword(t) => t, |
| 943 | }; |
| 944 | let table_factor = tables |
| 945 | .first() |
| 946 | .map(|t| &t.relation) |
| 947 | .ok_or_else(|| DataFusionError::Plan("DELETE requires a target table".to_string()))?; |
| 948 | let table_name = match table_factor { |
| 949 | TableFactor::Table { name, .. } => name.clone(), |
| 950 | other => { |
| 951 | return Err(DataFusionError::Plan(format!( |
| 952 | "Unsupported target table in DELETE: {other}" |
| 953 | ))) |
| 954 | } |
| 955 | }; |
| 956 | let (catalog, _catalog_name, identifier) = self.resolve_catalog_and_table(&table_name)?; |
| 957 | |
| 958 | let table = catalog |
| 959 | .get_table(&identifier) |
| 960 | .await |
| 961 | .map_err(to_datafusion_error)?; |
| 962 | |
| 963 | let table_ref = table_name.to_string(); |
| 964 | crate::delete::execute_delete(self, delete, table, &table_ref).await |
| 965 | } |
| 966 | |
| 967 | async fn handle_insert_overwrite_partition(&self, insert: &Insert) -> DFResult<DataFrame> { |
| 968 | let table_name = match &insert.table { |
no test coverage detected