remove indirect page implementation

This commit is contained in:
Sears Russell 2009-07-07 20:03:52 +00:00
parent 2593de7a2c
commit 397b0fa245
6 changed files with 10 additions and 35 deletions

View file

@ -18,7 +18,7 @@ ADD_LIBRARY(stasis crc32.c redblack.c lhtable.c rw.c doubleLinkedList.c
logger/reorderingHandle.c logger/reorderingHandle.c
logger/groupForce.c logger/groupForce.c
page/fixed.c compensations.c page/fixed.c compensations.c
operations/pageOperations.c page/indirect.c operations/pageOperations.c
operations/decrement.c operations/increment.c operations/decrement.c operations/increment.c
operations/prepare.c operations/set.c operations/prepare.c operations/set.c
operations/alloc.c operations/noop.c operations/alloc.c operations/noop.c

View file

@ -14,7 +14,7 @@ libstasis_la_SOURCES=crc32.c redblack.c lhtable.c rw.c doubleLinkedList.c common
logger/reorderingHandle.c \ logger/reorderingHandle.c \
logger/groupForce.c \ logger/groupForce.c \
page/raw.c page/slotted.c page/lsnFree.c page/fixed.c compensations.c \ page/raw.c page/slotted.c page/lsnFree.c page/fixed.c compensations.c \
operations/pageOperations.c page/indirect.c operations/decrement.c \ operations/pageOperations.c operations/decrement.c \
operations/increment.c operations/prepare.c operations/set.c \ operations/increment.c operations/prepare.c operations/set.c \
operations/alloc.c operations/noop.c \ operations/alloc.c operations/noop.c \
operations/arrayList.c hash.c \ operations/arrayList.c hash.c \

View file

@ -67,9 +67,6 @@ terms specified in this license.
*/ */
/* _XOPEN_SOURCE is needed for posix_memalign */
#define _XOPEN_SOURCE 600
#include <stdlib.h> #include <stdlib.h>
#include <config.h> #include <config.h>
@ -87,7 +84,6 @@ terms specified in this license.
#include <stasis/compensations.h> #include <stasis/compensations.h>
#include <stasis/page/slotted.h> #include <stasis/page/slotted.h>
#include <stasis/page/fixed.h> #include <stasis/page/fixed.h>
#include <stasis/page/indirect.h>
#include <stasis/operations/arrayList.h> #include <stasis/operations/arrayList.h>
#include <stasis/bufferPool.h> #include <stasis/bufferPool.h>
#include <stasis/truncation.h> #include <stasis/truncation.h>
@ -128,7 +124,6 @@ void stasis_page_init(stasis_dirty_page_table_t * dpt) {
stasis_page_impl_register(boundaryTagImpl()); stasis_page_impl_register(boundaryTagImpl());
stasis_page_impl_register(arrayListImpl()); stasis_page_impl_register(arrayListImpl());
stasis_page_impl_register(stasis_page_blob_impl()); stasis_page_impl_register(stasis_page_blob_impl());
stasis_page_impl_register(indirectImpl());
stasis_page_impl_register(lsmRootImpl()); stasis_page_impl_register(lsmRootImpl());
stasis_page_impl_register(slottedLsnFreeImpl()); stasis_page_impl_register(slottedLsnFreeImpl());
} }
@ -181,9 +176,7 @@ recordid stasis_record_dereference(int xid, Page * p, recordid rid) {
assertlocked(p->rwlatch); assertlocked(p->rwlatch);
int page_type = p->pageType; int page_type = p->pageType;
if(page_type == INDIRECT_PAGE) { if(page_type == ARRAY_LIST_PAGE) {
rid = dereferenceIndirectRID(xid, rid);
} else if(page_type == ARRAY_LIST_PAGE) {
rid = stasis_array_list_dereference_recordid(xid, p, rid.slot); rid = stasis_array_list_dereference_recordid(xid, p, rid.slot);
} }
return rid; return rid;

View file

@ -8,7 +8,6 @@ CREATE_CHECK(check_transactional2)
CREATE_CHECK(check_recovery) CREATE_CHECK(check_recovery)
CREATE_CHECK(check_blobRecovery) CREATE_CHECK(check_blobRecovery)
CREATE_CHECK(check_bufferManager) CREATE_CHECK(check_bufferManager)
CREATE_CHECK(check_indirect)
CREATE_CHECK(check_pageOperations) CREATE_CHECK(check_pageOperations)
CREATE_CHECK(check_linearHash) CREATE_CHECK(check_linearHash)
CREATE_CHECK(check_header) CREATE_CHECK(check_header)

View file

@ -1,9 +1,9 @@
# INCLUDES = @CHECK_CFLAGS@ # INCLUDES = @CHECK_CFLAGS@
## Had to disable check_lht because lht needs to be rewritten. ## Had to disable check_lht because lht needs to be rewritten.
TESTS = check_lhtable check_logEntry check_logWriter check_page check_operations check_transactional2 check_recovery check_blobRecovery check_bufferManager check_indirect check_pageOperations check_linearHash check_header check_linkedListNTA check_linearHashNTA check_pageOrientedList check_lockManager check_compensations check_errorHandling check_ringbuffer check_iterator check_multiplexer check_bTree check_regions check_allocationPolicy check_io check_rangeTracker check_replacementPolicy check_lsmTree check_groupBy TESTS = check_lhtable check_logEntry check_logWriter check_page check_operations check_transactional2 check_recovery check_blobRecovery check_bufferManager check_pageOperations check_linearHash check_header check_linkedListNTA check_linearHashNTA check_pageOrientedList check_lockManager check_compensations check_errorHandling check_ringbuffer check_iterator check_multiplexer check_bTree check_regions check_allocationPolicy check_io check_rangeTracker check_replacementPolicy check_lsmTree check_groupBy
noinst_PROGRAMS = $(TESTS) noinst_PROGRAMS = $(TESTS)
LDADD = $(top_builddir)/src/stasis/libstasis.la LDADD = $(top_builddir)/src/stasis/libstasis.la
CLEANFILES = check_lht.log check_logEntry.log storefile.txt logfile.txt blob0_file.txt blob1_file.txt check_blobRecovery.log check_logWriter.log check_operations.log check_recovery.log check_transactional2.log check_page.log check_bufferManager.log check_indirect.log check_bufferMananger.log check_lladdhash.log check_pageOperations.log check_linearhash.log check_linkedListNTA.log check_linearHashNTA.log check_pageOrientedListNTA.log check_lockManager.log check_compensations.log check_errorhandling.log check_header.log check_iterator.log check_linearHash.log check_ringbuffer.log check_bTree.log check_groupBy.log CLEANFILES = check_lht.log check_logEntry.log storefile.txt logfile.txt blob0_file.txt blob1_file.txt check_blobRecovery.log check_logWriter.log check_operations.log check_recovery.log check_transactional2.log check_page.log check_bufferManager.log check_bufferMananger.log check_lladdhash.log check_pageOperations.log check_linearhash.log check_linkedListNTA.log check_linearHashNTA.log check_pageOrientedListNTA.log check_lockManager.log check_compensations.log check_errorhandling.log check_header.log check_iterator.log check_linearHash.log check_ringbuffer.log check_bTree.log check_groupBy.log
AM_CFLAGS=${GLOBAL_CFLAGS} AM_CFLAGS=${GLOBAL_CFLAGS}

View file

@ -1,4 +1,3 @@
/*--- /*---
This software is copyrighted by the Regents of the University of This software is copyrighted by the Regents of the University of
California, and other parties. The following terms apply to all files California, and other parties. The following terms apply to all files
@ -48,7 +47,6 @@ terms specified in this license.
#include "../check_includes.h" #include "../check_includes.h"
#include <stasis/page.h> #include <stasis/page.h>
#include <stasis/page/indirect.h>
#include <stasis/page/slotted.h> #include <stasis/page/slotted.h>
#include <stasis/blobManager.h> #include <stasis/blobManager.h>
#include <stasis/bufferManager.h> #include <stasis/bufferManager.h>
@ -491,6 +489,7 @@ START_TEST(fixedPageThreadTest) {
pthread_mutex_destroy(&random_mutex); pthread_mutex_destroy(&random_mutex);
} END_TEST } END_TEST
START_TEST(pageCheckSlotTypeTest) { START_TEST(pageCheckSlotTypeTest) {
Tinit(); Tinit();
int xid = Tbegin(); int xid = Tbegin();
@ -512,21 +511,12 @@ START_TEST(pageCheckSlotTypeTest) {
readlock(p->rwlatch, 0); readlock(p->rwlatch, 0);
assert(stasis_record_type_read(xid, p, fixedRoot) == NORMAL_SLOT); assert(stasis_record_type_read(xid, p, fixedRoot) == NORMAL_SLOT);
unlock(p->rwlatch);
releasePage(p);
fixedRoot.slot = 1; fixedRoot.slot = 1;
// Force it to use indirect implementation (we're checking an array list page...)
recordid fixedEntry = dereferenceIndirectRID(xid, fixedRoot);
fixedRoot.slot = 0; assert(TrecordType(xid, fixedRoot) == NORMAL_SLOT);
unlock(p->rwlatch);
releasePage(p);
p = loadPage(-1, fixedEntry.page);
readlock(p->rwlatch, 0);
assert(stasis_record_type_read(xid, p, fixedEntry) == NORMAL_SLOT);
unlock(p->rwlatch);
releasePage(p);
p = loadPage(-1, blob.page); p = loadPage(-1, blob.page);
readlock(p->rwlatch, 0); readlock(p->rwlatch, 0);
@ -572,13 +562,6 @@ START_TEST(pageTrecordTypeTest) {
assert(TrecordType(xid, fixedRoot) == NORMAL_SLOT); assert(TrecordType(xid, fixedRoot) == NORMAL_SLOT);
fixedRoot.slot = 1; fixedRoot.slot = 1;
// This is an array list page, but we want to check the state
// of the internal node.
recordid fixedEntry = dereferenceIndirectRID(xid, fixedRoot);
fixedRoot.slot = 0;
assert(TrecordType(xid, fixedEntry) == NORMAL_SLOT);
int type = TrecordType(xid, blob); int type = TrecordType(xid, blob);
assert(type == BLOB_SLOT); assert(type == BLOB_SLOT);