You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Albert Lee <al...@gmail.com> on 2008/10/24 00:14:44 UTC
Re: svn commit: r707270 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/ openjpa-project/src/doc/ma
A couple of questions:
1) looks like logSQLWarning(warn) is only called from logSQLWarnings(stmt),
but warn will never be null, hence the warn == null check in logSQLWarning
is unnecessary. If there is only a "_log.trace(..." being call, would it be
more readable if the "_log.trace(" is in-line in logSQLWarnings()?
+ protected void logSQLWarnings(PreparedStatement stmt) {
+ if (stmt != null && _log != null && _log.isTraceEnabled()) {
+ try {
+ SQLWarning warn = stmt.getWarnings();
+ while (warn != null) {
+ logSQLWarning(warn);
+ warn = warn.getNextWarning();
+ } while (warn != null);
+ } catch (SQLException e) {}
+ }
+ }
+
+ /*
+ * Log the SQLWarning message. Some drivers report expected conditions
+ * such as "no rows returned" as a warning. These types of messages
can
+ * clutter up the default log very quickly, so trace level will be used
to
+ * log SQL warnings.
+ */
+ private void logSQLWarning(SQLWarning warn) {
+ if (warn != null) {
+ _log.trace(_loc.get("sql-warning", warn.getMessage()));
+ }
+ }
2) This feature is for Sybase but the listitem's id defined as
""OracleDictionary.IgnoreNumericTruncation". Is this correct?
+ <itemizedlist>
+ <listitem id="OracleDictionary.IgnoreNumericTruncation">
+ <para>
+ <indexterm>
+ <primary>
+ Sybase
+ </primary>
+ <secondary>
+ IgnoreNumericTruncation
+ </secondary>
+ </indexterm>
+<literal>IgnoreNumericTruncation</literal>: If true, Sybase will ignore
numeric
+truncation on SQL operations. Otherwise, if numeric trunctation is
detected,
+the operation will fail.
+ </para>
+ </listitem>
+ </itemizedlist>
Albert Lee
On Wed, Oct 22, 2008 at 11:43 PM, <jr...@apache.org> wrote:
> Author: jrbauer
> Date: Wed Oct 22 21:43:35 2008
> New Revision: 707270
>
> URL: http://svn.apache.org/viewvc?rev=707270&view=rev
> Log:
> OPENJPA-750: Added option to Sybase dictionary to ignore truncation
> warnings, added doc for new dictionary option, and code to log any
> SQLWarnings when update count isn't expected value.
>
> Modified:
>
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
>
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
>
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
>
> openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
>
> Modified:
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java?rev=707270&r1=707269&r2=707270&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> (original)
> +++
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> Wed Oct 22 21:43:35 2008
> @@ -55,7 +55,6 @@
> private List _batchedRows = new ArrayList();
> private int _batchLimit;
> private boolean _disableBatch = false;
> - private transient Log _log = null;
>
> /**
> * Constructor. Supply connection.
> @@ -64,7 +63,6 @@
> Connection conn, int batchLimit) {
> super(store, conn);
> _batchLimit = batchLimit;
> - _log =
> store.getConfiguration().getLog(JDBCConfiguration.LOG_JDBC);
> if (_log.isTraceEnabled())
> _log.trace(_loc.get("batch_limit",
> String.valueOf(_batchLimit)));
> }
> @@ -216,6 +214,7 @@
> row.flush(ps, _dict, _store);
> int count = executeUpdate(ps, row.getSQL(_dict), row);
> if (count != 1) {
> + logSQLWarnings(ps);
> Object failed = row.getFailedObject();
> if (failed != null)
> _exceptions.add(new OptimisticException(failed));
> @@ -280,6 +279,7 @@
> break;
> case 0: // no row is inserted, treats it as failed
> // case
> + logSQLWarnings(ps);
> if (failed != null)
> _exceptions.add(new OptimisticException(failed));
> else if (row.getAction() == Row.ACTION_INSERT)
>
> Modified:
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java?rev=707270&r1=707269&r2=707270&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> (original)
> +++
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> Wed Oct 22 21:43:35 2008
> @@ -22,11 +22,13 @@
> import java.sql.PreparedStatement;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> +import java.sql.SQLWarning;
> import java.util.ArrayList;
> import java.util.Collection;
> import java.util.LinkedList;
> import java.util.List;
>
> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
> import org.apache.openjpa.jdbc.meta.ClassMapping;
> import org.apache.openjpa.jdbc.schema.Column;
> import org.apache.openjpa.jdbc.sql.DBDictionary;
> @@ -34,6 +36,7 @@
> import org.apache.openjpa.jdbc.sql.RowImpl;
> import org.apache.openjpa.jdbc.sql.SQLExceptions;
> import org.apache.openjpa.kernel.OpenJPAStateManager;
> +import org.apache.openjpa.lib.log.Log;
> import org.apache.openjpa.lib.util.Localizer;
> import org.apache.openjpa.util.ApplicationIds;
> import org.apache.openjpa.util.OpenJPAException;
> @@ -53,6 +56,7 @@
> protected final JDBCStore _store;
> protected final Connection _conn;
> protected final DBDictionary _dict;
> + protected transient Log _log = null;
>
> // track exceptions
> protected final Collection _exceptions = new LinkedList();
> @@ -64,6 +68,8 @@
> _store = store;
> _dict = store.getDBDictionary();
> _conn = conn;
> + if (store.getConfiguration() != null)
> + _log =
> store.getConfiguration().getLog(JDBCConfiguration.LOG_JDBC);
> }
>
> public Collection getExceptions() {
> @@ -105,6 +111,7 @@
> try {
> int count = executeUpdate(stmnt, sql, row);
> if (count != 1) {
> + logSQLWarnings(stmnt);
> Object failed = row.getFailedObject();
> if (failed != null)
> _exceptions.add(new OptimisticException(failed));
> @@ -233,4 +240,32 @@
> else
> return _conn.prepareStatement(sql);
> }
> +
> + /**
> + * Provided the JDBC log category is logging warnings, this method
> will
> + * log any SQL warnings that result from the execution of a SQL
> statement.
> + */
> + protected void logSQLWarnings(PreparedStatement stmt) {
> + if (stmt != null && _log != null && _log.isTraceEnabled()) {
> + try {
> + SQLWarning warn = stmt.getWarnings();
> + while (warn != null) {
> + logSQLWarning(warn);
> + warn = warn.getNextWarning();
> + } while (warn != null);
> + } catch (SQLException e) {}
> + }
> + }
> +
> + /*
> + * Log the SQLWarning message. Some drivers report expected
> conditions
> + * such as "no rows returned" as a warning. These types of messages
> can
> + * clutter up the default log very quickly, so trace level will be
> used to
> + * log SQL warnings.
> + */
> + private void logSQLWarning(SQLWarning warn) {
> + if (warn != null) {
> + _log.trace(_loc.get("sql-warning", warn.getMessage()));
> + }
> + }
> }
>
> Modified:
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java?rev=707270&r1=707269&r2=707270&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> (original)
> +++
> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> Wed Oct 22 21:43:35 2008
> @@ -75,6 +75,13 @@
> */
> public String identityColumnName = "UNQ_INDEX";
>
> + /**
> + * If true, Sybase will ignore numeric truncation on insert or
> + * update operations. Otherwise, the operation will fail. The default
> + * value, false is in accordance with SQL92.
> + */
> + public boolean ignoreNumericTruncation = false;
> +
> public SybaseDictionary() {
> platform = "Sybase";
> schemaCase = SCHEMA_CASE_PRESERVE;
> @@ -277,6 +284,18 @@
> stmnt.execute();
> stmnt.close();
> }
> +
> + // By default, Sybase will fail to insert or update if a numeric
> + // truncation occurs as a result of, for example, loss of decimal
> + // precision. This setting specifies that the operation should
> not
> + // fail if a numeric truncation occurs.
> + if (ignoreNumericTruncation) {
> + String str = "set arithabort numeric_truncation off";
> + PreparedStatement stmnt = prepareStatement(conn, str);
> + stmnt.execute();
> + stmnt.close();
> + }
> +
> return new SybaseConnection(conn);
> }
>
>
> Modified:
> openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties?rev=707270&r1=707269&r2=707270&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> (original)
> +++
> openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> Wed Oct 22 21:43:35 2008
> @@ -117,3 +117,4 @@
> statement {1}.
> cache-hit: SQL Cache hit with key: {0} in {1}
> cache-missed: SQL Cache missed with key: {0} in {1}
> +sql-warning: The statement resulted in SQL warning: {0}
>
> Modified:
> openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml?rev=707270&r1=707269&r2=707270&view=diff
>
> ==============================================================================
> --- openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
> (original)
> +++ openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml Wed
> Oct 22 21:43:35 2008
> @@ -3360,7 +3360,41 @@
> </listitem>
> </itemizedlist>
> </section>
> - </section>
> + <section id="ref_guide_dbsetup_dbsupport_sybase">
> + <title>
> + SybaseDictionary Properties
> + </title>
> + <indexterm zone="ref_guide_dbsetup_dbsupport_sybase">
> + <primary>
> + Sybase
> + </primary>
> + <seealso>
> + DBDictionary
> + </seealso>
> + </indexterm>
> + <para>
> +The <literal>sybase</literal> dictionary understands the following
> additional
> +properties:
> + </para>
> + <itemizedlist>
> + <listitem id="OracleDictionary.IgnoreNumericTruncation">
> + <para>
> + <indexterm>
> + <primary>
> + Sybase
> + </primary>
> + <secondary>
> + IgnoreNumericTruncation
> + </secondary>
> + </indexterm>
> +<literal>IgnoreNumericTruncation</literal>: If true, Sybase will ignore
> numeric
> +truncation on SQL operations. Otherwise, if numeric trunctation is
> detected,
> +the operation will fail.
> + </para>
> + </listitem>
> + </itemizedlist>
> + </section>
> + </section>
> <section id="ref_guide_dbsetup_isolation">
> <title>
> Setting the Transaction Isolation
>
>
>
--
Albert Lee.
Re: svn commit: r707270 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/ openjpa-project/src/doc/ma
Posted by Jeremy Bauer <te...@gmail.com>.
Hi Albert.
Thanks for your comments. I'll get that fixed up. I tried to keep
the code modular, but maybe it's unnecessary in this case. Looks like
I also had a fragment leftover from changing from a do-while to a
while. I'll fix that as well.
-Jeremy
Re: svn commit: r707270 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/ openjpa-project/src/doc/ma
Posted by Jeremy Bauer <te...@gmail.com>.
Hi Milosz,
Good catch! I'll fix that along with the changes Albert recommended.
-Jeremy
Re: svn commit: r707270 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/ openjpa-project/src/doc/ma
Posted by MiĆosz Tylenda <mt...@o2.pl>.
The patch I have attached to OPENJPA-751 changes "OracleDictionary.IgnoreNumericTruncation" to "SybaseDictionary.IgnoreNumericTruncation". I considered it as a typo. Let me know if it is not the case.
Regards,
Milosz
> A couple of questions:
>
> 1) looks like logSQLWarning(warn) is only called from logSQLWarnings(stmt),
> but warn will never be null, hence the warn == null check in logSQLWarning
> is unnecessary. If there is only a "_log.trace(..." being call, would it be
> more readable if the "_log.trace(" is in-line in logSQLWarnings()?
>
> + protected void logSQLWarnings(PreparedStatement stmt) {
> + if (stmt != null && _log != null && _log.isTraceEnabled()) {
> + try {
> + SQLWarning warn = stmt.getWarnings();
> + while (warn != null) {
> + logSQLWarning(warn);
> + warn = warn.getNextWarning();
> + } while (warn != null);
> + } catch (SQLException e) {}
> + }
> + }
> +
> + /*
> + * Log the SQLWarning message. Some drivers report expected conditions
> + * such as "no rows returned" as a warning. These types of messages
> can
> + * clutter up the default log very quickly, so trace level will be used
> to
> + * log SQL warnings.
> + */
> + private void logSQLWarning(SQLWarning warn) {
> + if (warn != null) {
> + _log.trace(_loc.get("sql-warning", warn.getMessage()));
> + }
> + }
>
> 2) This feature is for Sybase but the listitem's id defined as
> ""OracleDictionary.IgnoreNumericTruncation". Is this correct?
>
> +
> +
> +
> +
> +
> + Sybase
> +
> +
> + IgnoreNumericTruncation
> +
> +
> +IgnoreNumericTruncation: If true, Sybase will ignore
> numeric
> +truncation on SQL operations. Otherwise, if numeric trunctation is
> detected,
> +the operation will fail.
> +
> +
> +
>
> Albert Lee
>
> On Wed, Oct 22, 2008 at 11:43 PM, wrote:
>
> > Author: jrbauer
> > Date: Wed Oct 22 21:43:35 2008
> > New Revision: 707270
> >
> > URL: http://svn.apache.org/viewvc?rev=707270&view=rev
> > Log:
> > OPENJPA-750: Added option to Sybase dictionary to ignore truncation
> > warnings, added doc for new dictionary option, and code to log any
> > SQLWarnings when update count isn't expected value.
> >
> > Modified:
> >
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> >
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> >
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> >
> > openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> > openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
> >
> > Modified:
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java?rev=707270&r1=707269&r2=707270&view=diff
> >
> > ==============================================================================
> > ---
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> > (original)
> > +++
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/BatchingPreparedStatementManagerImpl.java
> > Wed Oct 22 21:43:35 2008
> > @@ -55,7 +55,6 @@
> > private List _batchedRows = new ArrayList();
> > private int _batchLimit;
> > private boolean _disableBatch = false;
> > - private transient Log _log = null;
> >
> > /**
> > * Constructor. Supply connection.
> > @@ -64,7 +63,6 @@
> > Connection conn, int batchLimit) {
> > super(store, conn);
> > _batchLimit = batchLimit;
> > - _log =
> > store.getConfiguration().getLog(JDBCConfiguration.LOG_JDBC);
> > if (_log.isTraceEnabled())
> > _log.trace(_loc.get("batch_limit",
> > String.valueOf(_batchLimit)));
> > }
> > @@ -216,6 +214,7 @@
> > row.flush(ps, _dict, _store);
> > int count = executeUpdate(ps, row.getSQL(_dict), row);
> > if (count != 1) {
> > + logSQLWarnings(ps);
> > Object failed = row.getFailedObject();
> > if (failed != null)
> > _exceptions.add(new OptimisticException(failed));
> > @@ -280,6 +279,7 @@
> > break;
> > case 0: // no row is inserted, treats it as failed
> > // case
> > + logSQLWarnings(ps);
> > if (failed != null)
> > _exceptions.add(new OptimisticException(failed));
> > else if (row.getAction() == Row.ACTION_INSERT)
> >
> > Modified:
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java?rev=707270&r1=707269&r2=707270&view=diff
> >
> > ==============================================================================
> > ---
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> > (original)
> > +++
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedStatementManagerImpl.java
> > Wed Oct 22 21:43:35 2008
> > @@ -22,11 +22,13 @@
> > import java.sql.PreparedStatement;
> > import java.sql.ResultSet;
> > import java.sql.SQLException;
> > +import java.sql.SQLWarning;
> > import java.util.ArrayList;
> > import java.util.Collection;
> > import java.util.LinkedList;
> > import java.util.List;
> >
> > +import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
> > import org.apache.openjpa.jdbc.meta.ClassMapping;
> > import org.apache.openjpa.jdbc.schema.Column;
> > import org.apache.openjpa.jdbc.sql.DBDictionary;
> > @@ -34,6 +36,7 @@
> > import org.apache.openjpa.jdbc.sql.RowImpl;
> > import org.apache.openjpa.jdbc.sql.SQLExceptions;
> > import org.apache.openjpa.kernel.OpenJPAStateManager;
> > +import org.apache.openjpa.lib.log.Log;
> > import org.apache.openjpa.lib.util.Localizer;
> > import org.apache.openjpa.util.ApplicationIds;
> > import org.apache.openjpa.util.OpenJPAException;
> > @@ -53,6 +56,7 @@
> > protected final JDBCStore _store;
> > protected final Connection _conn;
> > protected final DBDictionary _dict;
> > + protected transient Log _log = null;
> >
> > // track exceptions
> > protected final Collection _exceptions = new LinkedList();
> > @@ -64,6 +68,8 @@
> > _store = store;
> > _dict = store.getDBDictionary();
> > _conn = conn;
> > + if (store.getConfiguration() != null)
> > + _log =
> > store.getConfiguration().getLog(JDBCConfiguration.LOG_JDBC);
> > }
> >
> > public Collection getExceptions() {
> > @@ -105,6 +111,7 @@
> > try {
> > int count = executeUpdate(stmnt, sql, row);
> > if (count != 1) {
> > + logSQLWarnings(stmnt);
> > Object failed = row.getFailedObject();
> > if (failed != null)
> > _exceptions.add(new OptimisticException(failed));
> > @@ -233,4 +240,32 @@
> > else
> > return _conn.prepareStatement(sql);
> > }
> > +
> > + /**
> > + * Provided the JDBC log category is logging warnings, this method
> > will
> > + * log any SQL warnings that result from the execution of a SQL
> > statement.
> > + */
> > + protected void logSQLWarnings(PreparedStatement stmt) {
> > + if (stmt != null && _log != null && _log.isTraceEnabled()) {
> > + try {
> > + SQLWarning warn = stmt.getWarnings();
> > + while (warn != null) {
> > + logSQLWarning(warn);
> > + warn = warn.getNextWarning();
> > + } while (warn != null);
> > + } catch (SQLException e) {}
> > + }
> > + }
> > +
> > + /*
> > + * Log the SQLWarning message. Some drivers report expected
> > conditions
> > + * such as "no rows returned" as a warning. These types of messages
> > can
> > + * clutter up the default log very quickly, so trace level will be
> > used to
> > + * log SQL warnings.
> > + */
> > + private void logSQLWarning(SQLWarning warn) {
> > + if (warn != null) {
> > + _log.trace(_loc.get("sql-warning", warn.getMessage()));
> > + }
> > + }
> > }
> >
> > Modified:
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java?rev=707270&r1=707269&r2=707270&view=diff
> >
> > ==============================================================================
> > ---
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> > (original)
> > +++
> > openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
> > Wed Oct 22 21:43:35 2008
> > @@ -75,6 +75,13 @@
> > */
> > public String identityColumnName = "UNQ_INDEX";
> >
> > + /**
> > + * If true, Sybase will ignore numeric truncation on insert or
> > + * update operations. Otherwise, the operation will fail. The default
> > + * value, false is in accordance with SQL92.
> > + */
> > + public boolean ignoreNumericTruncation = false;
> > +
> > public SybaseDictionary() {
> > platform = "Sybase";
> > schemaCase = SCHEMA_CASE_PRESERVE;
> > @@ -277,6 +284,18 @@
> > stmnt.execute();
> > stmnt.close();
> > }
> > +
> > + // By default, Sybase will fail to insert or update if a numeric
> > + // truncation occurs as a result of, for example, loss of decimal
> > + // precision. This setting specifies that the operation should
> > not
> > + // fail if a numeric truncation occurs.
> > + if (ignoreNumericTruncation) {
> > + String str = "set arithabort numeric_truncation off";
> > + PreparedStatement stmnt = prepareStatement(conn, str);
> > + stmnt.execute();
> > + stmnt.close();
> > + }
> > +
> > return new SybaseConnection(conn);
> > }
> >
> >
> > Modified:
> > openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties?rev=707270&r1=707269&r2=707270&view=diff
> >
> > ==============================================================================
> > ---
> > openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> > (original)
> > +++
> > openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
> > Wed Oct 22 21:43:35 2008
> > @@ -117,3 +117,4 @@
> > statement {1}.
> > cache-hit: SQL Cache hit with key: {0} in {1}
> > cache-missed: SQL Cache missed with key: {0} in {1}
> > +sql-warning: The statement resulted in SQL warning: {0}
> >
> > Modified:
> > openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml?rev=707270&r1=707269&r2=707270&view=diff
> >
> > ==============================================================================
> > --- openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
> > (original)
> > +++ openjpa/trunk/openjpa-project/src/doc/manual/ref_guide_dbsetup.xml Wed
> > Oct 22 21:43:35 2008
> > @@ -3360,7 +3360,41 @@
> >
> >
> >
> > -
> > +
> > +
> > + SybaseDictionary Properties
> > +
> > +
> > +
> > + Sybase
> > +
> > +
> > + DBDictionary
> > +
> > +
> > +
> > +The sybase dictionary understands the following
> > additional
> > +properties:
> > +
> > +
> > +
> > +
> > +
> > +
> > + Sybase
> > +
> > +
> > + IgnoreNumericTruncation
> > +
> > +
> > +IgnoreNumericTruncation: If true, Sybase will ignore
> > numeric
> > +truncation on SQL operations. Otherwise, if numeric trunctation is
> > detected,
> > +the operation will fail.
> > +
> > +
> > +
> > +
> > +
> >
> >
> > Setting the Transaction Isolation
> >
> >
> >
>
>
> --
> Albert Lee.
>