Apache Tuscany > Home > DAS Overview > DAS Java > DAS Java Documentation Menu > DAS Java Developer Guide > RDB DAS Java > RDB DAS - User Guide > Explicit ResultSet shape definition User List | Dev List | Issue Tracker  

Explicit ResultSet shape definition

The RDB DAS provides the ability to specify format(shape) of the ResultSet. This is necessary when the JDBC driver in use does not provide adequate support for ResultSetMetaData. Also, we expect that specifying the result set shape will increase the performance. The following is the provision in RDB DAS config to specify result set shape:

<xsd:complexType name="Command">
   <xsd:sequence>
     ....
      <xsd:element  maxOccurs="unbounded" minOccurs="0"
            name="ResultDescriptor"  type="config:ResultDescriptor"/>
   </xsd:sequence>
   ....
</xsd:complexType>

<xsd:complexType name="ResultDescriptor">
   <xsd:attribute name="columnIndex" type="xsd:int" default="-1"/>
   <xsd:attribute name="columnName" type="xsd:string"/>
   <xsd:attribute name="tableName" type="xsd:string"/>
   <xsd:attribute name="schemaName" type="xsd:string"/>
   <xsd:attribute name="columnType" type="xsd:string"/>
</xsd:complexType>
...

The following is an example config file that defines a result set shape: :

<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
  <Command name="literal" SQL="Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer" kind="Select">
     <ResultDescriptor columnName="ID" tableName="CUSTOMER"
         columnType="commonj.sdo.Long"/>
     <ResultDescriptor columnName="LASTNAME" tableName="CUSTOMER"
         columnType="commonj.sdo.String"/>
     <ResultDescriptor columnName="ADDRESS" tableName="CUSTOMER"
        columnType="commonj.sdo.String"/>
  </Command>
   <Table tableName="CUSTOMER">        <Column columnName="ID" converterClassName="org.apache.tuscany.das.rdb.test.mappings.StringToLongConverter"/>
   </Table>
</Config>

Result Descriptor on Dynamic Commands

Allow passing ResultDescriptor to Dynamic Commands. i.e. Command x = das.createCommand("y");
x can have set/get of single/list of ResultDescriptors. Useful for databases like Oracle
which require user to pass ResultDescriptor and for cases when the commands are created dynamically
using createCommand()

website stats