Changes between Version 3 and Version 4 of FDORfc35


Ignore:
Timestamp:
06/08/09 13:18:08 (16 years ago)
Author:
danstoica
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FDORfc35

    v3 v4  
    1313||RFC Status||draft||
    1414||Implementation Status||draft||
    15 ||Proposed Milestone||3.4.0.0||
     15||Proposed Milestone||3.5.0.0||
    1616||Assigned PSC guide(s)||Greg Boone||
    1717||'''Voting History'''|| ||
     
    2323== Overview ==
    2424
    25 This RFC is for changing the behavior of GetCapabilitiesX().
     25This RFC is for changing the behavior of FdoIConnection::GetXCapabilities().
    2626
    2727== Motivation ==
    2828
    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.
     29There 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.
    3030
    3131== Proposed Solution ==
    3232
    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.
     33Change the behavior of GetXCapabilities(). On an open connection it will retrieve the exact capabilities, specific for that database.
     34On a closed connection the current behavior will be preserved and provider level capabilities will be returned.
     35
     36Another solution was considered. It consisists in adding a flag on each GetXCapabilities() method, like:
     37{{{
     38FDO_API virtual FdoIConnectCapabilities *GetConnectionCapabilities(bool dataStoreLevel = false) = 0;
     39}}}
     40
     41This 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
    3543
    3644== Implications ==
     45
     46Several cases have been identified so far as good candidates for improvements:
     47
     48SQLite, SDF, SHP: fix SupportsWrite() capability for the case of read-only files.
     49MySQL: depends on the storage driver; fix GetCommands() to indicate apply schema is only supported if FDO metadata.
     50ODBC: we officially support 6-7 data sources and we need to check all the capabilities.
     51Oracle: Oracle express does not support long transaction. Fix GetCommands() so it doesn't return long transaction related commands.
    3752
    3853
    3954== Test Plan ==
    4055
     56Existing provider units tests to be enhanched to exercise the changes.
    4157
    4258== Funding/Resources ==