{
EXEC SQL BEGIN DECLARE SECTION;
int flag, id, cnt;
+ char resv[USERS_RESERVATIONS_SIZE];
EXEC SQL END DECLARE SECTION;
id = *(int *)argv[0];
- /* For now, only allow users to be deleted if their status is 0 */
- EXEC SQL SELECT status INTO :flag FROM users WHERE users_id = :id;
- if (flag != 0 && flag != 4)
+ /* For now, only allow users to be deleted if their status is 0
+ * and we have no reservations about deleting them.
+ */
+ EXEC SQL SELECT status, reservations INTO :flag, :resv
+ FROM users WHERE users_id = :id;
+ if ((flag != 0 && flag != 4) || *resv)
return MR_IN_USE;
- EXEC SQL DELETE FROM quota WHERE entity_id = :id AND type = 'USER';
- EXEC SQL DELETE FROM krbmap WHERE users_id = :id;
EXEC SQL SELECT COUNT(member_id) INTO :cnt FROM imembers
WHERE member_id = :id AND member_type = 'USER';
if (cnt > 0)
return MR_IN_USE;
if (dbms_errno)
return mr_errcode;
+
+ EXEC SQL DELETE FROM quota WHERE entity_id = :id AND type = 'USER';
+ EXEC SQL DELETE FROM krbmap WHERE users_id = :id;
return MR_SUCCESS;
}