Drop features
DROP FEATURES removes persisted definitions from the registry while protecting any features that still depend on them. Use the plural keyword even when dropping one feature.
Before deleting a shared feature, use IS_DOWNSTREAM_OF() on Explore features to see what the change could affect.
Drop one feature
Use IF EXISTS for cleanup and repeatable deployment scripts. The statement becomes a no-op when the name is already absent:
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.DROP_ONE;| feature_name VARCHAR | status VARCHAR | message VARCHAR |
|---|---|---|
| FM.TUTORIALS.CAD.DROP_ONE | DELETED | Feature successfully deleted |
Dependency protection
FeatureQL rejects a drop that would leave a broken reference. If FEATURE4 depends on FEATURE2, dropping FEATURE2 and FEATURE3 while retaining FEATURE4 fails:
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.FEATURE2, FM.TUTORIALS.CAD.FEATURE3;The error identifies the remaining dependent feature. Nothing is deleted, so you can inspect the graph and retry safely.
Drop a related set
Include the dependent features in the same statement. FeatureQL resolves the deletion order from the dependency graph:
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.FEATURE2, FM.TUTORIALS.CAD.FEATURE3, FM.TUTORIALS.CAD.FEATURE4;| feature_name VARCHAR | status VARCHAR | message VARCHAR |
|---|---|---|
| FM.TUTORIALS.CAD.FEATURE2 | DELETED | Feature successfully deleted |
| FM.TUTORIALS.CAD.FEATURE3 | DELETED | Feature successfully deleted |
| FM.TUTORIALS.CAD.FEATURE4 | DELETED | Feature successfully deleted |
You can also group individual statements in a transaction. FeatureQL validates the final registry state and orders the mutations within the transaction:
START TRANSACTION;
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.FEATURE2;
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.FEATURE3;
DROP FEATURES IF EXISTS FM.TUTORIALS.CAD.FEATURE4;
COMMIT;
Replace a whole namespace
DROP FEATURES IN removes every matching feature below a namespace:
DROP FEATURES IF EXISTS IN FM.TUTORIALS.CAD;
Use namespace-wide deletion only when the namespace itself is the intended unit of ownership. Dependencies outside the namespace can still block the operation.
Combine drops and creates atomically
A persist transaction can combine DROP and CREATE. FeatureQL validates the final graph, applies the net change, and returns a mutation report. The request leaves either the previous registry or the complete new graph — never a half-applied script.
TEMPORARY mutations belong in a different script. See Create features for the persist wrap and Statement tools for a request-local overlay.
Syntax summary
DROP FEATURES [IF EXISTS] <feature_name>, <feature_name>, ...;
DROP FEATURES [IF EXISTS] IN <namespace> [UP TO LEVEL <n>];
Without IF EXISTS, a missing name is an error. With it, missing names are ignored.
Next
Read Registry consistency for the guarantees shared by create, replace, and drop operations. For all selectors and unsupported singular forms, see the DROP FEATURES syntax reference .