= FDO RFC 46 - Schema Attributes Capability = This page contains a request for comments document (RFC) for the FDO Open Source project. More FDO RFCs can be found on the [wiki:FDORfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||(Dec. 23 2009)|| ||Last Modified||(Jackie Ng) [[Timestamp]]|| ||Author||(Jackie Ng)|| ||RFC Status||(draft)|| ||Implementation Status||(draft)|| ||Proposed Milestone||(3.5.0.0)|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||+1|||| ||+0|||| ||-0|||| ||-1|||| == Overview == The RFC extends the FDO capability API so that providers can indicate support for persistence of custom schema attributes. == Motivation == Quoting the API description of [http://fdo.osgeo.org/files/fdo/docs/FDO_API/d1/d91/class_fdo_schema_attribute_dictionary.htm FdoSchemaAttributeDictionary]: The FdoSchemaAttributeDictionary class maintains a dictionary of named attributes that provide a generic extensibility mechanism for objects in the feature schema. This mechanism can be used to dynamically extend schema elements in either an application or provider-specific manner. It has come to my attention that not all providers support the persistence of custom schema attributes. At the moment there is no way for a client application to determine if a given provider has the ability to persist any custom attributes/metadata that would be attached to a Feature Schema (that is used for a FdoIApplySchema command) == Proposed Solution == Add a new API to FdoISchemaCapabilities: {{{ /// \brief /// Determines if the provider supports persistence of custom attributes in schema /// elements (Feature Schema, Class Definition, Property Definition) /// /// \return /// Returns true if the provider supports custom schema attributes /// FDO_API virtual bool SupportsCustomSchemaAttributes() = 0; }}} Providers will need to implement this new API and indicate their support. Providers that can persist custom schema attributes would return true. Providers that can't would return false. To my current knowledge, the current level of support is as follows: ||Provider||Supports custom attributes|| ||SDF||false|| ||SHP||false|| ||ArcSDE||false|| ||WFS||false|| ||WMS||false|| ||ODBC||false|| ||MySQL||true|| ||GDAL||false|| ||OGR||false|| ||PostGIS||false|| ||King.Oracle||false|| ||SQL Server||true|| ||SQLite||false|| This table is based on the assumption that providers based on the Generic RDBMS framework that utilise f_* metaschema tables (MySQL, SQL Server) would support custom attributes since they are stored in the f_sad table. OGR and ODBC are assumed to not support them due to the "catch-all" nature of these providers. Support in other providers is currently unknown and assumed to be false. A formal capability API would greatly clear such assumptions. == Implications == This is an API addition. This only affects client applications that wish to extend FDO feature schemas with custom metadata. It is unknown how much MapGuide will be affected. More discussions will reveal the extent that these changes will affect. == Funding/Resources == TBD