Below is the list of changes that have just been committed into a local
6.0 repository of . When does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2008-01-28 16:02:04-05:00, jas@rowvwade. +6 -0
Switch form Record::getPriorVersion to Record::getGCPriorVersion
to respect "state == recEndChain" for garbage collection.
storage/falcon/Index.cpp@stripped, 2008-01-28 16:01:54-05:00, jas@rowvwade. +1 -1
Switch form Record::getPriorVersion to Record::getGCPriorVersion
to respect "state == recEndChain" for garbage collection.
storage/falcon/Record.cpp@stripped, 2008-01-28 16:01:54-05:00, jas@rowvwade. +5 -0
Add Record::getGCPriorVersion
storage/falcon/Record.h@stripped, 2008-01-28 16:01:55-05:00, jas@rowvwade. +1 -4
Add Record::getGCPriorVersion
storage/falcon/RecordVersion.cpp@stripped, 2008-01-28 16:01:55-05:00, jas@rowvwade. +5 -0
Add Record::getGCPriorVersion
storage/falcon/RecordVersion.h@stripped, 2008-01-28 16:01:55-05:00, jas@rowvwade. +2 -2
Add Record::getGCPriorVersion
storage/falcon/Table.cpp@stripped, 2008-01-28 16:01:56-05:00, jas@rowvwade. +3 -20
Switch form Record::getPriorVersion to Record::getGCPriorVersion
to respect "state == recEndChain" for garbage collection.
diff -Nrup a/storage/falcon/Index.cpp b/storage/falcon/Index.cpp
--- a/storage/falcon/Index.cpp 2007-12-04 10:56:41 -05:00
+++ b/storage/falcon/Index.cpp 2008-01-28 16:01:54 -05:00
@@ -567,7 +567,7 @@ void Index::garbageCollect(Record * leav
{
int n = 0;
- for (Record *record = leaving; record && record != staying; record =
record->getPriorVersion(), ++n)
+ for (Record *record = leaving; record && record != staying; record =
record->getGCPriorVersion(), ++n)
if (record->hasRecord() && record->recordNumber >= 0)
{
IndexKey key(this);
diff -Nrup a/storage/falcon/Record.cpp b/storage/falcon/Record.cpp
--- a/storage/falcon/Record.cpp 2007-11-27 13:08:19 -05:00
+++ b/storage/falcon/Record.cpp 2008-01-28 16:01:54 -05:00
@@ -957,3 +957,8 @@ char* Record::allocRecordData(int length
return NULL;
}
+
+Record* Record::getGCPriorVersion(void)
+{
+ return NULL;
+}
diff -Nrup a/storage/falcon/Record.h b/storage/falcon/Record.h
--- a/storage/falcon/Record.h 2008-01-28 15:40:23 -05:00
+++ b/storage/falcon/Record.h 2008-01-28 16:01:55 -05:00
@@ -80,11 +80,11 @@ public:
virtual Record* releaseNonRecursive(void);
virtual void setPriorVersion(Record* record);
virtual Record* getPriorVersion();
+ virtual Record* getGCPriorVersion(void);
virtual void print(void);
virtual int thaw();
virtual const char* getEncodedRecord();
virtual int setRecordData(const UCHAR *dataIn, int dataLength);
- //virtual char* getRecordData();
const UCHAR* getEncoding (int index);
int setEncodedRecord(Stream *stream, bool interlocked);
@@ -105,9 +105,6 @@ public:
void validateData(void);
char* allocRecordData(int length);
- //void setAgeGroup();
- //void unsetAgeGroup(void);
-
Record (Table *table, Format *recordFormat);
Record(Table *table, int32 recordNumber, Stream *stream);
diff -Nrup a/storage/falcon/RecordVersion.cpp b/storage/falcon/RecordVersion.cpp
--- a/storage/falcon/RecordVersion.cpp 2008-01-28 15:40:24 -05:00
+++ b/storage/falcon/RecordVersion.cpp 2008-01-28 16:01:55 -05:00
@@ -210,6 +210,11 @@ Record* RecordVersion::getPriorVersion()
return priorVersion;
}
+Record* RecordVersion::getGCPriorVersion(void)
+{
+ return (state == recEndChain) ? NULL : priorVersion;
+}
+
void RecordVersion::setSuperceded(bool flag)
{
superceded = flag;
diff -Nrup a/storage/falcon/RecordVersion.h b/storage/falcon/RecordVersion.h
--- a/storage/falcon/RecordVersion.h 2007-12-13 17:52:23 -05:00
+++ b/storage/falcon/RecordVersion.h 2008-01-28 16:01:55 -05:00
@@ -39,6 +39,7 @@ public:
virtual int getSavePointId();
virtual void setSuperceded (bool flag);
virtual Record* getPriorVersion();
+ virtual Record* getGCPriorVersion(void);
virtual bool scavenge(RecordScavenge *recordScavenge);
virtual void scavenge(TransId targetTransactionId, int oldestActiveSavePoint);
virtual bool isVersion();
@@ -49,7 +50,6 @@ public:
virtual void setVirtualOffset(uint64 offset);
virtual uint64 getVirtualOffset();
virtual int thaw();
- //virtual char* getRecordData();
virtual void print(void);
void commit();
@@ -58,7 +58,7 @@ protected:
virtual ~RecordVersion();
public:
- uint64 virtualOffset; // byte offset into serial log window
+ uint64 virtualOffset; // byte offset into serial log window
Transaction *transaction;
Record *priorVersion;
RecordVersion *nextInTrans;
diff -Nrup a/storage/falcon/Table.cpp b/storage/falcon/Table.cpp
--- a/storage/falcon/Table.cpp 2008-01-28 15:40:24 -05:00
+++ b/storage/falcon/Table.cpp 2008-01-28 16:01:56 -05:00
@@ -1937,29 +1937,12 @@ void Table::garbageCollect(Record * leav
FOR_FIELDS(field, this)
if (field->type == Asciiblob || field->type == Binaryblob)
- /***
- for (Record *next, *record = leaving; record && record != staying; record =
next)
- {
- next = record->getPriorVersion();
-
- if (record->hasRecord())
- {
- Value value;
- record->getValue(field->id, &value);
-
- if ((value.getType() == BlobPtr || value.getType() == ClobPtr) &&
- !duplicateBlob(&value, field->id, next) &&
- !duplicateBlob(&value, field->id, staying))
- expungeBlob(&value);
- }
- }
- ***/
{
Bitmap blobs;
Record *record;
Value value;
- for (record = leaving; record && record != staying; record =
record->getPriorVersion())
+ for (record = leaving; record && record != staying; record =
record->getGCPriorVersion())
if (record->hasRecord())
{
record->getRawValue(field->id, &value);
@@ -2155,7 +2138,7 @@ InversionFilter* Table::getFilters(Field
{
InversionFilter *inversionFilter = NULL;
- for (Record *record = records; record && record != limit; record =
record->getPriorVersion())
+ for (Record *record = records; record && record != limit; record =
record->getGCPriorVersion())
if (record->hasRecord())
{
Value value;
@@ -2163,7 +2146,7 @@ InversionFilter* Table::getFilters(Field
if (!value.isNull())
{
- Filter *filter = NEW Filter (tableId, field->id, record->recordNumber,
&value);
+ Filter *filter = NEW Filter(tableId, field->id, record->recordNumber,
&value);
if (inversionFilter)
inversionFilter = NEW FilterTree(inversionFilter, filter);
| Thread |
|---|
| • bk commit into 6.0 tree (jas:1.2791) | U-ROWVWADEjas | 28 Jan |