mco_translog_query_info
此函数读取指定的日志文件以检查它与当前数据库的兼容性并枚举其标签。
有关概述,请参阅事务日志记录应用页面。
原型
MCO_RET mco_translog_query_info ( mco_db_h db,
char const *file_path,
mco_TL_labels_proc labels_proc,
void * user_data,
mco_TL_log_info_h info )
参数
分贝 | 数据库连接句柄 |
file_path | 日志文件的路径和文件名或磁盘分区。 |
labels_proc | 用户定义的回调函数,用于枚举日志文件中的标签。(注意:如果不使用,则可能为 NULL)。 |
user_data | 指向将传递给 call-back function 的用户指定数据的指针。labels_proc |
信息 | 指向定义为以下结构体的指针: |
指向定义为以下结构体的指针:
typedef struct mco_TL_log_info_
{
mco_trans_counter_t start_trans_counter;
mco_trans_counter_t stop_trans_counter;
mco_trans_counter_t stored_transactions;
uint2 disk_page_size;
uint2 page_size;
mco_size_t log_size;
int labels_count;
mco_bool crc;
mco_bool aligned;
mco_bool dictionary_compat;
mco_bool transaction_apply_compat;
mco_bool transaction_append_compat;
mco_bool not_corrupted;
mco_bool iteratable;
} mco_TL_log_info_t,*mco_TL_log_info_h;
注意:如果不使用,则可能为 NULL(即仅用于枚举标签)。(结构元素解释如下。
描述
此函数读取指定的日志文件以检查它与当前数据库的兼容性并枚举其标签。
返回
MCO_S_OK | TL 运行时已成功初始化。 |
---|---|
MCO_E_TL_LOG_NOT_OPENED | 无法打开日志文件。 |
MCO_E_TL_IO_ERROR | 磁盘 IO 错误。 |
MCO_E_VERS_MISMATCH | 日志文件与运行时设置或数据库版本不兼容。 |
MCO_E_TL_INVFORMAT | 日志文件已损坏。 |
MCO_S_TL_INVDATA | 日志文件未完全读取,但找到了一些事务,或者未找到文件结束。在后一种情况下,将是 ,info.not_corrupted 将是 和 将是 。info.transaction_apply_compat``MCO_YES``MCO_NO``info.transaction_append_compat``MCO_NO |
structure 的结构元素定义如下:mco_TL_log_info
start_trans_counter | 启动日志文件时事务计数器的值。 |
---|---|
last_trans_counter | 日志文件完成时事务计数器的值。 |
stored_transactions | 日志文件中存储的事务计数。 |
disk_page_size | 单个磁盘页面的大小。 |
page_size | 内存中数据库页面的大小。 |
log_size | 日志文件的总大小(以字节为单位)。 |
labels_count | 日志文件中存储的标签计数。 |
CRC | MCO_YES 如果日志是使用 flag 创建的;否则。MCO_TRANSLOG_CRC``MCO_NO |
一致 | MCO_YES 如果日志是使用 flag 创建的;否则。MCO_TRANSLOG_ALIGNED``MCO_NO |
dictionary_compat | MCO_YES 日志文件是否与参数 “db” 指定的数据库兼容;否则。MCO_NO |
transaction_apply_compat | MCO_YES 如果日志文件兼容应用于参数 “db” 指定的数据库(按事务编号);否则。MCO_NO |
transaction_append_compat | MCO_YES 如果日志文件兼容追加到由参数 “db” 指定的数据库(按事务编号);否则。MCO_NO |
not_corrupted | MCO_YES 如果自上一个保存点以来没有丢失任何数据。 |
可迭代 | MCO_YES 如果日志文件是使用 flag.MCO_TRANSLOG_ITERABLE |
用户定义的回调过程必须具有以下原型:labels_proc
typedef void(*mco_TL_labels_proc)(const char *label, int label_id, void *data);
其中 是标签文本,是与此标签关联的整数值(在调用函数时由 TL 运行时生成),data 是指向可能在标签过程实现中使用的特定于应用程序的数据的指针。label``label_id``mco_translog_label()