10bet网址
MySQL NDB集群API Developer Guide
下载本手册

2.3.5事件类

本节提供有关的信息事件班级。

活动类概述

父类

ndbdictionary.

儿童课程

没有任何

描述

此类表示NDB集群中的数据库事件。

方法

下表列出了公共方法事件每种方法的类和目的或使用:

表2.13事件类方法和描述

名称 描述
事件() 类建设者
〜赛事() 析构函数
addeventcolumn() 添加应检测到哪些事件的列
addeventcolumns() 在应检测到哪些事件上添加多列
addtablevent() 添加应检测的事件类型
GetDureability() 获取事件的持久性
geteventcolumn() 获取定义事件的列
getname() 获取事件的名称
getnoofeventcolumns() 获取定义事件的列数
getObjectId() 获取事件的对象ID
getObjectStatus() 获取事件的对象状态
getObjectVersion() 获取活动的对象版本
getReport() 获取活动的报告选项
gettable() 得到了桌子定义事件的对象
gettablevent() 检查是否要检测到事件
gettablename() 获取定义事件的表的名称
mergeevents() 设置事件的合并标志
setdurity() 设置事件的耐用性
setname() 设置事件的名称
setReport() 该活动的报告选项
保留() 设置桌子定义事件的对象

改进的事件API(NDB 7.4.3及更高版本)。NDB 7.4.3引入了一个划时代驱动的事件API,它取代了早期基于gci的模型。新版本的API还简化了错误检测和处理。这些变化是通过在NDB API中实现一些新的方法来实现的NDB.ndbeptoperation.,弃用这两个类的其他几个方法,并向其中添加新的类型值表格

一些新方法直接替换或代替弃用方法,但并非所有已弃用的方法映射到新的方法,其中一些是完全新的。旧(已弃用)方法显示在下表的第一列中,以及第二列中的新方法;对应于新方法的旧方法显示在同一行中。


使用新API进行错误处理是通过检查返回的值来完成的geteventtype2(),并不再使用这些方法处理haserror()clearError (),现在已弃用并在未来的NDB集群释放中删除。为了支持这种变化,可能的范围表格在此列出的那些已经扩展了类型的类型:

  • te_empty.:空的时纪

  • te_inconsistent.:不一致的时代;数据丢失或溢出

  • te_out_of_memory.:数据不一致;事件缓冲区内存或溢出

这些变化的结果是,在NDB 7.4.3及更高版本中,您可以在检查表事件的类型时检查错误,如此所示:

NDBDictionary :: Event :: StableEvent * Error_type = 0;ndbeventeroperation * pop = nextevent2();if(pop-> iSerrorepoch(errer_type){switch(error_type){case te_inconsistent://处理错误/不一致的epoch ...中断;案例te_out_of_memory://处理错误/不一致的数据...中断; // ......}}

有关更多信息,请参阅详细说明NDB.ndbeptoperation.前面显示的方法,以及事件::表格

类型

这些是公共类型的事件班级:

表2.15事件类类型和描述

名称 描述
表雷德() 表示表事件的类型
EventDureability() 指定事件的范围,可访问性和生命周期
EventReport() 指定表事件的Reporting选项

事件:: AddeventColumn()

描述

此方法用于添加应检测到哪个事件的列。列可以通过其ID或其名称来表示。

你必须邀请字典:: CreateEvent()在检测到任何错误之前。看字典:: CreateEvent()

如果您通过名称知道多个列,则可以使用一次性在所有列中启用事件检测addeventcolumns()。看event :: AddeventColumns()

签收

此方法可以以以下任一方式调用:

  • 使用其列ID识别事件:

    void addEventColumn(无符号艾特里
  • 通过名称标识列:

    void addeventcolumn(const char *columnname.
参数

此方法采用单个参数,这可能是以下之一:

  • 列ID(艾特里),这应该是大于或等于的整数0.,少于返回的值getnoofeventcolumns()

  • 专栏名称(作为常量字符指针)。

返回值

没有任何

event :: AddeventColumns()

描述

此方法用于同时在多列上启用事件检测。您必须使用列的名称。

和人一样addeventcolumn(),你必须调用字典:: CreateEvent()在检测到任何错误之前。看字典:: CreateEvent()

签名
void addeventcolumns(intN,const char **列名称
参数

此方法需要此处列出的两个参数:

  • 列数N(整数)。

  • 列的名称列名称- 这必须作为指向字符指针的指针传递。

返回值

没有任何

事件:: AddtableEvent()

描述

此方法用于添加应检测的事件类型。

签名
voidAdtableEvent(Const StableVentte.
参数

这种方法需要一个表格价值。

返回值

没有任何

事件构造函数

描述

事件构造函数创建具有给定名称的新实例,并可选地与表关联。

您应该记住,NDB API不跟踪分配的事件对象,这意味着用户必须明确删除事件因此在不再使用后创建。

签收

可以以两种方式中的任一种调用此方法,其中首先是名称,如下所示:

活动(Const Char *名称

或者,你也可以使用事件名和一个关联表,如下所示:

活动(Const Char *名称,const ndbdictionary ::表&桌子
参数

在最小值a名称(作为事件的常量字符指针)是必需的。可选地,事件也可以与表相关联;当存在时,这个论点是对a的引用桌子对象(参见第2.3.27节“桌面”)。

返回值

一个新的实例事件

析构函数。该类的析构函数作为虚方法提供,该方法不接受参数,其返回类型为空白

活动:: EventDureability.

介绍信息EventDurability类定义的类型事件班级。

描述

此类型的值用于描述事件的寿命或持久性以及其范围。

枚举值

在下表中显示可能的值以及描述:

表2.16事件:: EventDurability数据类型值和描述

名称 描述
ed_undefined. 该事件未定义或不受支持的类型。
ed_session. 此事件仅在当前会话的持续时间内持续存在,并且仅适用于当前应用程序。在应用程序断开连接或遵循群集重新启动后删除它。
重要的

价值ed_session.保留用于将来使用,任何NDB群集发布尚未支持。

ed_temporary 任何应用程序都可以使用该事件,但在群集重新启动后删除它。
重要的

价值ed_temporary保留用于将来使用,任何NDB群集发布尚未支持。

ed_permanent. 任何应用程序都可以使用该事件,并且它仍然存在,直到应用程序删除 - 即使在群集之后。重新开始
重要的

价值ed_permanent.保留用于将来使用,任何NDB群集发布尚未支持。


事件:: EventReport.

介绍信息EventReport.类定义的类型事件班级。

描述

此类型的值用于为表事件指定报告选项。

枚举值

在下表中显示可能的值以及描述:

表2.17事件:: EventReport类型值和描述

名称 描述
er_updated. 报告更新事件
er_all. 报告所有事件,除了未导致内联部分的任何更新斑点
er_subscribe. 报告订阅活动
er_ddl. 报告DDL事件(见event :: setReport(), 想要查询更多的信息)

赛事:: getdurability()

描述

此方法获取事件的生命周期和范围(即它EventDurability)。

签名
get持久性(void) const
参数

没有任何

返回值

一个EventDurability价值。

event :: geteventcolumn()

描述

该方法用于从定义事件的那些中获取特定列。

签名
const列* geteventcolumn(无符号)Const.
参数

数字 ()柱子,如使用getnoodcolumns()(看event :: getnoodeventcolumns())。

返回值

指向的指针对应

event :: getName()

描述

此方法获取事件的名称。

签名
const char * getname(void)const
参数

没有任何

返回值

事件的名称,作为字符指针。

event :: getnoodeventcolumns()

描述

此方法获取定义事件的列数。

签名
int getNoOfEventColumns (void) const
参数

没有任何

返回值

列的数量(作为整数),或-1在错误的情况下。

事件::getObjectStatus ()

描述

此方法获取事件的对象状态。

签名
gettobjectstatus (void) const对象
参数

没有任何

返回值

事件的对象状态。对于可能的值,请参阅对象:状态

event :: getObjectVersion()

描述

此方法获取事件的对象版本(参见NDB架构对象版本)。

签名
Virtual Int GetObjectVersion(void)const
参数

没有任何

返回值

事件的对象版本,作为整数。

事件::getObjectId ()

描述

此方法检索事件的对象ID。

签名
Virtual Int GetObjectID(void)const
参数

没有任何

返回值

事件的对象ID作为整数。

event :: getReport()

描述

此方法用于获取此事件的重新开始的报告选项。

签名
EventReport getReport(void)const
参数

没有任何

返回值

其中一个报告选项之一事件:: EventReport.

事件:: gettable()

描述

此方法用于找到事件关联的表。它返回对应的引用桌子对象。您还可以直接使用gettablename()

签名
const ndbdictionary ::表* gettable(void)const
参数

没有任何

返回值

事件关联的表 - 如果有一个作为指向a的指针桌子目的;否则,此方法返回空值。(见第2.3.27节“桌面”。)

活动:: gettableEvent()

描述

此方法用于检查是否将检测到给定的表事件。

签名
BOOL GETTABLEEVENT(CONTSBORTEVENTte.)Const.
参数

此方法采用单个参数,表事件的类型 - 即,a表格价值。

返回值

此方法返回真的如果事件表格类型te.将被检测到。否则,返回值是错误的

event :: gettableName()

描述

此方法获取具有事件关联的表的名称,并且可以作为方便的替代品gettable()。(见事件:: gettable()。)

签名
const char * gettablename(void)const
参数

没有任何

返回值

与此事件关联的表的名称,作为字符指针。

event :: mergeevents()

描述

此方法用于设置合并活动标志,这是错误的默认。将它设置为真的意味着事件被合并如下:

  • 对于给定的ndbeptoperation.与此事件相关联时,同一个全局检查点索引(GCI)中相同主键上的事件被合并为单个事件。

  • 为每个Blob属性创建Blob表事件,并且将Blob事件作为主表事件的一部分进行处理。

  • Blob Post / Pre数据来自Blob零件事件可以通过ndbblob.方法作为单个值。

    此标志不是继承的ndbeptoperation.,并且必须设置ndbeptoperation.明确。

签名
空白弹词(BOOL旗帜
参数

一个布尔值旗帜价值。

返回值

没有任何

event :: setdurity()

描述

该方法设置了事件的耐用性 - 即其寿命和范围。

签名
空白setDurability (EventDurability埃德
参数

这种方法需要一个单一的方法EventDurability值作为参数。

返回值

没有任何

event :: setReport()

描述

此方法用于设置事件的报告选项。可以在中找到可能的选项值事件:: EventReport.

报告DDL事件

你必须打电话setReport()使用EventReport.价值er_ddl.(在相同的NDB群集版本中添加)。

例如,要启用DDL事件报告事件对象命名神秘,你必须调用这个方法如下所示:

myevent.setReport(ndbdictionary :: event :: er_ddl);
签名
void setReport(EventReport
参数

一个EventReport.选项值。

返回值

没有任何

event :: setName()

描述

此方法用于设置事件的名称。在当前应用程序可见的所有事件中,该名称必须是唯一的(参见赛事:: getdurability())。

首次创建时,您还可以设置活动的名称。看事件构造函数

签名
void setname(const char *名称
参数

名称将事件(作为常量字符指针)给出。

返回值

没有任何

活动:: Setables()

描述

此方法定义要检测到事件的表。

默认情况下,事件检测在表中的所有列上进行。用addeventcolumn()覆盖这种行为。有关详细信息,请参阅事件:: AddeventColumn()

签名
空白可持续(Const Ndbdictionary ::表&桌子

NDB 7.3.3及更高版本的NDB群集释放支持使用此方法使用指针,如下所示:

空白可持续(Const Ndbdictionary ::表*;桌子

如此使用,此版本保留()如果表指针是返回-1空值。(错误# 16329082)

参数

此方法需要单个参数,参考表(参见第2.3.27节“桌面”)要在哪些事件上检测到。NDB 7.3.3及更高版本:可以使用表的引用或指针。

返回值

没有任何NDB 7.3.3及更高版本:-1,如果使用空表指针。

事件::表格

本节介绍表格类定义的类型事件班级。

描述

表格用于对可以与NDB API中的表相关联的事件类型进行分类。

枚举值

在下表中显示可能的值以及描述:

表2.18事件:: StableAvent类型值和描述

名称 描述
Te_insert. 在表上插入事件
te_delete. 在表上删除事件
te_update. 更新表上的事件
te_drop. 删除桌子时发生
Te_alter. 更改表定义时发生
te_create. 创建表时发生
te_gcp_complete. 发生在全球检查站完成
te_cluster_failure. 发生在集群故障上
TE_STOP 发生事件操作停止时发生
te_node_failure. 群集节点发生故障时发生
te_subscribe. 群集节点订阅事件时发生
te_unsubscribe. 群集节点从事件中取消订阅时发生
te_empty. 从数据节点接收的空的epoch
te_inconsistent. 数据节点缺少数据或缓冲区溢出
te_out_of_memory. 在事件缓冲区中溢出
te_all. 在表上发生任何事件时发生(在收到特定事件时无关)

te_empty.te_inconsistent., 和te_out_of_memory.在NDB 7.4.3中加入。