Skip to content
85 changes: 84 additions & 1 deletion docs/sql-ref-syntax-ddl-drop-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,87 @@ license: |
limitations under the License.
---

**This page is under construction**
### Description
The `DROP FUNCTION` statement drops a temporary or user defined function (UDF). An exception will
be thrown if the function does not exist.

### Syntax
{% highlight sql %}
DROP [TEMPORARY] FUNCTION [IF EXISTS] [db_name.]function_name;
{% endhighlight %}


### Parameters

<dl>
<dt><code><em>function_name</em></code></dt>
<dd>The name of an existing function.</dd>
</dl>

<dl>
<dt><code><em>TEMPORARY</em></code></dt>
<dd>Should be used to delete the `temporary` function.</dd>
</dl>

<dl>
<dt><code><em>IF EXISTS</em></code></dt>
<dd>If specified, no exception is thrown when the function does not exist.</dd>
</dl>

### Example
{% highlight sql %}
-- Create a permanent function `test_avg`
CREATE FUNCTION test_avg as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';

-- List user functions
SHOW USER FUNCTIONS;
+-------------------+
| function |
+-------------------+
| default.test_avg |
+-------------------+

-- Create Temporary function `test_avg`
CREATE TEMPORARY FUNCTION test_avg as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';

-- List user functions
SHOW USER FUNCTIONS;
+-------------------+
| function |
+-------------------+
| default.test_avg |
| test_avg |
+-------------------+

-- Drop Permanent function
DROP FUNCTION test_avg;
+---------+
| Result |
+---------+
+---------+

-- Try to drop Permanent function which is not present
DROP FUNCTION test_avg;
Error: Error running query:
org.apache.spark.sql.catalyst.analysis.NoSuchPermanentFunctionException:
Function 'default.test_avg' not found in database 'default'; (state=,code=0)

-- List the functions after dropping, it should list only temporary function
SHOW USER FUNCTIONS;
+-----------+
| function |
+-----------+
| test_avg |
+-----------+

-- Drop Temporary function
DROP TEMPORARY FUNCTION IF EXISTS test_avg;
+---------+
| Result |
+---------+
+---------+
{% endhighlight %}
### Related statements
- [CREATE FUNCTION](sql-ref-syntax-ddl-create-function.html)
- [DESCRIBE FUNCTION](sql-ref-syntax-aux-describe-function.html)
- [SHOW FUNCTION](sql-ref-syntax-aux-show-functions.html)