You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mp...@apache.org on 2006/08/22 23:28:55 UTC
svn commit: r433761 [18/18] - in /incubator/openjpa/trunk/openjpa-project:
./ src/doc/manual/
Added: incubator/openjpa/trunk/openjpa-project/src/doc/manual/supported_databases.xml
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-project/src/doc/manual/supported_databases.xml?rev=433761&view=auto
==============================================================================
--- incubator/openjpa/trunk/openjpa-project/src/doc/manual/supported_databases.xml (added)
+++ incubator/openjpa/trunk/openjpa-project/src/doc/manual/supported_databases.xml Tue Aug 22 14:28:53 2006
@@ -0,0 +1,623 @@
+
+ <appendix id="supported_databases">
+ <title>Supported Databases</title>
+ <para>
+ Following is a table of the database and JDBC driver
+ versions that are supported by OpenJPA <phrase>JPA</phrase>.
+ <table tocentry="1"><title>Supported Databases and JDBC Drivers</title><tgroup rowsep="1" colsep="1" align="left" cols="4"><colspec colname="dbname"/><colspec colname="dbversion"/><colspec colname="drivname"/><colspec colname="drivversion"/><thead><row><entry colname="dbname">Database Name</entry><entry colname="dbversion">Database Version</entry><entry colname="drivname">JDBC Driver Name</entry><entry colname="drivversion">JDBC Driver Version</entry></row></thead><tbody><row><entry colname="dbname">Apache Derby</entry><entry colname="dbversion">10.1.2.1</entry><entry colname="drivname">Apache Derby Embedded JDBC Driver</entry><entry colname="drivversion">10.1.2.1</entry></row><row><entry colname="dbname">Borland Interbase</entry><entry colname="dbversion">7.1.0.202</entry><entry colname="drivname">Interclient</entry><entry colname="drivversion">4.5.1</entry></row><row><entry colname="dbname">Borland JDataStore</entry><entry colname="dbversion">6.0</entry><entry colname="d
rivname">
+ Borland JDataStore
+ </entry><entry colname="drivversion">6.0</entry></row><row><entry colname="dbname">DB2</entry><entry colname="dbversion">8.1</entry><entry colname="drivname">
+ IBM DB2 JDBC Universal Driver
+ </entry><entry colname="drivversion">1.0.581</entry></row><row><entry colname="dbname">Empress</entry><entry colname="dbversion">8.62</entry><entry colname="drivname">
+ Empress Category 2 JDBC Driver
+ </entry><entry colname="drivversion">8.62</entry></row><row><entry colname="dbname">Firebird</entry><entry colname="dbversion">1.5</entry><entry colname="drivname">JayBird JCA/JDBC driver</entry><entry colname="drivversion">1.0.1</entry></row><row><entry colname="dbname">Hypersonic Database Engine</entry><entry colname="dbversion">1.8.0</entry><entry colname="drivname">Hypersonic</entry><entry colname="drivversion">1.8.0</entry></row><row><entry colname="dbname">Informix Dynamic Server</entry><entry colname="dbversion">9.30.UC10</entry><entry colname="drivname">Informix JDBC driver</entry><entry colname="drivversion">2.21.JC2</entry></row><row><entry colname="dbname">InterSystems Cache</entry><entry colname="dbversion">5.0</entry><entry colname="drivname">Cache JDBC Driver</entry><entry colname="drivversion">5.0</entry></row><row><entry colname="dbname">Microsoft Access</entry><entry colname="dbversion">9.0 (a.k.a. "2000")</entry><entry colname="drivname">
+ DataDirect SequeLink
+ </entry><entry colname="drivversion">5.4.0038</entry></row><row><entry colname="dbname">Microsoft SQL Server</entry><entry colname="dbversion">
+ 9.00.1399 (SQL Server 2005)
+ </entry><entry colname="drivname">SQLServer</entry><entry colname="drivversion">1.0.809.102</entry></row><row><entry colname="dbname">Microsoft Visual FoxPro</entry><entry colname="dbversion">7.0</entry><entry colname="drivname">
+ DataDirect SequeLink
+ </entry><entry colname="drivversion">5.4.0038</entry></row><row><entry colname="dbname">MySQL</entry><entry colname="dbversion">3.23.43-log</entry><entry colname="drivname">MySQL Driver</entry><entry colname="drivversion">3.0.14</entry></row><row><entry colname="dbname">Oracle</entry><entry colname="dbversion">8.1,9.2,10.1</entry><entry colname="drivname">Oracle JDBC driver</entry><entry colname="drivversion">10.2.0.1.0</entry></row><row><entry colname="dbname">Pointbase</entry><entry colname="dbversion">4.4</entry><entry colname="drivname">Pointbase JDBC driver</entry><entry colname="drivversion">4.4 (4.4) </entry></row><row><entry colname="dbname">PostgreSQL</entry><entry colname="dbversion">7.2.1</entry><entry colname="drivname">PostgreSQL Native Driver</entry><entry colname="drivversion">7.2 (7.2)</entry></row><row><entry colname="dbname">
+ Sybase Adaptive Server Enterprise
+ </entry><entry colname="dbversion">12.5</entry><entry colname="drivname">jConnect</entry><entry colname="drivversion">5.5 (5.5)</entry></row></tbody></tgroup></table>
+ </para>
+ <section id="dbsupport_derby">
+ <title>Apache Derby</title>
+ <example id="example_props_derby">
+ <title>Example properties for Derby</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: org.apache.derby.jdbc.EmbeddedDriver
+openjpa.ConnectionURL: jdbc:derby:DB_NAME;create=true
+</programlisting>
+ </example>
+ </section>
+ <section id="dbsupport_interbase">
+ <title>Borland Interbase</title>
+ <example id="example_props_interbase">
+ <title>Example properties for Interbase</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: interbase.interclient.Driver
+openjpa.ConnectionURL: jdbc:interbase://SERVER_NAME:SERVER_PORT/DB_PATH
+</programlisting>
+ </example>
+ <section id="dbsupport_interbase_issues">
+ <title>Known issues with Interbase</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Interbase does not support record locking, so datastore
+ transactions cannot use the pessimistic lock manager.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Interbase does not support the
+ <literal>LOWER</literal>, <literal>SUBSTRING</literal>,
+ or <literal>INSTR</literal> SQL functions,
+ which means that
+ <methodname>toLowerCase()</methodname>,
+ <methodname>indexOf()</methodname>,
+ and <methodname>substring()</methodname>
+ methods in <phrase>JPA</phrase>QL cannot be used.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_jdatastore">
+ <title>JDataStore</title>
+ <example id="example_props_jdatastore">
+ <title>Example properties for JDataStore</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.borland.datastore.jdbc.DataStoreDriver
+openjpa.ConnectionURL: jdbc:borland:dslocal:db-jdatastore.jds;create=true
+</programlisting>
+ </example>
+ </section>
+ <section id="dbsupport_db2">
+ <title>IBM DB2</title>
+ <example id="example_props_db2">
+ <title>Example properties for IBM DB2</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.ibm.db2.jcc.DB2Driver
+openjpa.ConnectionURL: jdbc:db2://SERVER_NAME:SERVER_PORT/DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_db2_issues">
+ <title>Known issues with DB2</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>Floats and doubles may lose precision when stored.</para>
+ </listitem>
+ <listitem>
+ <para>Empty char values are stored as NULL.</para>
+ </listitem>
+ <listitem>
+ <para>
+ Fields of type BLOB and CLOB are limited to 1M. This number can be
+ increased by extending <classname>DB2Dictionary</classname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_empress">
+ <title>Empress</title>
+ <example id="example_props_empress">
+ <title>Example properties for Empress</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: empress.jdbc.empressDriver
+openjpa.ConnectionURL: jdbc:empress://SERVER=yourserver;PORT=6322;DATABASE=yourdb
+</programlisting>
+ </example>
+ <section id="dbsupport_empress_issues">
+ <title>Known issues with Empress</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Empress enforces pessimistic semantics (lock
+ on read) when not using
+ <literal>AllowConcurrentRead</literal> property
+ (which bypasses row locking) for
+ <classname>EmpressDictionary</classname>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Only the category 2 non-local driver is supported.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_hypersonic">
+ <title>Hypersonic</title>
+ <example id="example_props_hypersonic">
+ <title>Example properties for Hypersonic</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: org.hsqldb.jdbcDriver
+openjpa.ConnectionURL: jdbc:hsqldb:DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_hypersonic_issues">
+ <title>Known issues with Hypersonic</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Hypersonic does not properly support foreign key
+ constraints.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Hypersonic does not support pessimistic locking,
+ so non-optimistic transactions will fail unless
+ the <literal>SimulateLocking</literal> property
+ is set for the <link linkend="openjpa.jdbc.DBDictionary">
+ openjpa.jdbc.DBDictionary</link>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_firebird">
+ <title>Firebird</title>
+ <example id="example_props_firebird">
+ <title>Example properties for Firebird</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: org.firebirdsql.jdbc.FBDriver
+openjpa.ConnectionURL: jdbc:firebirdsql://SERVER_NAME:SERVER_PORT/DB_PATH
+</programlisting>
+ </example>
+ <section id="dbsupport_firebird_issues">
+ <title>Known issues with Firebird</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The Firebird JDBC driver does not have proper support
+ for batch updates, so batch updates are disabled.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Firebird does not support auto-increment columns.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Firebird does not support the
+ <literal>LOWER</literal>, <literal>SUBSTRING</literal>,
+ or <literal>INSTR</literal> SQL functions,
+ which means that
+ <methodname>toLowerCase()</methodname>,
+ <methodname>indexOf()</methodname>,
+ and <methodname>substring()</methodname>
+ methods in <phrase>JPA</phrase>QL cannot be used.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_informix">
+ <title>Informix</title>
+ <example id="example_props_informix">
+ <title>Example properties for Informix Dynamic Server</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.informix.jdbc.IfxDriver
+openjpa.ConnectionURL: \
+ jdbc:informix-sqli://SERVER_NAME:SERVER_PORT/DB_NAME:INFORMIXSERVER=SERVER_ID
+</programlisting>
+ </example>
+ <section id="dbsupport_informix_issues">
+ <title>Known issues with Informix</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ none
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_intersystems_cache">
+ <title>InterSystems Cache</title>
+ <example id="example_props_intersystems_cache">
+ <title>Example properties for InterSystems Cache</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.intersys.jdbc.CacheDriver
+openjpa.ConnectionURL: jdbc:Cache://SERVER_NAME:SERVER_PORT/DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_intersystems_cache_issues">
+ <title>Known issues with InterSystems Cache</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Support for Cache is done via SQL access over JDBC, not
+ through their object database APIs.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_access">
+ <title>Microsoft Access</title>
+ <example id="example_props_access">
+ <title>Example properties for Microsoft Access</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.ddtek.jdbc.sequelink.SequeLinkDriver
+openjpa.ConnectionURL: jdbc:sequelink://SERVER_NAME:SERVER_PORT
+</programlisting>
+ </example>
+ <section id="dbsupport_access_issues">
+ <title>Known issues with Microsoft Access</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>Using the Sun JDBC-ODBC bridge to connect
+ is not supported.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_sqlserver">
+ <title>Microsoft SQL Server</title>
+ <example id="example_props_sqlserver">
+ <title>Example properties for Microsoft SQLServer</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
+openjpa.ConnectionURL: \
+ jdbc:sqlserver://SERVER_NAME:1433;DatabaseName=DB_NAME;selectMethod=cursor;sendStringParametersAsUnicode=false
+</programlisting>
+ </example>
+ <section id="dbsupport_sqlserver_issues">
+ <title>Known issues with SQL Server</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ SQL Server date fields are accurate only to the
+ nearest 3 milliseconds, possibly resulting in
+ precision loss in stored dates.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The ConnectionURL must always contain the
+ "<literal>selectMethod=cursor</literal>" string.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Adding <literal>sendStringParametersAsUnicode=false
+ </literal> to the ConnectionURL may significantly
+ increase performance.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The Microsoft SQL Server driver only emulates
+ batch updates. The DataDirect JDBC driver has
+ true support for batch updates, and may result
+ in a significant performance gain.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Floats and doubles may lose precision when stored.
+ </para>
+ </listitem>
+ <listitem>
+ <para><literal>TEXT</literal> columns cannot be used
+ in queries.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_foxpro">
+ <title>Microsoft FoxPro</title>
+ <example id="example_props_foxpro">
+ <title>Example properties for Microsoft FoxPro</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.ddtek.jdbc.sequelink.SequeLinkDriver
+openjpa.ConnectionURL: jdbc:sequelink://SERVER_NAME:SERVER_PORT
+</programlisting>
+ </example>
+ <section id="dbsupport_foxpro_issues">
+ <title>Known issues with Microsoft FoxPro</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>Using the Sun JDBC-ODBC bridge to connect
+ is not supported.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_mysql">
+ <title>MySQL</title>
+ <example id="example_props_mysql">
+ <title>Example properties for MySQL</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.mysql.jdbc.Driver
+openjpa.ConnectionURL: jdbc:mysql://SERVER_NAME/DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_mysql_issues">
+ <title>Known issues with MySQL</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The default table types that MySQL uses do not
+ support transactions, which will prevent OpenJPA from
+ being able to roll back transactions. Use the
+ <literal>InnoDB</literal> table type
+ for any tables that OpenJPA will access.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ MySQL does not support sub-selects in versions
+ prior to 4.1, and are disabled by default. Some
+ operations (such as the <function>isEmpty()</function>
+ method in a query) will fail due to this. If
+ you are using MySQL 4.1 or later, you can lift
+ this restriction by setting the
+ <literal>SupportsSubselect=true</literal> parameter
+ of the <link linkend="openjpa.jdbc.DBDictionary">openjpa.jdbc.DBDictionary</link> property.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Rollback due to database error or optimistic lock
+ violation is not supported unless the table type
+ is one of the MySQL transactional types. Explicit
+ calls to <function>rollback()</function> before a
+ transaction has been committed, however, are
+ always supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Floats and doubles may lose precision when stored
+ in some datastores.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When storing a field of type
+ <classname>java.math.BigDecimal</classname>, some
+ datastores will add extraneous trailing 0
+ characters, causing an equality mismatch between
+ the field that is stored and the field that is
+ retrieved.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Some version of the MySQL JDBC driver have a bug
+ that prevents OpenJPA from being able to interrogate
+ the database for foreign keys. Version
+ 3.0.14 (or higher) of the MySQL driver is required
+ in order to get around this bug.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_oracle">
+ <title>Oracle</title>
+ <example id="example_props_oracle">
+ <title>Example properties for Oracle</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: oracle.jdbc.driver.OracleDriver
+openjpa.ConnectionURL: jdbc:oracle:thin:@SERVER_NAME:1521:DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_oracle_query_hints">
+ <title>Using Query Hints with Oracle</title>
+ <para>
+ Oracle has support for "query hints", which are formatted
+ comments embedded in SQL that provide some hint for
+ how the query should be executed. These hints are usually
+ designed to provide suggestions to the Oracle query
+ optimizer for how to efficiently perform a certainly query,
+ and aren't typically needed for any but the most intensive
+ queries.
+ </para>
+ <example id="dbsupport_oracle_query_hints_ex">
+ <title>Using Oracle Hints</title>
+ <programlisting format="linespecific">
+Query query = pm.createQuery (...);
+query.addExtension (org.apache.openjpa.jdbc.sql.OracleDictionary.SELECT_HINT,
+ "/*+ first_rows(100) */");
+List results = (List) query.execute ();
+</programlisting>
+ <programlisting format="linespecific">
+Query query = em.createQuery (...);
+query.setHint (org.apache.openjpa.jdbc.sql.OracleDictionary.SELECT_HINT,
+ "/*+ first_rows(100) */");
+List results = query.getResultList ();
+</programlisting>
+ </example>
+ </section>
+ <section id="dbsupport_oracle_issues">
+ <title>Known issues with Oracle</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The Oracle JDBC driver has significant differences
+ between different versions. It is important to
+ use the officially supported version of the driver
+ (10.2.0.1.0), which is backward compatible
+ with previous versions of the Oracle server.
+ It can be downloaded from
+ <ulink url="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101040.html">http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101040.html</ulink>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ For VARCHAR fields, <literal>null</literal>
+ and a blank string are equivalent. This means that
+ an object that stores a null string field will
+ have it get read back as a blank string.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle corp's JDBC driver for Oracle has only limited
+ support for batch updates. The result for OpenJPA is
+ that in some cases, the exact object that failed an
+ optimistic lock check cannot be determined, and OpenJPA
+ will throw an <classname>OptimisticVerificationException</classname> with
+ more failed objects than actually failed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle cannot store numbers with more than 38 digits
+ in numeric columns.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Floats and doubles may lose precision when stored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ CLOB columns cannot be used in queries.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_pointbase">
+ <title>Pointbase</title>
+ <example id="example_props_pointbase">
+ <title>Example properties for Pointbase</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.pointbase.jdbc.jdbcUniversalDriver
+openjpa.ConnectionURL: \
+ jdbc:pointbase:DB_NAME,database.home=pointbasedb,create=true,cache.size=10000,database.pagesize=30720
+</programlisting>
+ </example>
+ <section id="dbsupport_pointbase_issues">
+ <title>Known issues with Pointbase</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Fields of type BLOB and CLOB are limited to 1M. This number can be
+ increased by extending <classname>PointbaseDictionary</classname>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_postgresql">
+ <title>PostgreSQL</title>
+ <example id="example_props_postgresql">
+ <title>Example properties for PostgreSQL</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: org.postgresql.Driver
+openjpa.ConnectionURL: jdbc:postgresql://SERVER_NAME:5432/DB_NAME
+</programlisting>
+ </example>
+ <section id="dbsupport_postgresql_issues">
+ <title>Known issues with PostgreSQL</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Floats and doubles may lose precision when stored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgreSQL cannot store very low and very high dates.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Empty string/char values are stored as NULL.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ <section id="dbsupport_sybase">
+ <title>Sybase Adaptive Server</title>
+ <example id="example_props_sybase">
+ <title>Example properties for Sybase</title>
+ <programlisting format="linespecific">
+openjpa.ConnectionDriverName: com.sybase.jdbc2.jdbc.SybDriver
+openjpa.ConnectionURL: \
+ jdbc:sybase:Tds:SERVER_NAME:4100/DB_NAME?ServiceName=DB_NAME&BE_AS_JDBC_COMPLIANT_AS_POSSIBLE=true
+</programlisting>
+ </example>
+ <section id="dbsupport_sybase_issues">
+ <title>Known issues with Sybase</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The "<literal>DYNAMIC_PREPARE</literal>" parameter
+ of the Sybase JDBC driver cannot be used with OpenJPA.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Datastore locking cannot be used when manipulating
+ many-to-many relations using the default OpenJPA
+ schema created by the schematool,
+ unless an auto-increment primary key field is
+ manually added to the table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Persisting a zero-length string results in a
+ string with a single space characted being returned
+ from Sybase, Inc.'s JDBC driver.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>BE_AS_JDBC_COMPLIANT_AS_POSSIBLE</literal>
+ is required in order to use datastore (pessimistic)
+ locking. Failure to set this property may lead
+ to obscure errors like "<literal>FOR UPDATE can
+ not be used in a SELECT which is not part of
+ the declaration of a cursor or which is not
+ inside a stored procedure.</literal>".
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+ </appendix>