I took a quick look through the patch, I'll try to build and test it tomorrow.
--- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -3145,6 +3145,7 @@ typedef struct DropdbStmt NodeTag type; char *dbname; /* database to drop */ bool missing_ok; /* skip error if db is missing? */ + List *options; /* currently only FORCE is supported */ } DropdbStmt;
Why put FORCE as the single item in an options list? A bool var seems like it would be more clear and consistent.
- * DROP DATABASE [ IF EXISTS ] + * DROP DATABASE [ ( FORCE ) ] [ IF EXISTS ]
Why is it `[ ( FORCE ) ]` instead of `[ FORCE ]`? There are also places in the code that seem like extra () are around FORCE. Like here: