The DROP FUNCTION statement enables you to delete a user-defined function.
Prerequisites
| To manage … | You must have … |
|---|---|
Global inline functions |
Manage Global Functions role. |
Scoped inline functions |
Manage Scope Functions role, with permissions on the specified bucket and scope. |
Global external functions |
Manage Global External Functions role. |
Scoped external functions |
Manage Scope External Functions role, with permissions on the specified bucket and scope. |
For more information about user roles, see Authorization.
Syntax
drop-function ::= 'DROP' 'FUNCTION' function ( 'IF' 'EXISTS' )?
| function |
Function Name
function ::= ( namespace ':' ( bucket '.' scope '.' )? )? identifier
The name of the function.
This is usually an unqualified identifier, such as func1 or `func-1`.
In this case, the path to the function is determined by the current query context.
To delete a global function in a particular namespace, the function name must be a qualified identifier with a namespace, such as default:func1.
Similarly, to delete a scoped function in a particular scope, the function name must be a qualified identifier with the full path to a scope, such as default:`travel-sample`.inventory.func1.
For more information, see Global Functions and Scoped Functions.
| The name of a user-defined function is case-sensitive, unlike that of a built-in function. You must delete the user-defined function using the same case that was used when it was created. |
IF EXISTS Clause
The optional IF EXISTS clause enables the statement to complete successfully when the specified function does not exist.
When the function does not exist within the specified context: [1]
-
If this clause is not present, an error is generated.
-
If this clause is present, the statement does nothing and completes without error.
Usage
When you drop a user-defined function whose definition is stored in a JavaScript library, the JavaScript library and function on which the user-defined function depended are not deleted. This enables you to create a new user-defined function with a different name, or a different number of parameters, using the same JavaScript library and function.
To change or delete a JavaScript library or the JavaScript function code, you must use the Couchbase Web Console or the SQL++ Functions REST API.
When you drop a SQL++ managed JavaScript function, the associated JavaScript function code is also deleted.
Examples
To try the examples in this section, set the query context to the inventory scope in the travel sample dataset.
For more information, see Query Context.
This statement deletes an inline function called celsius.
DROP FUNCTION celsius;
You can run the following query to check that the function is no longer available.
SELECT * FROM system:functions;
This statement deletes a SQL++ managed JavaScript function called add100.
DROP FUNCTION add100 IF EXISTS;
You can run the following query to check that the function is no longer available.
SELECT * FROM system:functions;
These statements delete two external functions:
-
A function called
geohash, which depends on the JavaScriptencodeGeoHashfunction in thegeohash-jslibrary; -
A function called
adjacent, which depends on the JavaScriptcalculateAdjacentfunction in thegeohash-jslibrary.
DROP FUNCTION geohash;
DROP FUNCTION adjacent;
You can run the following command to check that the JavaScript geohash-js library and the encodeGeoHash and calculateAdjacent functions are still available.
curl -v -X GET \
http://localhost:8093/evaluator/v1/libraries/geohash-js \
-u Administrator:password
Related Links
-
For an introduction to user-defined functions, see User-Defined Functions for Queries.
-
For more information about JavaScript functions, see JavaScript Functions for Query Reference.
-
To manage JavaScript libraries, see Query Functions REST API.
-
To create user-defined functions, see CREATE FUNCTION.
-
To execute a user-defined function, see EXECUTE FUNCTION.
-
To see the execution plan for a user-defined function, see EXPLAIN FUNCTION.
-
To include a user-defined function in an expression, see User-Defined Functions.
-
To monitor user-defined functions, see Monitor Functions.