Differences Between RC21 7.5 and RC21 7.6

Ambiguity Created/Resolved

RC21 7.6 combines the features of the standalone version of RC21 for accessing local databases and the client/server version of RC21 for accessing databases through a server. This has resulted in some ambiguities in the semantics of certain global RC21 functions. Thus, the semantics and names of some functions have been changed.

Char DB_Version[] has been removed. It is being replaced with the overloaded Version function.

Char* Version() returns the current version of code.

Char* Version(char* database_name) returns the current version of code for a named database. (There is also a Version member function for an open database however, this unsuitable for use with a database that may not be accessible because its major version is unknown.)

Each of the above functions must be modified with the namespace Local or Server. Thus, Local::Version() returns the version of code running on the client; Server::Version() returns the version of code running on the server; Local::Version(name) returns the version of code with which name was originally created. Server::Version(name) returns the version of code with which name (on the server) was originally created.

DBERROR PFMDECL Create (CDBSTRING path, unsigned pagesize, unsigned nhash), and DBERROR PFMDECL Remove (CDBSTRING path), are ambiguous. Thus, they must be qualified with Local:: or Server::

Delete Database and delete Table No Longer Delete Subordinate Objects

In 7.5, deleting a Database would delete all the tables instantiated from the database object. Similarly, deleting a Table would cause the deletion of all the columns instantiated from the Table. This is a violation of the C++ programming notion that if you allocate a new object, then you should delete it. Besides, it was hell to try to figure out whether something was allocated on the stack or in the heap. There is in fact no reliable way to do this, though we had tried.

NextTable, NextColumn return DBTAB and DBCOL

This is a change to some documentation and a change from the 7.5 version of RC21. 7.5 returned DBTAB from db->NextTable and Column& from table->NextColumn. 7.6 returns DBTAB and DBCOL respectively. The objects must be deleted.