2.3.3 字典类

本节提供有关 Dictionary该类的信息。

字典类概述

家长班

NdbDictionary

儿童班

List

描述

这用于定义和检索数据对象元数据。它还包括用于创建和删除数据库对象的方法。

方法

下表列出了该类的公共方法以及每个方法的用途或用途:

表 2.11 Dictionary 类方法及说明

姓名 描述
Dictionary() 类构造方法
~Dictionary() 析构方法
beginSchemaTrans() 开始模式事务
createDatafile() 创建数据文件
createEvent() 创建一个事件
createForeignKey() 创建一个外键
createHashMap() 创建哈希映射
createIndex() 创建索引
createLogfileGroup() 创建日志文件组
createRecord() 创建一个Ndbrecord对象
createTable() 创建一个表
createTablespace() 创建表空间
createUndofile() 创建撤消文件
dropDatafile() 删除数据文件
dropEvent() 丢弃一个事件
dropForeignKey() 删除外键
dropIndex() 删除索引
dropLogfileGroup() 删除日志文件组
dropTable() 丢一张桌子
dropTablespace() 删除表空间
dropUndofile() 删除撤消文件
endSchemaTrans() 结束(提交并关闭)模式事务
getDatafile() 获取具有给定名称的数据文件
getDefaultHashMap() 获取表的默认哈希映射
getEvent() 获取具有给定名称的事件
getForeignKey() 获取具有给定名称或引用的外键
getHashMap() 获取给定名称或关联表的哈希映射
getIndex() 获取具有给定名称的索引
getLogfileGroup() 获取具有给定名称的日志文件组
getNdbError() 检索最新的错误
getTable() 获取具有给定名称的表
getTablespace() 获取具有给定名称的表空间
getUndofile() 获取具有给定名称的撤消文件
hasSchemaTrans() 告知模式事务当前是否存在
initDefaultHashMap() 初始化 atble 的默认哈希映射
invalidateTable() 使表对象无效
listObjects() 获取字典中对象的列表
listIndexes() 获取在给定表上定义的索引列表
listEvents() 获取字典中定义的事件列表
prepareHashMap() 创建或检索可以更新的哈希映射
releaseEvent() 删除之前返回的事件 getEvent()
removeCachedTable() 从本地缓存中删除一个表
removeCachedIndex() 从本地缓存中删除索引

MySQL 服务器看不到 使用这些方法创建的表和索引等数据库对象 。这意味着它们不能被 MySQL 客户端访问,也不能被复制。由于这些原因,通常最好避免与他们合作。 Dictionary::create*()

该类Dictionary没有任何直接处理列的方法。您必须 Column为此目的使用类方法——有关详细信息,请参阅第 2.3.1 节“列类”

类型

请参阅第 2.3.10 节,“列表类”第 2.3.4 节,“元素结构”

字典类构造函数

描述

此方法创建 Dictionary该类的一个新实例。

此类的构造函数和析构函数都是受保护的方法,而不是公共方法。

签名
protected Dictionary
    (
      Ndb& ndb
    )
参数

一个Ndb对象。

返回值

一个Dictionary对象。

析构函数

析构函数不接受任何参数并且不返回任何内容:

protected ~Dictionary
    (
      void
    )

字典::beginSchemaTrans()

描述

启动模式事务。如果事务已经处于活动状态,或者内核元数据被锁定,则会发生错误。hasSchemaTrans() 您可以使用该方法 确定模式事务是否已存在 。

每当创建、更改或删除数据对象时,都会发生 元数据操作;这样的操作可以在 NDB 内核中创建额外的子操作。

Ndb对象及其关联的对象Dictionary 一次支持一个模式事务。默认情况下,每个元数据操作都是单独执行的;也就是说,对于每个操作,都会隐式启动模式事务,执行操作(包括任何子操作),然后关闭事务。

也可以显式地开始和结束模式事务,并在其边界内原子地执行一组用户定义的操作。在这种情况下,模式事务中的所有操作作为一个单元要么成功,要么中止并回滚。这是按照此处列出的步骤完成的:

  1. 要开始架构事务,请调用 beginSchemaTrans()

  2. 执行所需的操作(例如 createTable())。

  3. 通过调用结束模式事务 endSchemaTrans

每个操作都被发送到 NDB 内核,内核对其进行解析和保存。解析失败会导致在返回之前回滚到先前的用户操作,此时用户可以继续或中止整个事务。

提交所有操作后, endSchemaTrans()处理并提交它们。如果出现错误,事务将立即中止。

如果用户在调用之前退出 endSchemaTrans(),NDB 内核将中止事务。如果用户在调用 endSchemaTrans()返回之前退出,内核将继续请求,并在集群日志中报告其完成状态。

签名
int beginSchemaTrans
    (
      void
    )
参数

没有

返回值

成功返回 0,错误返回 -1。

字典::创建数据文件()

描述

Datafile给定一个对象 ,此方法创建一个新的数据文件 。

签名
int createDatafile
    (
      const Datafile& dFile
    )
参数

需要一个参数——对实例的引用 Datafile

返回值

0关于成功,-1关于失败。

字典::创建事件()

描述

给定一个 Event对象的引用,创建一个事件。

您应该记住,NDB API 不跟踪分配的事件对象,这意味着用户必须在不再需要此对象后 删除Event使用获得的对象。createEvent()

签名
int createEvent
    (
      const Event& event
    )
参数

eventEvent对象 的引用。

返回值

0关于成功,-1关于失败。

字典::createForeignKey()

描述

创建一个ForeignKey 对象,给定对此对象的引用和 ObjectID。

签名
int createForeignKey
    (
      const ForeignKey&,
      ObjectId* = 0,
      int flags = 0
    )
参数

对象的引用 ForeignKeyObjectID。如果使用可选值flags,则允许在不执行任何外键检查的情况下创建外键。如果设置,其值必须为 CreateFK_NoVerify(1)。

返回值

0在成功。

字典::createHashMap()

描述

创建一个HashMap.

签名
int createHashMap
    (
      const HashMap& hashmap,
      ObjectId* id = 0
    )
参数

对哈希映射的引用,以及可选的要分配给它的 ID。

返回值

成功返回0;失败时,返回 -1 并设置错误。

字典::创建索引()

描述

Index此方法在给定 的实例和可能的可选实例的 情况下创建索引 Table

签名

可以在引用或不引用表对象的情况下调用此方法:

int createIndex
    (
      const Index& index
    )
int createIndex
    (
      const Index& index,
      const Table& table
    )
参数

必需Index:对对象 的引用 可选:对 Table对象的引用。

返回值

0关于成功,-1关于失败。

字典::createLogfileGroup()

描述

此方法创建一个新的日志文件组,给定一个实例LogfileGroup

签名
int createLogfileGroup
    (
      const LogfileGroup& lGroup
    )
参数

需要一个参数,即对 LogfileGroup对象的引用。

返回值

0关于成功,-1关于失败。

字典::创建记录()

描述

此方法用于创建 NdbRecord用于表或索引扫描操作的对象。

签名

此方法的签名取决于生成的 NdbRecord 是用于表操作还是索引操作:

要创建NdbRecord用于表操作的,请使用以下命令:

NdbRecord* createRecord
    (
      const Table* table,
      const RecordSpecification* recSpec,
      Uint32 length,
      Uint32 elSize
    )

要创建NdbRecord用于索引操作的对象,您可以使用以下任一方法:

NdbRecord* createRecord
    (
      const Index* index,
      const Table* table,
      const RecordSpecification* recSpec,
      Uint32 length,
      Uint32 elSize
    )

或者

NdbRecord* createRecord
    (
      const Index* index,
      const RecordSpecification* recSpec,
      Uint32 length,
      Uint32 elSize
    )
参数

Dictionary::createRecord()采用以下参数:

返回值

NdbRecord用于涉及给定表或索引的操作 。

例子

请参阅第 2.3.22 节,“NdbRecord 接口”

字典::创建表()

描述

在给定 的实例的情况下创建一个表 Table

使用这种方法创建的表不能被 MySQL 服务器看到,不能被 MySQL 客户端更新,也不能被复制。

签名
int createTable
    (
      const Table& table
    )
参数

的实例Table。有关更多信息,请参阅 第 2.3.27 节,“表类”

返回值

0关于成功,-1关于失败。

字典::创建表空间()

描述

Tablespace给定一个对象 ,此方法创建一个新的表空间 。

签名
int createTablespace
    (
      const Tablespace& tSpace
    )
参数

此方法需要一个参数——对 的实例的引用Tablespace

返回值

0关于成功,-1关于失败。

字典::创建撤销文件()

描述

Undofile给定一个对象 ,此方法创建一个新的撤消文件 。

签名
int createUndofile
    (
      const Undofile& uFile
    )
参数

此方法需要一个参数:对 的实例的引用Undofile

返回值

0关于成功,-1关于失败。

字典::dropDatafile()

描述

Datafile给定一个对象 ,此方法会删除一个数据文件 。

签名
int dropDatafile
    (
      const Datafile& dFile
    )
参数

需要一个参数——对实例的引用 Datafile

返回值

0关于成功,-1关于失败。

字典::dropEvent()

描述

给定对 Event对象的引用,此方法会删除一个事件。

签名
int dropEvent
    (
      const char* name,
      int         force = 0
    )
参数

这个方法有两个参数:

  • name要删除的事件的 字符串形式 。

  • 默认情况下,dropEvent()如果指定的事件不存在则失败。force您可以通过为(可选)参数传递任何非零值来覆盖此行为 ;在这种情况下,不会检查是否确实存在这样的事件,并且仅当事件存在但由于某种原因无法删除它时才返回错误。

返回值

0关于成功,-1关于失败。

字典::dropForeignKey()

描述

此方法删除外键,给出 ForeignKey对要删除的对象的引用。

签名
int dropForeignKey
    (
      const ForeignKey&
    )
参数

ForeignKey对要删除 的 的引用。

返回值

0在成功。

字典::dropIndex()

描述

Index此方法在给定 的实例以及可能的可选实例的 情况下删除索引 Table

签名
int dropIndex
    (
      const Index& index
    )
int dropIndex
    (
      const Index& index,
      const Table& table
    )
参数

此方法有两个参数,其中一个是可选的:

  • 必需Index:对对象 的引用

  • : 对 Table对象的引用。

返回值

0关于成功,-1关于失败。

字典::dropLogfileGroup()

描述

给定一个实例 LogfileGroup,此方法会删除相应的日志文件组。

签名
int dropLogfileGroup
    (
      const LogfileGroup& lGroup
    )
参数

需要一个参数,即对 LogfileGroup对象的引用。

返回值

0关于成功,-1关于失败。

字典::dropTable()

描述

删除给定实例的表 Table

在 NDB 7.3.5 及更高版本中,此方法删除table正在删除的表的所有外键约束,无论删除的表充当父表、子表还是两者。(漏洞 #18069680)

在 NDB 8.0 之前,NDB使用此方法删除的表会保留在 MySQL 数据字典中,但无法DROP TABLEmysql客户端中使用删除。在 NDB 8.0可以使用. DROP TABLE(缺陷 #29125206,缺陷 #93672)

签名
int dropTable
    (
      const Table& table
    )
参数

的实例Table。有关更多信息,请参阅 第 2.3.27 节,“表类”

返回值

0关于成功,-1关于失败。

字典::dropTablespace()

描述

Tablespace给定一个对象 ,此方法删除一个表空间 。

签名
int dropTablespace
    (
      const Tablespace& tSpace
    )
参数

此方法需要一个参数——对 的实例的引用Tablespace

返回值

0关于成功,-1关于失败。

字典::dropUndofile()

描述

Undofile给定一个对象 ,此方法会删除一个撤消文件 。

签名
int dropUndofile
    (
      const Undofile& uFile
    )
参数

此方法需要一个参数:对 的实例的引用Undofile

返回值

0关于成功,-1关于失败。

字典::endSchemaTrans()

描述

结束以 beginSchemaTrans();开头的模式事务 导致操作被处理并提交,或中止并回滚。该方法结合了事务执行和关闭;不需要(或实现)这些任务的单独方法。即使当前没有模式事务处于活动状态,也可以成功调用此方法。

与许多其他 NDB API 方法一样,完全有可能endSchemaTrans()覆盖任何当前错误代码。出于这个原因,您应该首先检查并保存可能由先前失败的操作导致的任何错误代码。

签名
int endSchemaTrans
    (
      Uint32 flags = 0
    )
参数

这些标志决定了如何处理已完成的事务。默认值为 0,这会导致提交事务。

字典::SchemaTransFlag。  您还可以使用此处显示endSchemaTrans() 的任一SchemaTransFlag值:

  • SchemaTransAbort(= 1):导致事务中止

  • SchemaTransBackground(= 2): 使事务在后台执行;结果被写入集群日志,而应用程序继续运行而不等待响应。

返回值

成功返回0;如果发生错误,返回 -1 并设置NdbError错误代码。

字典::获取数据文件()

描述

Datafile给定数据文件所在数据节点的节点 ID 以及该节点文件系统上数据文件的路径, 此方法用于检索 对象。

签名
Datafile getDatafile
    (
      Uint32      nodeId,
      const char* path
    )
参数

必须使用两个参数调用此方法,如下所示:

  • nodeId数据文件所在数据节点 的32位无符号整数

  • path到节点文件系统上的数据文件(字符串作为字符指针 )

返回值

一个Datafile对象——有关详细信息,请参阅 第 2.3.2 节“数据文件类”

字典::getDefaultHashMap()

描述

获取表的默认哈希映射。

签名
int getDefaultHashMap
    (
      HashMap& dst,
      Uint32 fragments
    )

或者

int getDefaultHashMap
    (
      HashMap& dst,
      Uint32 buckets,
      Uint32 fragments
    )
返回值

成功返回0;失败时,返回 -1 并设置错误。

字典::getEvent()

描述

此方法用于在 Event给定事件名称的情况下获取表示事件的新对象。

getEvent()每次成功调用时分配内存。您应该记住,使用相同的事件名称连续调用此方法会返回多个不同的对象。

NDB API 不跟踪分配的事件对象,这意味着用户必须在不再需要对象后 清理每个 Event使用 getEvent()with 创建的对象。delete从 NDB 8.0.30 开始,您可以 releaseEvent() 改为执行此操作。

签名
const Event* getEvent
    (
      const char* eventName
    )
参数

,eventName一个字符串(字符指针)。

返回值

指向Event 对象的指针。有关更多信息,请参见第 2.3.5 节“事件类”

字典::getForeignKey()

描述

ForeignKey给定外键及其名称的引用, 此方法用于获取表示事件的新 对象。

签名
int getForeignKey
    (
      ForeignKey& dst,
      const char* name
    )
参数

对外键及其 的引用 name,一个字符串(字符指针)。

返回值

指向ForeignKey 对象的指针。

字典::getHashMap()

描述

按名称或按表获取哈希映射。

签名
int getHashMap
    (
      HashMap& dst,
      const char* name
    )

或者

int getHashMap
    (
      HashMap& dst,
      const Table* table
    )
参数

对哈希映射的引用以及名称或 Table.

返回值

成功返回0;失败时,返回 -1 并设置错误。

字典::getIndex()

描述

给定索引的名称和该表所属的表的名称,此方法检索指向索引的指针。

签名
const Index* getIndex
    (
      const char* iName,
      const char* tName
    ) const
参数

需要两个参数:

  • 指数名称 ( iName)

  • 索引所属表的名称 ( tName)

这两个都是字符串值,由字符指针表示。

返回值

指向Index. 有关此对象的信息 ,请参阅 第 2.3.8 节,“索引类” 。

字典::getLogfileGroup()

描述

此方法获取一个 LogfileGroup对象,给定日志文件组的名称。

签名
LogfileGroup getLogfileGroup
    (
      const char* name
    )
参数

name日志文件组的 。

返回值

的实例 LogfileGroup;有关详细信息,请参阅 第 2.3.9 节“LogfileGroup 类”

字典::getNdbError()

描述

此方法检索最近的 NDBAPI 错误。

签名
const struct NdbError& getNdbError
    (
      void
    ) const
参数

没有

返回值

NdbError 对象的引用。

字典::getTable()

描述

此方法可用于访问 Table名称已知的对象。

签名
const Table* getTable
    (
      const char* name
    ) const
参数

name的。

返回值

指向表的指针,或者NULL如果没有name 提供的表。

字典::获取表空间()

描述

给定表空间的名称或 ID,此方法返回相应的 Tablespace对象。

签名

可以通过以下两种方式之一调用此方法:

  • 使用表空间名称:

    Tablespace getTablespace
        (
          const char* name
        )
  • 使用表空间 ID:

    Tablespace getTablespace
        (
          Uint32 id
        )
参数

以下任一项:

  • name空间的,字符串(作为字符指针)

  • id表空间 的无符号 32 位整数

返回值

一个Tablespace对象,如第 2.3.28 节“表空间类”中所述。

字典::getUndofile()

描述

此方法获取一个 Undofile对象,给定撤消文件所在节点的 ID 和文件的文件系统路径。

签名
Undofile getUndofile
    (
      Uint32      nodeId,
      const char* path
    )
参数

此方法需要以下两个参数:

  • nodeIdundo文件所在数据节点的 ;该值作为 32 位无符号整数传递

  • path到节点文件系统上的撤消文件(字符串作为字符指针 )

返回值

的实例Undofile。有关详细信息,请参阅第 2.3.29 节,“Undofile 类”

字典::hasSchemaTrans()

描述

告知 NDB API 模式事务是否正在进行。

签名
bool hasSchemaTrans
    (
      void
    ) const
参数

没有

返回值

TRUE如果模式事务正在进行中,则 返回布尔值,否则返回FALSE

字典::initDefaultHashMap()

描述

为表初始化默认哈希映射。

签名
int initDefaultHashMap
    (
      HashMap& dst,
      Uint32 fragments
    )

或者

int initDefaultHashMap
    (
      HashMap& dst,
      Uint32 buckets,
      Uint32 fragments
    )
参数

对哈希映射和片段数的引用。可选的桶数。

返回值

成功返回0;失败时,返回 -1 并设置错误。

字典::无效索引()

描述

此方法用于使缓存的索引对象无效。

签名

通过此方法无效的索引可以作为Index对象(使用指针)引用,也可以通过索引名称和表名称引用,如下所示:

void invalidateIndex
    (
      const char* indexName,
      const char* tableName
    )

void invalidateIndex
    (
      const Index* index
    )
参数

要从缓存中删除的索引的名称及其所属的表(分别为indexNametableName),或指向相应 Index对象的指针。

返回值

没有

字典::无效表()

描述

此方法用于使缓存的表对象无效。

签名
void invalidateTable
    (
      const char* name
    )

也可以使用 Table对象而不是表的名称,如下所示:

void invalidateTable
    (
      const Table* table
    )
参数

要从表缓存中删除的name表的 ,或指向相应Table对象的指针。

返回值

没有

字典::listEvents()

描述

此方法返回字典中定义的所有事件的列表。

签名
int listEvents
    (
      List& list
    )
参数

对空 List. 在 NDB 8.0.29 及更高版本中,用于clear()清空以前使用List的以供重用。

返回值

0成功时;-1失败时。

字典::列表索引()

描述

List给定表名, 此方法用于获取 表上所有索引的一个。

签名
int listIndexes
    (
      List&      list,
      const char* table
) const
参数

listIndexes()接受两个参数,这两个参数都是必需的:

  • List调用此方法后,对包含索引 的空对象的引用 。在 NDB 8.0.29 及更高版本中,用于 clear()清空以前使用List的以供重用。

  • table要列出其索引 的名称

返回值

0关于成功,-1关于失败。

字典::listObjects()

描述

此方法用于获取字典中的对象列表。可以获取字典中的所有对象,或将列表限制为单一类型的对象。

签名

此方法有两个签名:

int listObjects
    (
      List&        list,
      Object::Type type = Object::TypeUndefined
    ) const

int listObjects
    (
      List&        list,
      Object::Type type,
      bool         fullyQualified
    ) const
参数

需要对空对象的引用 ——这是调用List后包含字典对象的列表 。listObjects()(请参阅 第 2.3.10 节,“列表类”。)可选的第二个参数 type可用于将列表限制为仅给定类型的对象——即指定的 Object::Type. 如果 type未给出,则列表包含字典的所有对象。

您还可以指定 中的对象名称是否 list是完全限定的(即,对象名称是否包括数据库、模式和可能的表名称)。如果指定 fullyQualified,则还必须指定type

在 NDB 8.0.29 及更高版本中,您可以调用 clear()清空以前使用的 a 以List供重用。

笔记

设置fullyQualifiedfalse会导致 listObjects()返回使用完全限定名称的对象。

返回值

0关于成功,-1关于失败。

字典::prepareHashMap()

描述

创建或检索适合更改的哈希映射。需要正在进行的模式事务;有关详细信息,请参阅 Dictionary::beginSchemaTrans()

签名

以下任一项:

  • int prepareHashMap
        (
          const Table& oldTable,
          Table& newTable
        )
  • int prepareHashMap
        (
          const Table& oldTable,
          Table& newTable,
          Uint32 buckets
        )
参数

对旧表和新表的引用。可选地,多个桶。

返回值

成功返回0;失败时,返回 -1 并设置错误。

字典::releaseEvent()

描述

此方法用于释放 Event不再需要的 an。通常这是由 返回的事件 getEvent()

签名
void releaseEvent
    (
      const Event* event
    )
参数

Event要清理的 。

返回值

没有

这个方法是在 NDB 8.0.30 中添加的。

字典::releaseRecord()

描述

此方法用于释放 NdbRecord不再需要的 an。

签名
void releaseRecord
    (
      NdbRecord* record
    )
参数

NdbRecord要清理的 。

返回值

没有

例子

请参阅第 2.3.22 节,“NdbRecord 接口”

字典::removeCachedTable()

描述

此方法从本地缓存中删除由名称指定的表。

签名
void removeCachedTable
    (
      const char* table
    )
参数

table要从缓存中删除 的名称。

返回值

没有

字典::removeCachedIndex()

描述

此方法从本地缓存中删除指定的索引,给出索引的名称和包含它的表的名称。

签名
void removeCachedIndex
    (
      const char* index,
      const char* table
    )
参数

removeCachedIndex()方法需要两个参数:

  • index要从缓存中删除 的名称

  • table在其中找到索引 的名称

返回值

没有