isc_rollback_retaining - Design Specification
High Level Design
High Level Algorithm
Functional Specification: isc_rollback_retaining
The surfacing of isc_rollback_retaining was very simple, in that the functionality was already present in the engine. This design specification outlines the work needed to surface the functionality via an InterBase API call.
Interfaces
ISC_STATUS ISC_EXPORT isc_rollback_retaining (ISC_STATUS ISC_FAR *, isc_tr_handle ISC_FAR *);
returns:
value of ISC_STATUS[1] :: 0 if no error >0 if there is an error
- *status_vector:
- pointer to an array of ISC_STATUS
- *isc_tr_handle:
- pointer to a long value used to store the handle of the service structure on the server.
Note
This must be a valid transaction handle.
Detailed Design
New/Affected modules
JRD:
jrd_proto.h
Add definition for jrd_rollback_retaining
ibase.h
Add definition for isc_rollback_retaining
entry.h
Add new entrypoint for rollback retaining
why.c
Handle API call to isc_rollback_retaining
jrd.c
Define local entrypoint for jrd_rollback_retaining
dfloat_stub.c
Add isc_rollback_retaining
REMOTE:
protocol.h
Add new remote op code op_rollback_retaining
interface.c
Add remote interface call REM_rollback_retaining
protocol.c
Add op code to xdr_protocol
server.c
Handle new op code op_rollback_retaining
IPSERVER
ipc.h
Add new IPC op code for op_rollback_retaining
ipapi_proto.h
Add prototype for IPI_rollback_retaining
ipserver.c
Handle new op code op_rollback_retaining
ipclient.c
Send new op code op_rollback_retaining
BUILD / BUILD_WIN32
The following files export the entrypoints for the API
- bind_gds.hp
- bind_gds.generic
- gds32.bind
- jrd32.bind
Testing Considerations
This feature should be testing in the same way as with isc_commit_retaining with the expected result of a rollback being performed instead of a commit.