<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
%CustomDTD;
]>
<appendix id="unsupported_jdbc">
  <title>Unsupported JDBC Methods</title>

  <para>Based upon the JDBC in JDK 1.6, this appendix details only those JDBC
  methods that ModeShape does not support, unless specified below.</para>

  <para>The jdbc driver does not support Transactions or updates.</para>

  <para>Where specified, some listed methods do not throw an exception, but
  possibly exhibit unexpected behavior. If no arguments are specified, then
  all related (overridden) methods are not supported. If an argument is listed
  then only those forms of the method specified are not supported.</para>

  <section>
    <title>Connection Limitations</title>

    <itemizedlist>
      <listitem>
        <para>Read Only is the only option supported.</para>
      </listitem>

      <listitem>
        <para>Isolation level is always set to
        Connection.TRANSACTION_READ_COMMITTED</para>
      </listitem>
    </itemizedlist>
  </section>

  <section>
    <title>ResultSet Limitations</title>

    <itemizedlist>
      <listitem>
        <para>TYPE_FORWARD is the only option supported.</para>
      </listitem>

      <listitem>
        <para><code>UPDATABLE</code> ResultSets are not supported.</para>
      </listitem>

      <listitem>
        <para>Returning multiple ResultSets from Procedure execution is not
        supported.</para>
      </listitem>
    </itemizedlist>
  </section>

  <section>
    <title>Unsupported Classes and Methods in "java.sql"</title>

    <table frame="all">
      <title></title>

      <tgroup align="left" cols="2" colsep="1" rowsep="1">
        <colspec colname="c1" colwidth="1*" />

        <colspec colname="c2" colwidth="2*" />

        <thead>
          <row>
            <entry>Class name</entry>

            <entry>Methods</entry>
          </row>
        </thead>

        <tbody>
          <row>
            <entry><code>Array</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>Blob</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>CallableStatement</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>Clob</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>Connection</code></entry>

            <entry><programlisting>
createArrayOf - throws SQLFeatureNotSupportedException
createBlob - throws SQLFeatureNotSupportedException
createClob - throws SQLFeatureNotSupportedException
createNClob - throws SQLFeatureNotSupportedException
createSQLXML - throws SQLFeatureNotSupportedException
createStatement(int resultSetType,int resultSetConcurrency) - throws SQLFeatureNotSupportedException
createStatement(int resultSetType,int resultSetConcurrency, int resultSetHoldability) - throws SQLFeatureNotSupportedException
createStruct(String typeName, Object[] attributes) - throws SQLFeatureNotSupportedException
getHoldability - throws SQLFeatureNotSupportedException
prepareCall - throws SQLFeatureNotSupportedException
prepareStatement - throws SQLFeatureNotSupportedException
releaseSavepoint - throws SQLFeatureNotSupportedException
rollback(Savepoint savepoint) - throws SQLFeatureNotSupportedException
setHoldability - throws SQLFeatureNotSupportedException
setSavepoint - throws SQLFeatureNotSupportedException
setTypeMap - throws SQLFeatureNotSupportedException
                            </programlisting></entry>
          </row>

          <row>
            <entry><code>DatabaseMetaData</code></entry>

            <entry><programlisting>
getAttributes - throws SQLFeatureNotSupportedException
getBestRowIdentifier - throws SQLFeatureNotSupportedException
getClientInfoProperties  - throws SQLFeatureNotSupportedException
getColumnPrivileges - throws SQLFeatureNotSupportedException
getCrossReference - throws SQLFeatureNotSupportedException
getExportedKeys - throws SQLFeatureNotSupportedException
getFunctionColumns - throws SQLFeatureNotSupportedException
getFunctions - throws SQLFeatureNotSupportedException
getImportedKeys - throws SQLFeatureNotSupportedException
getIndexInfo - throws SQLFeatureNotSupportedException
getPrimaryKeys - throws SQLFeatureNotSupportedException
getProcedureColumns - throws SQLFeatureNotSupportedException
getProcedures - throws SQLFeatureNotSupportedException
getSuperTables - throws SQLFeatureNotSupportedException
getSuperTypes - throws SQLFeatureNotSupportedException
getTablePrivileges - throws SQLFeatureNotSupportedException
getTypeInfo - throws SQLFeatureNotSupportedException
getUDTs - throws SQLFeatureNotSupportedException
getVersionColumns - throws SQLFeatureNotSupportedException
                            </programlisting></entry>
          </row>

          <row>
            <entry><code>NClob</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>PreparedStatement</code></entry>

            <entry><programlisting>Not Supported               </programlisting></entry>
          </row>

          <row>
            <entry><code>Ref</code></entry>

            <entry><code>Not Implemented</code></entry>
          </row>

          <row>
            <entry><code>ResultSet</code></entry>

            <entry><programlisting>absolute - throws SQLException - indicates FORWARD ONLY supported
afterLast - throws SQLException - indicates FORWARD ONLY supported
beforeFirst - throws SQLException - indicates FORWARD ONLY supported
cancelRowUpdates - throws SQLFeatureNotSupportedException
deleteRow - throws SQLFeatureNotSupportedException
first - throws SQLException - indicates FORWARD ONLY supported
getArray - throws SQLFeatureNotSupportedException
getAsciiStream - throws SQLFeatureNotSupportedException
getBigDecimal - throws SQLFeatureNotSupportedException
getBlob - throws SQLFeatureNotSupportedException
getByte - throws SQLFeatureNotSupportedException
getCharacterStream - throws SQLFeatureNotSupportedException
getClob - throws SQLFeatureNotSupportedException
getCursorName - throws SQLFeatureNotSupportedException
getDate(int, Calendar) - throws SQLFeatureNotSupportedException
getDate(String, Calendar) - throws SQLFeatureNotSupportedException
getFloat - throws SQLFeatureNotSupportedException
getNCharacterStream - throws SQLFeatureNotSupportedException
getNClob - throws SQLFeatureNotSupportedException
getNString - throws SQLFeatureNotSupportedException
getObject(*, Map&amp;lt;String, Class&amp;lt;?&amp;gt;&amp;gt; map) - throws SQLFeatureNotSupportedException
getRef - throws SQLFeatureNotSupportedException
getRowId - throws SQLFeatureNotSupportedException
getSQLXML - throws SQLFeatureNotSupportedException
getShort - throws SQLFeatureNotSupportedException
getTime(int, Calendar) - throws SQLFeatureNotSupportedException
getTime(String, Calendar) - throws SQLFeatureNotSupportedException
getTimestamp - throws SQLFeatureNotSupportedException
getUnicodeStream - throws SQLFeatureNotSupportedException
getURL - throws SQLFeatureNotSupportedException
insertRow - throws SQLFeatureNotSupportedException
last - throws SQLException - indicates FORWARD ONLY supported
moveToCurrentRow - throws SQLException - indicates FORWARD ONLY supported
moveToInsertRow - throws SQLFeatureNotSupportedException
previous - throws SQLException - indicates FORWARD ONLY supported
refreshRow - throws SQLException - indicates FORWARD ONLY supported
relative - throws SQLException - indicates FORWARD ONLY supported
rowDeleted - throws SQLFeatureNotSupportedException
rowInserted - throws SQLFeatureNotSupportedException
rowUpdated - throws SQLFeatureNotSupportedException
setFetchDirection - throws SQLFeatureNotSupportedException
update*  - throws SQLFeatureNotSupportedException
                            </programlisting></entry>
          </row>

          <row>
            <entry><code>RowId</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>Savepoint</code></entry>

            <entry><code>not Supported</code></entry>
          </row>

          <row>
            <entry><code>SQLData</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>SQLInput</code></entry>

            <entry><code>not Supported</code></entry>
          </row>

          <row>
            <entry><code>SQLOutput</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>Statement</code></entry>

            <entry><programlisting>
addBatch - throws SQLFeatureNotSupportedException
clearBatch - throws SQLFeatureNotSupportedException

execute(String, int)
execute(String, int[])
execute(String, String[])
executeBatch - throws SQLFeatureNotSupportedException
executeUpdate - throws SQLFeatureNotSupportedException

getGeneratedKeys()
getResultSetHoldability()
setCursorName(String) - throws SQLFeatureNotSupportedException
setFetchSize(int)
                            </programlisting></entry>
          </row>

          <row>
            <entry><code>Struct</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>
        </tbody>
      </tgroup>
    </table>
  </section>

  <section>
    <title>Unsupported Classes and Methods in "javax.sql"</title>

    <table frame="all">
      <title>Connection Properties</title>

      <tgroup align="left" cols="2" colsep="1" rowsep="1">
        <colspec colname="c1" colwidth="1*" />

        <colspec colname="c2" colwidth="2*" />

        <thead>
          <row>
            <entry>Class name</entry>

            <entry>Methods</entry>
          </row>
        </thead>

        <tbody>
			<row>
            <entry><code>DataSource</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>
          <row>
            <entry><code>RowSet*</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>

          <row>
            <entry><code>StatementEventListener</code></entry>

            <entry><code>Not Supported</code></entry>
          </row>
        </tbody>
      </tgroup>
    </table>
  </section>
</appendix>
