{"record":{"id":"bb9aa0827585872b","repo":"litedb-org/LiteDB","slug":"newname","errorCode":null,"errorMessage":"newName","messagePattern":"newName","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"LiteDB/Client/Database/LiteDatabase.cs","lineNumber":233,"sourceCode":"        }\n\n        /// <summary>\n        /// Drop a collection and all data + indexes\n        /// </summary>\n        public bool DropCollection(string name)\n        {\n            if (name.IsNullOrWhiteSpace()) throw new ArgumentNullException(nameof(name));\n\n            return _engine.DropCollection(name);\n        }\n\n        /// <summary>\n        /// Rename a collection. Returns false if oldName does not exists or newName already exists\n        /// </summary>\n        public bool RenameCollection(string oldName, string newName)\n        {\n            if (oldName.IsNullOrWhiteSpace()) throw new ArgumentNullException(nameof(oldName));\n            if (newName.IsNullOrWhiteSpace()) throw new ArgumentNullException(nameof(newName));\n\n            return _engine.RenameCollection(oldName, newName);\n        }\n\n        #endregion\n\n        #region Execute SQL\n\n        /// <summary>\n        /// Execute SQL commands and return as data reader.\n        /// </summary>\n        public IBsonDataReader Execute(TextReader commandReader, BsonDocument parameters = null)\n        {\n            if (commandReader == null) throw new ArgumentNullException(nameof(commandReader));\n\n            var tokenizer = new Tokenizer(commandReader);\n            var sql = new SqlParser(_engine, tokenizer, parameters);\n            var reader = sql.Execute();","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/litedb-org/LiteDB/blob/f906a5f850678719e39a39a006cb66dcae563cfa/LiteDB/Client/Database/LiteDatabase.cs#L215-L251","documentation":"ArgumentNullException thrown by LiteDatabase.RenameCollection(string oldName, string newName) when newName is null, empty, or whitespace (IsNullOrWhiteSpace check, checked after oldName). The destination collection name must be concrete; an empty target is rejected before the engine attempts the rename.","triggerScenarios":"Calling db.RenameCollection(\"customers\", null) or db.RenameCollection(\"customers\", \"\"); a destination-name variable that is unset or whitespace.","commonSituations":"Renaming to a config/user-supplied name without validation; copy-paste leaving the second argument empty; whitespace-only target name.","solutions":["Pass a concrete non-empty newName: db.RenameCollection(\"customers\", \"clients\").","Validate newName is non-empty and does not already collide with an existing collection.","Guard dynamic newName with IsNullOrWhiteSpace."],"exampleFix":"// before\ndb.RenameCollection(oldName, newName); // newName may be null\n\n// after\nif (!string.IsNullOrWhiteSpace(oldName) && !string.IsNullOrWhiteSpace(newName)\n    && !db.CollectionExists(newName.Trim()))\n{\n    db.RenameCollection(oldName.Trim(), newName.Trim());\n}","handlingStrategy":"validation","validationCode":"if (!string.IsNullOrWhiteSpace(newName) && !db.CollectionExists(newName.Trim()))\n{\n    // newName is valid and does not collide; safe to rename\n}","typeGuard":"static bool IsValidCollectionName(string name) => !string.IsNullOrWhiteSpace(name);","tryCatchPattern":null,"preventionTips":["Validate newName is non-empty and not already in use before renaming.","Trim destination names from dynamic sources.","Confirm the rename returned true to detect oldName-missing/newName-collision cases."],"tags":["collection","argumentnull","validation","renamecollection"],"backgroundTag":null,"analyzedSha":"f906a5f850678719e39a39a006cb66dcae563cfa","analyzedAt":"2026-08-13T21:56:30.148Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}