本节提供有关
Dictionary该类的信息。
- 家长班
- 儿童班
- 描述
这用于定义和检索数据对象元数据。它还包括用于创建和删除数据库对象的方法。
- 方法
-
下表列出了该类的公共方法以及每个方法的用途或用途:
表 2.11 Dictionary 类方法及说明
MySQL 服务器看不到 使用这些方法创建的表和索引等数据库对象 。这意味着它们不能被 MySQL 客户端访问,也不能被复制。由于这些原因,通常最好避免与他们合作。
Dictionary::create*()该类
Dictionary没有任何直接处理列的方法。您必须Column为此目的使用类方法——有关详细信息,请参阅第 2.3.1 节“列类”。 - 类型
- 描述
-
此方法创建
Dictionary该类的一个新实例。此类的构造函数和析构函数都是受保护的方法,而不是公共方法。
- 签名
protected Dictionary ( Ndb& ndb )- 参数
一个
Ndb对象。- 返回值
一个
Dictionary对象。- 析构函数
-
析构函数不接受任何参数并且不返回任何内容:
protected ~Dictionary ( void )
- 描述
-
启动模式事务。如果事务已经处于活动状态,或者内核元数据被锁定,则会发生错误。
hasSchemaTrans()您可以使用该方法 确定模式事务是否已存在 。每当创建、更改或删除数据对象时,都会发生 元数据操作;这样的操作可以在 NDB 内核中创建额外的子操作。
该
Ndb对象及其关联的对象Dictionary一次支持一个模式事务。默认情况下,每个元数据操作都是单独执行的;也就是说,对于每个操作,都会隐式启动模式事务,执行操作(包括任何子操作),然后关闭事务。也可以显式地开始和结束模式事务,并在其边界内原子地执行一组用户定义的操作。在这种情况下,模式事务中的所有操作作为一个单元要么成功,要么中止并回滚。这是按照此处列出的步骤完成的:
要开始架构事务,请调用
beginSchemaTrans()。执行所需的操作(例如
createTable())。通过调用结束模式事务
endSchemaTrans。
每个操作都被发送到 NDB 内核,内核对其进行解析和保存。解析失败会导致在返回之前回滚到先前的用户操作,此时用户可以继续或中止整个事务。
提交所有操作后,
endSchemaTrans()处理并提交它们。如果出现错误,事务将立即中止。如果用户在调用之前退出
endSchemaTrans(),NDB 内核将中止事务。如果用户在调用endSchemaTrans()返回之前退出,内核将继续请求,并在集群日志中报告其完成状态。 - 签名
int beginSchemaTrans ( void )- 参数
没有。
- 返回值
成功返回 0,错误返回 -1。
- 描述
创建一个
ForeignKey对象,给定对此对象的引用和ObjectID。- 签名
int createForeignKey ( const ForeignKey&, ObjectId* = 0, int flags = 0 )- 参数
对象的引用
ForeignKey和ObjectID。如果使用可选值flags,则允许在不执行任何外键检查的情况下创建外键。如果设置,其值必须为CreateFK_NoVerify(1)。- 返回值
0在成功。
- 描述
创建一个
HashMap.- 签名
int createHashMap ( const HashMap& hashmap, ObjectId* id = 0 )- 参数
对哈希映射的引用,以及可选的要分配给它的 ID。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法创建一个新的日志文件组,给定一个实例
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要与索引一起使用,则指向相应Index对象的指针。如果NdbRecord要与表一起使用,则省略此参数。(参见 第 2.3.8 节,“索引类”。)指向
Table表示要扫描的表的对象的指针。如果Ndbrecord生成的要与索引一起使用,则可以选择指定包含该索引的表。(参见 第 2.3.27 节,“表类”。)A
RecordSpecification用于描述列。的
length记录。构成此记录的元素的大小。
- 返回值
NdbRecord用于涉及给定表或索引的操作 。- 例子
- 描述
-
在给定 的实例的情况下创建一个表
Table。使用这种方法创建的表不能被 MySQL 服务器看到,不能被 MySQL 客户端更新,也不能被复制。
- 签名
int createTable ( const Table& table )- 参数
的实例
Table。有关更多信息,请参阅 第 2.3.27 节,“表类”。- 返回值
0关于成功,-1关于失败。
- 描述
Tablespace给定一个对象 ,此方法创建一个新的表空间 。- 签名
int createTablespace ( const Tablespace& tSpace )- 参数
此方法需要一个参数——对 的实例的引用
Tablespace。- 返回值
0关于成功,-1关于失败。
- 描述
给定对
Event对象的引用,此方法会删除一个事件。- 签名
int dropEvent ( const char* name, int force = 0 )- 参数
-
这个方法有两个参数:
name要删除的事件的 字符串形式 。默认情况下,
dropEvent()如果指定的事件不存在则失败。force您可以通过为(可选)参数传递任何非零值来覆盖此行为 ;在这种情况下,不会检查是否确实存在这样的事件,并且仅当事件存在但由于某种原因无法删除它时才返回错误。
- 返回值
0关于成功,-1关于失败。
- 描述
此方法删除外键,给出
ForeignKey对要删除的对象的引用。- 签名
int dropForeignKey ( const ForeignKey& )- 参数
ForeignKey对要删除 的 的引用。- 返回值
0在成功。
- 描述
给定一个实例
LogfileGroup,此方法会删除相应的日志文件组。- 签名
int dropLogfileGroup ( const LogfileGroup& lGroup )- 参数
需要一个参数,即对
LogfileGroup对象的引用。- 返回值
0关于成功,-1关于失败。
- 描述
-
删除给定实例的表
Table。在 NDB 7.3.5 及更高版本中,此方法删除
table正在删除的表的所有外键约束,无论删除的表充当父表、子表还是两者。(漏洞 #18069680)在 NDB 8.0 之前,
NDB使用此方法删除的表会保留在 MySQL 数据字典中,但无法DROP TABLE在mysql客户端中使用删除。在 NDB 8.0中,可以使用.DROP TABLE(缺陷 #29125206,缺陷 #93672) - 签名
int dropTable ( const Table& table )- 参数
的实例
Table。有关更多信息,请参阅 第 2.3.27 节,“表类”。- 返回值
0关于成功,-1关于失败。
- 描述
Tablespace给定一个对象 ,此方法删除一个表空间 。- 签名
int dropTablespace ( const Tablespace& tSpace )- 参数
此方法需要一个参数——对 的实例的引用
Tablespace。- 返回值
0关于成功,-1关于失败。
- 描述
-
结束以
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 节“数据文件类”。
- 描述
获取表的默认哈希映射。
- 签名
-
int getDefaultHashMap ( HashMap& dst, Uint32 fragments )或者
int getDefaultHashMap ( HashMap& dst, Uint32 buckets, Uint32 fragments ) - 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
-
此方法用于在
Event给定事件名称的情况下获取表示事件的新对象。getEvent()每次成功调用时分配内存。您应该记住,使用相同的事件名称连续调用此方法会返回多个不同的对象。NDB API 不跟踪分配的事件对象,这意味着用户必须在不再需要对象后 清理每个
Event使用getEvent()with 创建的对象。delete从 NDB 8.0.30 开始,您可以releaseEvent()改为执行此操作。 - 签名
const Event* getEvent ( const char* eventName )- 参数
,
eventName一个字符串(字符指针)。- 返回值
指向
Event对象的指针。有关更多信息,请参见第 2.3.5 节“事件类”。
- 描述
ForeignKey给定外键及其名称的引用, 此方法用于获取表示事件的新 对象。- 签名
int getForeignKey ( ForeignKey& dst, const char* name )- 参数
对外键及其 的引用
name,一个字符串(字符指针)。- 返回值
指向
ForeignKey对象的指针。
- 描述
按名称或按表获取哈希映射。
- 签名
-
int getHashMap ( HashMap& dst, const char* name )或者
int getHashMap ( HashMap& dst, const Table* table ) - 参数
对哈希映射的引用以及名称或
Table.- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
给定索引的名称和该表所属的表的名称,此方法检索指向索引的指针。
- 签名
const Index* getIndex ( const char* iName, const char* tName ) const- 参数
-
需要两个参数:
指数名称 (
iName)索引所属表的名称 (
tName)
这两个都是字符串值,由字符指针表示。
- 返回值
指向
Index. 有关此对象的信息 ,请参阅 第 2.3.8 节,“索引类” 。
- 描述
此方法获取一个
LogfileGroup对象,给定日志文件组的名称。- 签名
LogfileGroup getLogfileGroup ( const char* name )- 参数
name日志文件组的 。- 返回值
的实例
LogfileGroup;有关详细信息,请参阅 第 2.3.9 节“LogfileGroup 类”。
- 描述
此方法可用于访问
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 节“表空间类”中所述。
- 描述
此方法获取一个
Undofile对象,给定撤消文件所在节点的 ID 和文件的文件系统路径。- 签名
Undofile getUndofile ( Uint32 nodeId, const char* path )- 参数
-
此方法需要以下两个参数:
nodeIdundo文件所在数据节点的 ;该值作为 32 位无符号整数传递path到节点文件系统上的撤消文件(字符串作为字符指针 )
- 返回值
的实例
Undofile。有关详细信息,请参阅第 2.3.29 节,“Undofile 类”。
- 描述
告知 NDB API 模式事务是否正在进行。
- 签名
bool hasSchemaTrans ( void ) const- 参数
没有。
- 返回值
TRUE如果模式事务正在进行中,则 返回布尔值,否则返回FALSE。
- 描述
为表初始化默认哈希映射。
- 签名
-
int initDefaultHashMap ( HashMap& dst, Uint32 fragments )或者
int initDefaultHashMap ( HashMap& dst, Uint32 buckets, Uint32 fragments ) - 参数
对哈希映射和片段数的引用。可选的桶数。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法用于获取字典中的对象列表。可以获取字典中的所有对象,或将列表限制为单一类型的对象。
- 签名
-
此方法有两个签名:
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供重用。笔记设置
fullyQualified为false会导致listObjects()返回使用完全限定名称的对象。 - 返回值
0关于成功,-1关于失败。
- 描述
创建或检索适合更改的哈希映射。需要正在进行的模式事务;有关详细信息,请参阅 Dictionary::beginSchemaTrans()。
- 签名
-
以下任一项:
int prepareHashMap ( const Table& oldTable, Table& newTable )int prepareHashMap ( const Table& oldTable, Table& newTable, Uint32 buckets )
- 参数
对旧表和新表的引用。可选地,多个桶。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法用于释放
Event不再需要的 an。通常这是由 返回的事件getEvent()。- 签名
void releaseEvent ( const Event* event )- 参数
Event要清理的 。- 返回值
没有。
这个方法是在 NDB 8.0.30 中添加的。