Files
mongo/dist/log_data.py
2013-11-12 17:32:43 +11:00

61 lines
2.0 KiB
Python

# Data for log.py, describes the format of log records
# There are a small number of main log record types.
#
# Some log record types, such as transaction commit, also include a list of
# "log operations" within the same log record. Both log record types and log
# operations are described here.
class LogRecordType:
def __init__(self, name, fields):
self.name = name
self.fields = fields
def macro_name(self):
return 'WT_LOGREC_%s' % self.name.upper()
def prname(self):
return '__logrec_print_' + self.name
rectypes = [
# A database-wide checkpoint.
LogRecordType('checkpoint', [
('WT_LSN', 'ckpt_lsn'), ('uint32', 'nsnapshot'), ('item', 'snapshot')]),
# Common case: a transaction commit
LogRecordType('commit', [('uint64', 'txnid')]),
# Debugging message in the log
LogRecordType('debug', [('string', 'message')]),
# Mark the start / end of a file sync operation (usually when a file is
# closed). These log records aren't required during recovery, but we use
# the allocated LSN to reduce the amount of work recovery has to do, and
# they are useful for debugging recovery.
LogRecordType('file_sync', [('uint32', 'fileid'), ('int', 'start')]),
]
class LogOperationType:
def __init__(self, name, fields):
self.name = name
self.fields = fields
def macro_name(self):
return 'WT_LOGOP_%s' % self.name.upper()
optypes = [
LogOperationType('col_put',
[('uint32', 'fileid'), ('recno', 'recno'), ('item', 'value')]),
LogOperationType('col_remove',
[('uint32', 'fileid'), ('recno', 'recno')]),
LogOperationType('col_truncate',
[('uint32', 'fileid'), ('recno', 'start'), ('recno', 'stop')]),
LogOperationType('row_put',
[('uint32', 'fileid'), ('item', 'key'), ('item', 'value')]),
LogOperationType('row_remove',
[('uint32', 'fileid'), ('item', 'key')]),
LogOperationType('row_truncate',
[('uint32', 'fileid'), ('item', 'start'), ('item', 'stop'),
('uint32', 'mode')]),
]