IDBError MemoryObjectStore::createIndex(MemoryBackingStoreTransaction& transaction, const IDBIndexInfo& info) { LOG(IndexedDB, "MemoryObjectStore::createIndex"); if (!m_writeTransaction || !m_writeTransaction->isVersionChange() || m_writeTransaction != &transaction) return IDBError(IDBExceptionCode::ConstraintError); ASSERT(!m_indexesByIdentifier.contains(info.identifier())); auto index = MemoryIndex::create(info); m_info.addExistingIndex(info); transaction.addNewIndex(*index); registerIndex(WTF::move(index)); return { }; }
IDBError MemoryObjectStore::createIndex(MemoryBackingStoreTransaction& transaction, const IDBIndexInfo& info) { LOG(IndexedDB, "MemoryObjectStore::createIndex"); if (!m_writeTransaction || !m_writeTransaction->isVersionChange() || m_writeTransaction != &transaction) return IDBError(IDBDatabaseException::ConstraintError); ASSERT(!m_indexesByIdentifier.contains(info.identifier())); auto index = MemoryIndex::create(info, *this); // If there was an error populating the new index, then the current records in the object store violate its contraints auto error = populateIndexWithExistingRecords(*index); if (!error.isNull()) return error; m_info.addExistingIndex(info); transaction.addNewIndex(*index); registerIndex(WTFMove(index)); return { }; }