2.3.14 NdbDictionary 类

本节提供有关 NdbDictionary类的信息,该类存储有关NDB数据库对象(例如表、列和索引)的元信息。

虽然创建和删除数据库对象的首选方法是通过 MySQL 服务器,但NdbDictionary也允许开发人员通过 NDB API 执行这些任务。

NdbDictionary 类概述

家长班

没有任何

儿童班

Dictionary, Column, Object

对于 NdbDictionary子类枚举的数字等价物,请参阅 /storage/ndb/include/ndbapi/NdbDictionary.hpp NDB Cluster 源树中的文件。

描述

这是一个数据字典类,支持表、列、索引的查询。它还提供了定义这些数据库对象和删除它们的方法。这两种功能都是使用对这些对象建模的内部类来提供的。其中包括以下内部类:

  • Table用于处理表格

  • Column用于创建表列

  • Index用于处理二级索引

  • Dictionary用于创建数据库对象和进行模式查询

  • Event用于处理集群中的事件。

其他Object 子类对使用 NDB 集群磁盘数据表以及外键约束所需的表空间、日志文件组、数据文件和撤消文件进行建模。

NdbDictionary无法从 MySQL 服务器查看 使用创建的表和索引 。

通过最初从 NDB Cluster 创建的 NDB API 删除索引会导致不一致。在这样的操作之后,使用 NDB API 从中删除一个或多个索引的表可能不再被 MySQL 使用。在这种情况下,必须删除该表,然后使用 MySQL 重新创建该表以使其再次可供 MySQL 访问。

方法

NdbDictionary本身没有公共实例方法,只有用于处理NdbRecord 对象的静态方法。不使用的操作NdbRecord 是通过 NdbDictionary子类实例方法完成的。下表列出了公共方法 NdbDictionary以及每个方法的用途或用途:

表 2.36 NdbDictionary 类方法和说明

姓名 描述
getEmptyBitmask() 返回一个空列存在位掩码,可以与 NdbRecord
getFirstAttrId() NdbRecord获取给定对象指定的第一个属性 ID
getRecordIndexName() 获取 NdbRecord 引用的索引对象的名称
getRecordRowLength() 获取使用给定的存储一行数据所需的字节数 NdbRecord
getRecordTableName() 获取 NdbRecord 引用的表对象的名称
getRecordType() 获取 NdbRecord 的 RecordType
getValuePtr() 返回指向由属性 ID 指定的存储数据开头的指针,使用NdbRecord
isNull() 显示列的空位是真还是假
setNull() 设置列的空位

类型

NdbDictionary 定义了两个数据结构,列在这里:

NdbDictionary::AutoGrowSpecification

抽象的

本节提供有关 AutoGrowSpecification数据结构的信息。

家长班

NdbDictionary

描述

TheAutoGrowSpecification是定义在类中的数据结构,作为 类 和NdbDictionary类的一些方法的参数或返回值。 TablespaceLogfileGroup

成员

AutoGrowSpecification成员如下表所示:

表 2.37 NdbDictionary::AutoGrowSpecification 数据结构成员名称和描述

姓名 描述
min_free ???
max_size ???
file_size ???
filename_pattern ???

NdbDictionary::getEmptyBitmask() 函数

描述

返回一个空列存在位掩码,它可以与 any一起使用NdbRecord以指定NdbRecord 操作中不包含任何列。

签名
static const unsigned char* getEmptyBitmask
    (
      void
    )
参数

没有

返回值

一个空位掩码。

NdbDictionary::getFirstAttrId() 方法

描述

获取 NdbRecord对象指定的第一个属性 ID。false如果未指定属性 ID,则 返回 。

签名
static bool getFirstAttrId
    (
      const NdbRecord* record,
      Uint32& firstAttrId
    )
参数

指向 的指针NdbRecord 和对属性 ( firstAttrID) 的引用。

返回值

Boolean false,当无法获取属性 ID 时。

NdbDictionary::getNextAttrId() 方法

描述

获取 NdbRecord传入的属性ID之后的对象指定的下一个属性ID。false 当没有更多的属性ID需要返回时返回。

签名
static bool getNextAttrId
    (
      const NdbRecord* record,
      Uint32& attrId
    )
参数

指向 的指针NdbRecord 和对属性 ID 的引用。

返回值

Boolean false,当无法获取属性 ID 时。

NdbDictionary::getNullBitOffset() 函数

描述

从行的开头获取给定属性 ID 的空位的偏移量 NdbRecordfalse如果属性 ID 不存在则 返回 。

签名
static bool getNullBitOffset
    (
      const NdbRecord* record,
      Uint32 attrId,
      Uint32& bytes,
      Uint32& bit
    )
参数

在其中获取给定属性 ID ( )的空位偏移量的。偏移量表示为字节数 ( ) 加上最后一个字节内的位数 ( )。 NdbRecord recordattrIdbytesbit

返回值

Boolean false,如果具有给定 ID 的属性不存在。

NdbDictionary::getOffset() 函数

描述

NdbRecord 行的开头获取给定属性 ID 存储的偏移量。false如果属性 id 不存在则 返回

签名
static bool getOffset
    (
      const NdbRecord* record,
      Uint32 attrId,
      Uint32& offset
    )
参数

offset定属性 ID 从 NdbRecord行的开头存储的。

返回值

Boolean false,如果找不到属性 ID。

NdbDictionary::getRecordIndexName() 方法

描述

获取 所 引用 的Index 对象的名称。NdbRecord

签名
static const char* getRecordIndexName
    (
      const NdbRecord* record
    )
参数

指向要NdbRecord 为其获取名称的 的指针。

返回值

名字,如果有的话。否则,或者如果 NdbRecord对象不是该IndexAccess类型,则此方法返回 null。

NdbDictionary::getRecordRowLength()

描述

获取存储一行数据所需的字节数,这些数据按照 NdbRecord传递给此方法的结构的描述进行布局。

签名
static Uint32 getRecordRowLength
    (
      const NdbRecord* record
    )
参数

一个NdbRecord对象。

返回值

每行所需的字节数。

NdbDictionary::getRecordTableName() 方法

描述

NdbRecord返回引用 的表对象的名称 。如果记录不是 ,则此方法返回 null TableAccess

签名
static const char* getRecordTableName
    (
      const NdbRecord* record
    )
参数

要为其获取表名 的record (对象)。NdbRecord

返回值

表的名称,如果 NdbRecord对象的类型不是,则为 null TableAccess

NdbDictionary::getRecordType() 方法

描述

返回 NdbRecord传递的对象的类型。

签名
static RecordType getRecordType
    (
      const NdbRecord* record
    )
参数

一个NdbRecord对象。

返回值

( 或) RecordType的 。 NdbRecordIndexAccessTableAccess

NdbDictionary::getValuePtr()

描述

通过查找存储在 NdbRecord 对象中的列的偏移量并返回行位置和偏移量之和,返回指向由属性 ID 指定的存储数据开头的指针。

签名

此方法提供 row-const 和非 row-const 版本:

static const char* getValuePtr
    (
      const NdbRecord* record,
      const char* row,
      Uint32 attrId
    )

static char* getValuePtr
    (
      const NdbRecord* record,
      char* row,
      Uint32 attrId
    )
参数

一个指向NdbRecord 描述行格式的对象的指针,一个指向行数据开始的指针(const在这个方法的 const 版本中),以及列的属性 ID,

返回值

指向行中属性开头的指针。如果属性不是 NdbRecord定义的一部分,则为空。

NdbDictionary::isNull()

描述

指示给定列的空位是否设置为 truefalseNdbRecord从传递的对象中获取空位相对于行指针的位置 。如果该列不可为空,或者如果该列不是 NdbRecord定义的一部分,则该方法返回false

签名
static bool isNull
    (
      const NdbRecord* record,
      const char* row,
      Uint32 attrId
    )
参数

一个指向NdbRecord 描述行格式的对象的指针,一个指向行数据开始的指针,以及要检查的列的属性 ID。

返回值

布尔值true,如果属性 ID 存在于 this 中NdbRecord,则可为空,并且此行的空位已设置;否则,布尔值false

NdbDictionary::RecordSpecification

本节提供有关 RecordSpecification结构的信息。

家长班

NdbDictionary

描述

该结构用于在创建NdbRecord 对象时指定列和范围偏移量。

成员

构成该结构的元素如下表所示:

表 2.38 NdbDictionary::RecordSpecification 属性,带有类型和描述

姓名 类型 描述
column Column 此条目描述的列(列的最大大小定义行的字段大小)。即使在NdbRecord 为索引创建 时,它也必须指向从基础表而不是索引本身获得的列。
offset Uint32 数据距行首的偏移量。对于读取 blob,将 blob 句柄 ( NdbBlob) 而不是实际的 blob 数据写入行。这意味着该行中至少 必须有sizeof(NdbBlob*)must be available。
nullbit_byte_offset Uint32 从包含该 NULL位的字节的行开始的偏移量。
nullbit_bit_in_byte Uint32 NULL位 (0-7)。

nullbit_byte_offset并且 nullbit_bit_in_byte不用于不可为空的列。

有关详细信息,请参阅第 2.3.22 节,“NdbRecord 接口”

NdbDictionary::setNull()

描述

将给定列的空位设置为提供的值。空位的偏移量是从传递的 NdbRecord对象中获得的。如果属性 ID 不是 的一部分 NdbRecord,或者它不可为空,则此方法返回错误 (-1)。

签名
static int setNull
    (
      const NdbRecord* record,
      char* row,
      Uint32 attrId,
      bool value
    )
参数

指向描述行格式的record ( object ) 的指针;NdbRecord指向 row数据开始的指针;列的属性 ID ( attrId); 并将 value空位设置为 (truefalse)。

返回值

成功返回0;attrId如果不是 的一部分 record或不可为 null, 则返回 -1 。