(
&self,
cmd: &CreateExternalTable,
)
| 816 | } |
| 817 | |
| 818 | async fn create_external_table( |
| 819 | &self, |
| 820 | cmd: &CreateExternalTable, |
| 821 | ) -> Result<DataFrame> { |
| 822 | let exist = self.table_exist(cmd.name.clone())?; |
| 823 | |
| 824 | if cmd.temporary { |
| 825 | return not_impl_err!("Temporary tables not supported"); |
| 826 | } |
| 827 | |
| 828 | match (cmd.if_not_exists, cmd.or_replace, exist) { |
| 829 | (true, false, true) => self.return_empty_dataframe(), |
| 830 | (false, true, true) => { |
| 831 | let result = self |
| 832 | .find_and_deregister(cmd.name.clone(), TableType::Base) |
| 833 | .await; |
| 834 | |
| 835 | match result { |
| 836 | Ok(true) => { |
| 837 | let table_provider: Arc<dyn TableProvider> = |
| 838 | self.create_custom_table(cmd).await?; |
| 839 | self.register_table(cmd.name.clone(), table_provider)?; |
| 840 | self.return_empty_dataframe() |
| 841 | } |
| 842 | Ok(false) => { |
| 843 | let table_provider: Arc<dyn TableProvider> = |
| 844 | self.create_custom_table(cmd).await?; |
| 845 | self.register_table(cmd.name.clone(), table_provider)?; |
| 846 | self.return_empty_dataframe() |
| 847 | } |
| 848 | Err(e) => { |
| 849 | exec_err!("Errored while deregistering external table: {}", e) |
| 850 | } |
| 851 | } |
| 852 | } |
| 853 | (true, true, true) => { |
| 854 | exec_err!("'IF NOT EXISTS' cannot coexist with 'REPLACE'") |
| 855 | } |
| 856 | (_, _, false) => { |
| 857 | let table_provider: Arc<dyn TableProvider> = |
| 858 | self.create_custom_table(cmd).await?; |
| 859 | self.register_table(cmd.name.clone(), table_provider)?; |
| 860 | self.return_empty_dataframe() |
| 861 | } |
| 862 | (false, false, true) => { |
| 863 | exec_err!("External table '{}' already exists", cmd.name) |
| 864 | } |
| 865 | } |
| 866 | } |
| 867 | |
| 868 | async fn create_memory_table(&self, cmd: CreateMemoryTable) -> Result<DataFrame> { |
| 869 | let CreateMemoryTable { |
no test coverage detected