Changes between Version 3 and Version 4 of FDORfc35
- Timestamp:
- 06/08/09 13:18:08 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FDORfc35
v3 v4 13 13 ||RFC Status||draft|| 14 14 ||Implementation Status||draft|| 15 ||Proposed Milestone||3. 4.0.0||15 ||Proposed Milestone||3.5.0.0|| 16 16 ||Assigned PSC guide(s)||Greg Boone|| 17 17 ||'''Voting History'''|| || … … 23 23 == Overview == 24 24 25 This RFC is for changing the behavior of GetCapabilitiesX().25 This RFC is for changing the behavior of FdoIConnection::GetXCapabilities(). 26 26 27 27 == Motivation == 28 28 29 There are cases where a provider indicates support of a capability that is actually not supported by a data store the provider may connect to. For example, if an Oracle data store is not prepared for locking, this functionality is not supported in that data store although the provider itself is capable of providing the functionality. ODBC also can connect to a variety of sources, each with varying levels of capability. 29 There are cases where a provider indicates support of a capability that is actually not supported by a data store the provider may connect to. For example, if an Oracle data store is not prepared for locking, this functionality is not supported in that data store although the provider itself is capable of providing the functionality. ODBC also can connect to a variety of sources, each with varying levels of capability. Or there are cases where a user connected to a data store may not have the permission to write. This may be because the data store has a read-only flag (SHP, SDF) or a user has not been granted permissions to write to a data store (RDBMS). In this case, the information the provider level capability SupportsWrite returns is incorrect. 30 30 31 31 == Proposed Solution == 32 32 33 Change the behavior of GetCapabilities. On an open connection it will retrieve the exact capabilities, specific for that database. 34 On a closed connection the current behavior will be preserved and provider level capaabilities will be returned to the caller. 33 Change the behavior of GetXCapabilities(). On an open connection it will retrieve the exact capabilities, specific for that database. 34 On a closed connection the current behavior will be preserved and provider level capabilities will be returned. 35 36 Another solution was considered. It consisists in adding a flag on each GetXCapabilities() method, like: 37 {{{ 38 FDO_API virtual FdoIConnectCapabilities *GetConnectionCapabilities(bool dataStoreLevel = false) = 0; 39 }}} 40 41 This alternative suggests that might be cases when a less accurate response is preferred over the exact one. Therefore it is unlikely 2 signatures are needed. 42 35 43 36 44 == Implications == 45 46 Several cases have been identified so far as good candidates for improvements: 47 48 SQLite, SDF, SHP: fix SupportsWrite() capability for the case of read-only files. 49 MySQL: depends on the storage driver; fix GetCommands() to indicate apply schema is only supported if FDO metadata. 50 ODBC: we officially support 6-7 data sources and we need to check all the capabilities. 51 Oracle: Oracle express does not support long transaction. Fix GetCommands() so it doesn't return long transaction related commands. 37 52 38 53 39 54 == Test Plan == 40 55 56 Existing provider units tests to be enhanched to exercise the changes. 41 57 42 58 == Funding/Resources ==