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
`DROP FUNCTION` statement drops a temporary or user defined function(UDF). An exception will be thrown if the function does not exist
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Add "The" at the start. Also, space before (UDF). What does 'in the system' mean - can we just drop this or make it more specific?

in the system.

### 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 |
+-----------+
| temp_avg |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sandeep-katta Why is it temp_avg here ? Shouldn't it be temporary function test_avg ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ping @sandeep-katta to fix that part

+-----------+

-- Drop Temporary function
DROP TEMPORARY FUNCTION IF EXISTS temp_avg;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sandeep-katta same question :-)

+---------+
| 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)