ODMQueryExecuteFails to Identify Partial Results
Category: Functionality - Defect Incident ID: X000903 Priority: 6 - Serious Status: Correction Pending Component:
- Repaired in: tbd
Assigned To: tbd Reported By:
V. J. Mohan (2000-09-18)
Date Opened: 2000-09-19 Date Closed: none
ODMQueryExecuteis defined to provide partial results. When a query against multiple DMS integrations is able to obtain results from only a portion of them,
ODM_E_PARTIALSUCCESSis to be returned.
In the implementations of the ODMA 2.0 Connection Managers, versions
Odma.dll2.0.0, there is an error such that
ODM_E_PARTIALSUCCESSis never reported. Instead, when there is a partial result
ODMQueryExecutewill provide an
This situation is considered important: the functionality defined for ODMA is not being delivered. There have been no reported incidents of this as an experienced failure in actual usage of ODMA. This is attributed to the rarity of ODMA-aware applications that provide use of the ODMA-1.5-introduced query extensions. Also, partial results masquerading as complete results are easily overlooked -- or attributed to DMS problems.
The following actions are proposed:
- Record the existence of of the problem and establish an incident report as notification and as documentation of the repair that is needed. [2000-09-20: Completed]
- In the ODMA 2.0 Specification Errata, identify the improper designation of
ODM_E_PARTIALSUCCESSas a failure (
E) code rather than a warning (
W) code and propose introduction of
ODM_W_PARTIALSUCCESSas the preferred naming of the
ODMSTATUSvalue. This can be done as part of Incident X000301. [2000-09-20: Completed]
- Open a project for developing a maintenance and functionality release 2.0.1 of the ODMA 2.0 Connection Managers. That release will include the remedy for this incident, following more-comprehensive analysis. This will be project P000902. [2000-09-27: Project Opened]
- Produce an updated, tested Connection Manager in which the repair is confirmed.
- Announce the Connection Manager revision and have it be available for download.
- Close this incident report when (1-5) are complete and it is clear that proper operation of
ODMQueryExecuteis fully confirmed.
The following steps were taken to confirm the claims made in this incident report:
- The ODMA 2.0 Connection Manager source code for ODMA32.dll 2.0.0 was inspected and the reported defect wasn't found.
- The same source code was installed as a Microsoft VC++ 6.0 Project, after being put under source-code control on a development system. Recompiling using the original project files produced the error message that was reported by V. J. Mohan. In step (1), Dennis had looked for just the opposite error (
==was required). He also misread the consequences of the defective code when it was first located. Duhh.
- Analysis of the code around the error point revealed that
ODMClient::ClientQueryExecutehas the sequence
// Set the error code return value
if (odm == ODM_SUCCESS)
// no good results yet
// ... code for the true case ...
else odm == ODM_E_PARTIALSUCCESS;
=to ever assign
ODM_E_PARTIALSUCCESSto the return value.
- There are indications that this entire block of code needs to be carefully reviewed and the failure modes analyzed for accuracy of detection and for precision of return-value derivation.
created 2000-09-20-11:50 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 01-03-06 8:12 $
$$Revision: 4 $