AppendTransaction allows transactions to be directly inputted into a backup database.
unsigned __int64 AppendTransaction (
	unsigned int logNumber,
	__int64 position,
	unsigned int transactionID,
	__int64 length,
	const void* buffer


logNumbera value between 0-65,535 that tells the system which cyclical log file this tranaction should be appended to.
positionto enable cross checking that slave log is insync with master.
transactionIDthe Transaction ID for the appending transaction. This has internal use and should not be changed.
lengththe length on the transaction buffer.
buffera buffer containing a correctly formatted buffer.

Return Values

If the method succeeds, the return value is zero else see error codes for more details.


Example Use
CODBPP database, backup;
unsigned int logFile, transactionID;
__int64 length = 0, size, position;
BYTE *buffer = NULL;
char16_t *message;
if((error = database.OpenDatabase(u"YourDatabase")) == NO_ERROR){//production database is read only
   if((error = backup.OpenDatabase(u"YourBackupDatabase")) == NO_ERROR){
      if((error = backup.BeginTransaction(CODBPP::EXCLUSIVE)) == NO_ERROR{//lock backup database from other transactions
         if ((error = backup.WaitNextCommit(&logFile, &position, &transactionID, &size)) == NO_ERROR) {//get last transaction from backup log file
            while (error == NO_ERROR) {
               if ((error = database.WaitNextCommit(&logFile, &position, &transactionID, &size)) == NO_ERROR) {//gets next after the the inputted commit
                  if (length < size || (size << 4) < length) {
                     if(buffer != NULL) delete[] buffer;
                     buffer = new BYTE[(length = (size + 0x3f)&~0x3f)];
                  size = length;//resets length to maximum size
                  if ((error = database.WaitNextCommit(&logFile, &position, &transactionID, &size, buffer)) == NO_ERROR)//reads the next commit
                     error = backup.AppendTransaction(logFile, position, transactionID, size, buffer);//append the previous transaction to the backup database
               else if (ERROR_MASK(error) == WAIT_TIMEOUT) error = NO_ERROR;
if(error && database.GetErrorMessage(&message) == NO_ERROR)


Version 4.5


Version 4.5.1

Also See

Comments (0)Listen All
Characters left: 2500
Ekky Software Homepage Ekky Software Homepage ObjectDatabase++ TScript Ekky Software Homepage Ekky Software Homepage ObjectDatabase++ TScript