Product Documentation

c-treeDB API for C

Previous Topic

Next Topic

Define

Define() establishes specific data definitions. This involves defining columns/fields and creating the tables/files with optional indexes.

Below is the code for Define():

/*

* Define()

*

* Open the table, if it exists. Otherwise create and open the table

*/

#ifdef PROTOTYPE

VOID Define(VOID)

#else

VOID Define()

#endif

{

CTHANDLE hField1, hField2, hField3, hField4;

CTHANDLE hField5, hField6, hField7;

printf("DEFINE\n");

/* allocate a table handle */

if ((hTable = ctdbAllocTable(hDatabase)) == NULL)

Handle_Error("Define(); ctdbAllocTable()");

/* open table */

printf("\tOpen table...\n");

if (ctdbOpenTable(hTable, "custmast", CTOPEN_NORMAL))

{

/* define table fields */

printf("\tAdd fields...\n");

hField1 = ctdbAddField(hTable, "cm_custnumb", CT_FSTRING, 4);

hField2 = ctdbAddField(hTable, "cm_custzipc", CT_FSTRING, 9);

hField3 = ctdbAddField(hTable, "cm_custstat", CT_FSTRING, 2);

hField4 = ctdbAddField(hTable, "cm_custratg", CT_FSTRING, 1);

hField5 = ctdbAddField(hTable, "cm_custname", CT_STRING, 47);

hField6 = ctdbAddField(hTable, "cm_custaddr", CT_STRING, 47);

hField7 = ctdbAddField(hTable, "cm_custcity", CT_STRING, 47);

if (!hField1 || !hField2 || !hField3 || !hField4 ||

!hField5 || !hField6|| !hField7)

Handle_Error("Define(); ctdbAddField()");

/* create table */

printf("\tCreate table...\n");

if (ctdbCreateTable(hTable, "custmast", CTCREATE_NORMAL))

Handle_Error("Define(); ctdbCreateTable()");

if (ctdbOpenTable(hTable, "custmast", CTOPEN_NORMAL))

Handle_Error("Define(); ctdbOpenTable()");

}

else

Check_Table_Mode(hTable);

}

/*

* Check_Table_Mode()

*

* Check if existing table has transaction processing flag enabled.

* If a table is under transaction processing control, modify the

* table mode to disable transaction processing

*/

#ifdef PROTOTYPE

VOID Check_Table_Mode(CTHANDLE hTable)

#else

VOID Check_Table_Mode(hTable)

CTHANDLE hTable;

#endif

{

CTCREATE_MODE mode;

/* get table create mode */

mode = ctdbGetTableCreateMode(hTable);

/* check if table is under transaction processing control */

if ((mode & CTCREATE_TRNLOG))

{

/* change file mode to disable transaction processing */

mode ^= CTCREATE_TRNLOG;

if (ctdbUpdateCreateMode(hTable, mode) != CTDBRET_OK)

Handle_Error("Check_Table_Mode(); ctdbUpdateCreateMode");

}

}

TOCIndex