Product Documentation

c-treeDB API API for C

Previous Topic

Next Topic

Attach and Detach Open Tables

A c-treeDB API table handle or object can be attached and detached to an already open data file. Applications may need to open a table using c-tree ISAM and low level functions and then attach the table to a c-treeDB API table handle to take advantage of full c-treeDB API functionality.

ctdbAttachTable() attaches a FairCom DB ISAM datno object to a c-treeDB API table handle. This function is useful if you have opened a data or index file using one of c- tree’s ISAM open functions and need to attach it to a table handle to use some of the advanced c-treeDB API features such as alter table or the record handler. ctdbAttachTable() returns CTDBRET_OK on success.

ctdbAttachTableXtd() attaches a FairCom DB ISAM datno object to a c-treeDB API table handle. This function is useful if you have opened a data and index file using one of c-tree’s ISAM open functions and need to attach it to a table handle to use some of the advanced c-treeDB API features such as alter table or the record handler. This extended version allows the user to specify the DODA and IFIL for the table, enabling tables without DODA and/or IFIL to be attached to c-treeDB API.

ctdbDetachTable() detaches a c-treeDB API table handle from a c-tree data and index files. The table is not closed but the c-treeDB API table handle resources are released and the handle re-initialized.

Example


CTHANDLE hSession = ctdbAllocSession(CTSESSION_CTREE);

CTHANDLE hTable = ctdbAllocTable(hSession);

CTHANDLE hRecord = ctdbAllocRecord(hTable);

NINT datno, count = 0;

/* logon to c-tree */

ctdbLogon(hSession, SERVER, USER, PASSWD);

/* open the file using c-tree ISAM */

datno = (NINT)OPNRFILX((COUNT) -1, "test309.dat", (COUNT)0, NULL);

/* attach to table */

ctdbAttachTable(hTable, datno);

/* read the records */

if (ctdbFirstRecord(hRecord) == CTDBRET_OK)

do

{

count++;

}

while (ctdbNextRecord(hRecord) == CTDBRET_OK);

/* cleanup */

ctdbDetachtable(hTable);

ctdbFreeRecord(hRecord);

ctdbFreeTable(hTable);

ctdbLogout(hSession);

ctdbFreeSession(hSession);

TOCIndex