当前位置: 首页>>代码示例>>C++>>正文


C++ ExtentMap::deleteOID方法代码示例

本文整理汇总了C++中ExtentMap::deleteOID方法的典型用法代码示例。如果您正苦于以下问题:C++ ExtentMap::deleteOID方法的具体用法?C++ ExtentMap::deleteOID怎么用?C++ ExtentMap::deleteOID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ExtentMap的用法示例。


在下文中一共展示了ExtentMap::deleteOID方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: extentMap_freelist

    void extentMap_freelist()
    {
        ExtentMap em;
        int i, allocdSize, iterations = 1400;  // (EM_INITIAL_SIZE + 4*EM_INCREMENT)
        vector<LBID_t> lbids;
        const int extentSize = em.getExtentSize();

        for (i = 0; i < iterations; i++)
        {
            em.createExtent(extentSize, i, lbids, allocdSize);
            em.confirmChanges();
            CPPUNIT_ASSERT(lbids.back() == static_cast<LBID_t>(i * extentSize));
        }

        em.checkConsistency();

        //frag the lbid space to blow up the free list
        for (i = 0; i < iterations; i += 2)
        {
            em.deleteOID(i);
            em.confirmChanges();
        }

        em.checkConsistency();

        //fill in the holes
        for (i = 0; i < iterations; i += 2)
        {
            em.createExtent(extentSize, i, lbids, allocdSize);
            em.confirmChanges();
        }

        for (i = 0; i < iterations; i += 2)
        {
            em.deleteOID(i);
            em.confirmChanges();
        }

        for (i = 1; i < iterations; i += 2)
        {
            em.deleteOID(i);
            em.confirmChanges();
        }

        em.checkConsistency();
    }
开发者ID:mariadb-corporation,项目名称:mariadb-columnstore-engine,代码行数:46,代码来源:tdriver-load.cpp

示例2: catch

    void extentMap_good_1()
    {
        ExtentMap em;
        int i, err, oid, iterations = 1300;  // (EM_INITIAL_SIZE + 3*EM_INCREMENT)
        int caughtException = 0, allocdSize;
        uint32_t fbo, hwm;
        BRM::HWM_t hwm2;
        BRM::VER_t txnID;
        vector<LBID_t> lbids;
        const uint32_t extentSize = em.getExtentSize();

        em.load(string("EMImage"));
        em.checkConsistency();

        for (i = 0; i < iterations; i++)
        {
            err = em.lookup(static_cast<LBID_t>(i * extentSize), oid, fbo);
            CPPUNIT_ASSERT(err == 0);
            CPPUNIT_ASSERT(oid == i);
            CPPUNIT_ASSERT(fbo == 0);

            if (i != 0)
            {
                err = em.lookup(static_cast<LBID_t>(i * extentSize - 1), oid, fbo);
                CPPUNIT_ASSERT(err == 0);
                CPPUNIT_ASSERT(oid == i - 1);
                CPPUNIT_ASSERT(fbo == extentSize - 1);
            }

            if (i != iterations - 1)
            {
                err = em.lookup(static_cast<LBID_t>(i * extentSize + 1), oid, fbo);
                CPPUNIT_ASSERT(err == 0);
                CPPUNIT_ASSERT(oid == i);
                CPPUNIT_ASSERT(fbo == 1);
            }
        }

        em.checkConsistency();

        err = em.lookup(static_cast<LBID_t>(i * extentSize), oid, fbo);
        CPPUNIT_ASSERT(err == -1);

        for (i = 0; i < iterations; i++)
        {
            err = em.getBulkInsertVars(static_cast<LBID_t>(i * extentSize),
                                       hwm2, txnID);
            CPPUNIT_ASSERT(err == 0);
            CPPUNIT_ASSERT(hwm2 == 0);
            CPPUNIT_ASSERT(txnID == 0);
            err = em.setBulkInsertVars(static_cast<LBID_t>(i * extentSize),
                                       i, i + 1);
            em.confirmChanges();
            CPPUNIT_ASSERT(err == 0);
            err = em.getBulkInsertVars(static_cast<LBID_t>(i * extentSize),
                                       hwm2, txnID);
            CPPUNIT_ASSERT(err == 0);
            CPPUNIT_ASSERT(hwm2 == static_cast<LBID_t>(i));
            CPPUNIT_ASSERT(txnID == static_cast<VER_t>(i + 1));

            hwm = em.getHWM(i);
            CPPUNIT_ASSERT(hwm == 0);
            em.setHWM(i, (i > (extentSize - 1) ? extentSize - 1 : i));
            em.confirmChanges();
            hwm = em.getHWM(i);
            CPPUNIT_ASSERT(hwm == static_cast<uint32_t>(i > extentSize - 1 ? extentSize - 1 : i));
        }

        em.checkConsistency();

#ifdef BRM_DEBUG
        caughtException = 0;

        try
        {
            em.setHWM(i, hwm);
        }
        catch (std::invalid_argument e)
        {
            caughtException = 1;
        }

        em.undoChanges();
        CPPUNIT_ASSERT(caughtException == 1);
#endif

        for (i = 0; i < iterations; i++)
        {
            em.deleteOID(i);
            em.confirmChanges();
        }

#ifdef BRM_DEBUG
        caughtException = 0;

        try
        {
            em.deleteOID(i);
        }
        catch (std::invalid_argument& e)
//.........这里部分代码省略.........
开发者ID:mariadb-corporation,项目名称:mariadb-columnstore-engine,代码行数:101,代码来源:tdriver-load.cpp

示例3: EMRunner


//.........这里部分代码省略.........
					newEm = new EMEntries();
					if (i != entries)
						newEm->size = em->getExtentSize();
					else
						newEm->size = size % em->getExtentSize();
					newEm->OID = oid;
					newEm->FBO = lastExtent + (i*em->getExtentSize());
					newEm->LBIDstart = lbids[i];
					newEm->HWM = tmpHWM;
				
					newEm->next = head;
					head = newEm;
					listSize++;
				}
#ifdef BRM_VERBOSE
				cerr << "created another extent for OID " << newEm->OID << endl;
#endif
				em->checkConsistency();
				break;
			}
			case 2:  			//delete an OID
			{
				if (listSize == 0)
					break;
				
				struct EMEntries *tmp, *prev;
				int fileRand = rand_r(&randstate) % listSize;
				int i, oid;
				
				for (i = 0, tmp = head; i < fileRand; i++)
					tmp = tmp->next;
				oid = tmp->OID;
				
				em->deleteOID(oid);
				em->confirmChanges();				

				for (tmp = head; tmp != NULL;) {
					if (tmp->OID == oid) {
						if (tmp == head) {
							head = head->next;
							delete tmp;
							tmp = head;
						}
						else {
							prev->next = tmp->next;
							delete tmp;
							tmp = prev->next;
						}
						listSize--;
					}
					else {
						prev = tmp;
						tmp = tmp->next;
					}
				}
#ifdef BRM_VERBOSE
				cerr << "deleted OID " << oid << endl;
#endif
				em->checkConsistency();
				break;
			}
			case 3:   //lookup by LBID
			{
				if (listSize == 0)
					break;
				
开发者ID:demonlife,项目名称:infinidb,代码行数:66,代码来源:tdriver-dbrm2.cpp


注:本文中的ExtentMap::deleteOID方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。