<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="drop_table">

  <title>DROP TABLE Statement</title>
  <titlealts audience="PDF"><navtitle>DROP TABLE</navtitle></titlealts>
  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="SQL"/>
      <data name="Category" value="DDL"/>
      <data name="Category" value="Tables"/>
      <data name="Category" value="Schemas"/>
      <data name="Category" value="S3"/>
      <data name="Category" value="Developers"/>
      <data name="Category" value="Data Analysts"/>
    </metadata>
  </prolog>

  <conbody>

    <p>
      <indexterm audience="hidden">DROP TABLE statement</indexterm>
      Removes an Impala table. Also removes the underlying HDFS data files for internal tables, although not for
      external tables.
    </p>

    <p conref="../shared/impala_common.xml#common/syntax_blurb"/>

<codeblock>DROP TABLE [IF EXISTS] [<varname>db_name</varname>.]<varname>table_name</varname> <ph rev="2.3.0">[PURGE]</ph></codeblock>

    <p>
      <b>IF EXISTS clause:</b>
    </p>

    <p>
      The optional <codeph>IF EXISTS</codeph> clause makes the statement succeed whether or not the table exists.
      If the table does exist, it is dropped; if it does not exist, the statement has no effect. This capability is
      useful in standardized setup scripts that remove existing schema objects and create new ones. By using some
      combination of <codeph>IF EXISTS</codeph> for the <codeph>DROP</codeph> statements and <codeph>IF NOT
      EXISTS</codeph> clauses for the <codeph>CREATE</codeph> statements, the script can run successfully the first
      time you run it (when the objects do not exist yet) and subsequent times (when some or all of the objects do
      already exist).
    </p>

    <p rev="2.3.0">
      <b>PURGE clause:</b>
    </p>

    <p rev="2.3.0"> The optional <codeph>PURGE</codeph> keyword, available in
      <keyword keyref="impala23_full"/> and higher, causes Impala to remove the associated
      HDFS data files immediately, rather than going through the HDFS trashcan
      mechanism. Use this keyword when dropping a table if it is crucial to
      remove the data as quickly as possible to free up space, or if there is a
      problem with the trashcan, such as the trash cannot being configured or
      being in a different HDFS encryption zone than the data files. </p>

    <p conref="../shared/impala_common.xml#common/ddl_blurb"/>

    <p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>

    <p>
      By default, Impala removes the associated HDFS directory and data files for the table. If you issue a
      <codeph>DROP TABLE</codeph> and the data files are not deleted, it might be for the following reasons:
    </p>

    <ul>
      <li>
        If the table was created with the
        <codeph><xref href="impala_tables.xml#external_tables">EXTERNAL</xref></codeph> clause, Impala leaves all
        files and directories untouched. Use external tables when the data is under the control of other Hadoop
        components, and Impala is only used to query the data files from their original locations.
      </li>

      <li>
        Impala might leave the data files behind unintentionally, if there is no HDFS location available to hold
        the HDFS trashcan for the <codeph>impala</codeph> user. See
        <xref href="impala_prereqs.xml#prereqs_account"/> for the procedure to set up the required HDFS home
        directory.
      </li>
    </ul>

    <p>
      Make sure that you are in the correct database before dropping a table, either by issuing a
      <codeph>USE</codeph> statement first or by using a fully qualified name
      <codeph><varname>db_name</varname>.<varname>table_name</varname></codeph>.
    </p>

    <p>
      If you intend to issue a <codeph>DROP DATABASE</codeph> statement, first issue <codeph>DROP TABLE</codeph>
      statements to remove all the tables in that database.
    </p>

    <p conref="../shared/impala_common.xml#common/example_blurb"/>

<codeblock>create database temporary;
use temporary;
create table unimportant (x int);
create table trivial (s string);
-- Drop a table in the current database.
drop table unimportant;
-- Switch to a different database.
use default;
-- To drop a table in a different database...
drop table trivial;
<i>ERROR: AnalysisException: Table does not exist: default.trivial</i>
-- ...use a fully qualified name.
drop table temporary.trivial;</codeblock>

    <p conref="../shared/impala_common.xml#common/disk_space_blurb"/>

    <p conref="../shared/impala_common.xml#common/s3_blurb"/>
    <p rev="2.6.0 IMPALA-1878">
      The <codeph>DROP TABLE</codeph> statement can remove data files from S3
      if the associated S3 table is an internal table.
      In <keyword keyref="impala26_full"/> and higher, as part of improved support for writing
      to S3, Impala also removes the associated folder when dropping an internal table
      that resides on S3.
      See <xref href="impala_s3.xml#s3"/> for details about working with S3 tables.
    </p>

    <p conref="../shared/impala_common.xml#common/s3_drop_table_purge"/>

    <p conref="../shared/impala_common.xml#common/s3_ddl"/>

    <p conref="../shared/impala_common.xml#common/cancel_blurb_no"/>

    <p conref="../shared/impala_common.xml#common/permissions_blurb"/>
    <p rev="">
      For an internal table, the user ID that the <cmdname>impalad</cmdname> daemon runs under,
      typically the <codeph>impala</codeph> user, must have write
      permission for all the files and directories that make up the table.
    </p>
    <p>
      For an external table, dropping the table only involves changes to metadata in the metastore database.
      Because Impala does not remove any HDFS files or directories when external tables are dropped,
      no particular permissions are needed for the associated HDFS files or directories.
    </p>

    <p rev="kudu" conref="../shared/impala_common.xml#common/kudu_blurb"/>
    <p rev="kudu">
      Kudu tables can be managed or external, the same as with HDFS-based
      tables. For a managed table, the underlying Kudu table and its data
      are removed by <codeph>DROP TABLE</codeph>. For an external table,
      the underlying Kudu table and its data remain after a
      <codeph>DROP TABLE</codeph>.
    </p>

    <p conref="../shared/impala_common.xml#common/related_info"/>

    <p>
      <xref href="impala_tables.xml#tables"/>,
      <xref href="impala_alter_table.xml#alter_table"/>, <xref href="impala_create_table.xml#create_table"/>,
      <xref href="impala_partitioning.xml#partitioning"/>, <xref href="impala_tables.xml#internal_tables"/>,
      <xref href="impala_tables.xml#external_tables"/>
    </p>

  </conbody>
</concept>
