📄 ndbt_tables.cpp
字号:
/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <NDBT.hpp>#include <NDBT_Table.hpp>#include <NDBT_Tables.hpp>/* ******************************************************* */// Define Ndb standard tables //// USE ONLY UPPERLETTERS IN TAB AND COLUMN NAMES/* ******************************************************* *//* * These are our "official" test tables * *//* T1 */staticconstNDBT_Attribute T1Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL3", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T1("T1", sizeof(T1Attribs)/sizeof(NDBT_Attribute), T1Attribs);/* T2 */staticconstNDBT_Attribute T2Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Bigunsigned, 1, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL3", NdbDictionary::Column::Bit, 23), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned, 1, false, true), // Nullable NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table T2("T2", sizeof(T2Attribs)/sizeof(NDBT_Attribute), T2Attribs);/* T3 */staticconstNDBT_Attribute T3Attribs[] = { NDBT_Attribute("ID", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("PERSNR", NdbDictionary::Column::Char, 10), NDBT_Attribute("NAME", NdbDictionary::Column::Char, 25), NDBT_Attribute("ADRESS", NdbDictionary::Column::Char, 50), NDBT_Attribute("ADRESS2", NdbDictionary::Column::Char, 30, false, true), // Nullable NDBT_Attribute("F諨ELSE臨", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table T3("T3", sizeof(T3Attribs)/sizeof(NDBT_Attribute), T3Attribs);/* T4 */staticconstNDBT_Attribute T4Attribs[] = { NDBT_Attribute("REGNR", NdbDictionary::Column::Char, 6, true), NDBT_Attribute("YEAR", NdbDictionary::Column::Unsigned), NDBT_Attribute("OWNER", NdbDictionary::Column::Char, 25), NDBT_Attribute("ADRESS", NdbDictionary::Column::Char, 50), NDBT_Attribute("ADRESS2", NdbDictionary::Column::Char, 30, false, true), // Nullable NDBT_Attribute("OWNERID", NdbDictionary::Column::Unsigned), NDBT_Attribute("CHECKDATE", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table T4("T4", sizeof(T4Attribs)/sizeof(NDBT_Attribute), T4Attribs);/* T5 */staticconstNDBT_Attribute T5Attribs[] = { NDBT_Attribute("OWNERID", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("REGNR", NdbDictionary::Column::Char, 6, true), NDBT_Attribute("CREATEDDATE", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table T5("T5", sizeof(T5Attribs)/sizeof(NDBT_Attribute), T5Attribs);/* T6 */staticconstNDBT_Attribute T6Attribs[] = { NDBT_Attribute("PK1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("ATTR1", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR2", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR3", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR4", NdbDictionary::Column::Char, 47, false, true),// Nullable NDBT_Attribute("ATTR5", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR6", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR7", NdbDictionary::Column::Char, 48, false, true),// Nullable NDBT_Attribute("ATTR8", NdbDictionary::Column::Char, 50, false, true), // Nullable NDBT_Attribute("ATTR9", NdbDictionary::Column::Int), NDBT_Attribute("ATTR10", NdbDictionary::Column::Float), NDBT_Attribute("ATTR11", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR12", NdbDictionary::Column::Char, 49), NDBT_Attribute("ATTR13", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR14", NdbDictionary::Column::Char, 50), NDBT_Attribute("ATTR15", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR16", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR17", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR18", NdbDictionary::Column::Char, 257), NDBT_Attribute("ATTR19", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR20", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T6("T6", sizeof(T6Attribs)/sizeof(NDBT_Attribute), T6Attribs);/* T7 */staticconstNDBT_Attribute T7Attribs[] = { NDBT_Attribute("PK1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("PK2", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("PK3", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("PK4", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("ATTR1", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR2", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR3", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR4", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR5", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR6", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR7", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR8", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR9", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR10", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR11", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR12", NdbDictionary::Column::Char, 259), NDBT_Attribute("ATTR13", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR14", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR15", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR16", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR17", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR18", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR19", NdbDictionary::Column::Unsigned), NDBT_Attribute("ATTR20", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T7("T7", sizeof(T7Attribs)/sizeof(NDBT_Attribute), T7Attribs);/* T8 */staticconstNDBT_Attribute T8Attribs[] = { NDBT_Attribute("PERSON_ID", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("NAME", NdbDictionary::Column::Char, 257), NDBT_Attribute("ADRESS", NdbDictionary::Column::Char, 513), NDBT_Attribute("POSTADRESS", NdbDictionary::Column::Char, 1173), NDBT_Attribute("VALUE", NdbDictionary::Column::Unsigned), };staticconstNDBT_Table T8("T8", sizeof(T8Attribs)/sizeof(NDBT_Attribute), T8Attribs);/* T9 */staticconstNDBT_Attribute T9Attribs[] = { NDBT_Attribute("KF_SKAPAD", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("PLATS_ID", NdbDictionary::Column::Char, 2, true), NDBT_Attribute("TNR_SKAPAD", NdbDictionary::Column::Char, 12, true), NDBT_Attribute("DELG_MOT", NdbDictionary::Column::Char, 1, true), NDBT_Attribute("VALUE", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T9("T9", sizeof(T9Attribs)/sizeof(NDBT_Attribute), T9Attribs);/* T10 - Long key table */staticconstNDBT_Attribute T10Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Char, 256, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL3", NdbDictionary::Column::Char, 257), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T10("T10", sizeof(T10Attribs)/sizeof(NDBT_Attribute), T10Attribs);/* T11 - Primary key is not first attribute */staticconstNDBT_Attribute T11Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL3", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL4", NdbDictionary::Column::Char, 111), NDBT_Attribute("KOL5", NdbDictionary::Column::Char, 113)};staticconstNDBT_Table T11("T11", sizeof(T11Attribs)/sizeof(NDBT_Attribute), T11Attribs);/* T12 - 16 primary keys */staticconstNDBT_Attribute T12Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL3", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL6", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL7", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL8", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL9", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL10", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL11", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL12", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL13", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL14", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL15", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL16", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL20", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL30", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL40", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL50", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table T12("T12", sizeof(T12Attribs)/sizeof(NDBT_Attribute), T12Attribs);/* T13 - Long key table */staticconstNDBT_Attribute T13Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Char, 257, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Char, 259, true), NDBT_Attribute("KOL3", NdbDictionary::Column::Char, 113, true), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL6", NdbDictionary::Column::Unsigned),};staticconstNDBT_Table T13("T13", sizeof(T13Attribs)/sizeof(NDBT_Attribute), T13Attribs);/* T14 - 5 primary keys */staticconstNDBT_Attribute T14Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL3", NdbDictionary::Column::Char, 4, true), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL20", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL30", NdbDictionary::Column::Int), NDBT_Attribute("KOL40", NdbDictionary::Column::Float), NDBT_Attribute("KOL50", NdbDictionary::Column::Char, 200)};staticconstNDBT_Table T14("T14", sizeof(T14Attribs)/sizeof(NDBT_Attribute), T14Attribs);/* C2 DHCP TABLES, MAYBE THESE SHOULD BE MOVED TO THE UTIL_TABLES?*/static constNDBT_Attribute I1_Cols[] = { NDBT_Attribute("ID", NdbDictionary::Column::Unsigned, true), NDBT_Attribute("PORT", NdbDictionary::Column::Char, 16, true), NDBT_Attribute("ACCESSNODE", NdbDictionary::Column::Char, 16, true), NDBT_Attribute("POP", NdbDictionary::Column::Char, 64, true), NDBT_Attribute("VLAN", NdbDictionary::Column::Char, 16), NDBT_Attribute("COMMENT", NdbDictionary::Column::Char, 128), NDBT_Attribute("SNMPINDEX", NdbDictionary::Column::Int), NDBT_Attribute("PORTSTATE", NdbDictionary::Column::Int), NDBT_Attribute("UPDATES", NdbDictionary::Column::Unsigned)};staticconstchar* I1_Indexes[] = { "UNIQUE", "ID", "PORT", "ACCESSNODE", "POP", "PORTSTATE", 0, 0};staticNDBT_Table I1("I1", sizeof(I1_Cols)/sizeof(NDBT_Attribute), I1_Cols );// ,I1_Indexes);static constNDBT_Attribute I2_Cols[] = { NDBT_Attribute("ID", NdbDictionary::Column::Unsigned, true), NDBT_Attribute("PORT", NdbDictionary::Column::Char, 16, true), NDBT_Attribute("ACCESSNODE", NdbDictionary::Column::Char, 16, true), NDBT_Attribute("POP", NdbDictionary::Column::Char, 64, true), NDBT_Attribute("ACCESSTYPE", NdbDictionary::Column::Int, true), NDBT_Attribute("CUSTOMER_ID", NdbDictionary::Column::Int), NDBT_Attribute("PROVIDER", NdbDictionary::Column::Int), NDBT_Attribute("TEXPIRE", NdbDictionary::Column::Int), NDBT_Attribute("NUM_IP", NdbDictionary::Column::Int), NDBT_Attribute("LEASED_NUM_IP", NdbDictionary::Column::Int), NDBT_Attribute("LOCKED_IP", NdbDictionary::Column::Int), NDBT_Attribute("STATIC_DNS", NdbDictionary::Column::Int), NDBT_Attribute("SUSPENDED_SERVICES", NdbDictionary::Column::Int), NDBT_Attribute("UPDATES", NdbDictionary::Column::Unsigned)};constchar* I2_Indexes[] = { "ORDERED", "CUSTOMER_ID", 0, "ORDERED", "NUM_IP", 0, 0};staticNDBT_Table I2("I2", sizeof(I2_Cols)/sizeof(NDBT_Attribute), I2_Cols );//, I2_Indexes);static constNDBT_Attribute I3_Cols[] = { NDBT_Attribute("ID", NdbDictionary::Column::Unsigned, true), NDBT_Attribute("PORT", NdbDictionary::Column::Char, 16), // SI2 NDBT_Attribute("ACCESSNODE", NdbDictionary::Column::Char, 16), // SI2 NDBT_Attribute("POP", NdbDictionary::Column::Char, 64), // SI2 NDBT_Attribute("MAC", NdbDictionary::Column::Char, 12, true), NDBT_Attribute("MAC_EXPIRE", NdbDictionary::Column::Int, 1), NDBT_Attribute("IIP", NdbDictionary::Column::Int), // SI1 NDBT_Attribute("P_EXPIRE", NdbDictionary::Column::Int), NDBT_Attribute("HOSTNAME", NdbDictionary::Column::Char, 32), NDBT_Attribute("DETECTED", NdbDictionary::Column::Int), NDBT_Attribute("STATUS", NdbDictionary::Column::Int), NDBT_Attribute("NUM_REQUESTS", NdbDictionary::Column::Int), NDBT_Attribute("ACCESSTYPE", NdbDictionary::Column::Int), NDBT_Attribute("OS_TYPE", NdbDictionary::Column::Int), NDBT_Attribute("GW", NdbDictionary::Column::Int), NDBT_Attribute("UPDATES", NdbDictionary::Column::Unsigned)};constchar* I3_Indexes[] = { "UNIQUE", "ID", 0, "ORDERED", "MAC", 0, "ORDERED", "GW", 0, 0};staticNDBT_Table I3("I3", sizeof(I3_Cols)/sizeof(NDBT_Attribute), I3_Cols ); // ,I3_Indexes);// Define array with pointer to all tables staticconstNDBT_Table *test_tables[]={ &T1, &T2, &T3, &T4, &T5, &T6, &T7, &T8, &T9, &T10, &T11, &T12, &T13, &T14, &I1, &I2, &I3};struct NDBT_IndexList { const char * m_table; const char ** m_indexes;};staticconstNDBT_IndexList indexes[] = { "I1", I1_Indexes, "I2", I2_Indexes, "I3", I3_Indexes, 0, 0};staticconstint numTestTables = sizeof(test_tables)/sizeof(NDBT_Table*);/** * Define tables we should not be able to create */ /* F1 * * Error: PK and column with same name */staticconstNDBT_Attribute F1Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL3", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table F1("F1", sizeof(F1Attribs)/sizeof(NDBT_Attribute), F1Attribs);/* F2 * * Error: Two columns with same name */staticconstNDBT_Attribute F2Attribs[] = { NDBT_Attribute("KOL1", NdbDictionary::Column::Unsigned, 1, true), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL2", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL4", NdbDictionary::Column::Unsigned), NDBT_Attribute("KOL5", NdbDictionary::Column::Unsigned)};staticconstNDBT_Table F2("F2", sizeof(F2Attribs)/sizeof(NDBT_Attribute), F2Attribs);/* F3 * * Error: Too many primary keys defined, 32 is max */static
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -