Actually, I cheated and saw it in the stack trace.

Personally, I prefer to see some sort of a testbed for databases
before we ship with something preconfigured, so that it's not totally
experimental. However, we currently ship with DBDictionaries for lots
of DBs that we don't actually support. So I guess I wouldn't object to
something more formal, although I'd prefer something that went through
a bit more of the OpenJPA test bucket.

-Patrick

On 11/27/07, Marc Siegel <[EMAIL PROTECTED]> wrote:
> Hi Patrick -
>
> Good memory, that I am on SQLite.
> Do you think OpenJPA will ship with a preconfigured DBDictionary for
> SQLite at some point?
>
> -Marc
>
> On Nov 27, 2007 12:32 AM, Patrick Linskey <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > It sounds like SQLite does not allow table aliases in DELETE
> > statments. The allowsAliasInBulkClause DBDictionary property controls
> > this.
> >
> > I believe that the DBDictionary behavior is overly-cautious when this
> > is set to false, but it should safely get things working.
> >
> > -Patrick
> >
> >
> > On 11/27/07, Marc Siegel <[EMAIL PROTECTED]> wrote:
> > > Hi Folks,
> > >
> > > Background:
> > >  This is with OpenJPA 1.0. Java 1.5.
> > >
> > > The following query succeeds as a SELECT:
> > >        String jpql = "SELECT t FROM GaTextAd t " +
> > >            "WHERE t.isChanged = FALSE " +
> > >            "AND t.isDisapproved = TRUE " +
> > >            "AND t.googleId IS NULL";
> > >
> > > But when the same WHERE clause is used to DELETE:
> > >        String jpql = "DELETE FROM GaTextAd t " +
> > >            "WHERE t.isChanged = FALSE " +
> > >            "AND t.isDisapproved = TRUE " +
> > >            "AND t.googleId IS NULL";
> > >
> > >
> > > It provokes the following error:
> > > <openjpa-1.0.0-r420667:568756 nonfatal general error>
> > > org.apache.openjpa.persistence.PersistenceException: near "t0": syntax
> > > error {DELETE FROM GaTextAd t0 WHERE (t0.isChanged = ? AND
> > > t0.isDisapproved = ? AND t0.googleId IS NULL)} [code=0, state=null]
> > > FailedObject: [EMAIL PROTECTED]
> > >        at 
> > > org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3849)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeBulkOperation(JDBCStoreQuery.java:512)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeDelete(JDBCStoreQuery.java:425)
> > >        at 
> > > org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeDelete(ExpressionStoreQuery.java:681)
> > >        at org.apache.openjpa.kernel.QueryImpl.delete(QueryImpl.java:1008)
> > >        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:801)
> > >        at 
> > > org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:866)
> > >        at 
> > > org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:862)
> > >        at 
> > > org.apache.openjpa.kernel.DelegatingQuery.deleteAll(DelegatingQuery.java:541)
> > >        at 
> > > org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:314)
> > >        at com.leadgenllc.lib.GaPush.deleteAllRejected(GaPush.java:403)
> > >        at 
> > > com.leadgenllc.lib.GaPushTest.testRejectTextAds(GaPushTest.java:46)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at 
> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >        at 
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >        at java.lang.reflect.Method.invoke(Method.java:585)
> > >        at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> > >        at 
> > > org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> > >        at 
> > > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> > >        at 
> > > org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> > >        at 
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
> > >        at 
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
> > >        at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at 
> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >        at 
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >        at java.lang.reflect.Method.invoke(Method.java:585)
> > >        at 
> > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
> > >        at 
> > > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
> > > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: near
> > > "t0": syntax error {DELETE FROM GaTextAd t0 WHERE (t0.isChanged = ?
> > > AND t0.isDisapproved = ? AND t0.googleId IS NULL)} [code=0,
> > > state=null]
> > >        at 
> > > org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:201)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:57)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:228)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager$RefCountConnection.prepareStatement(JDBCStoreManager.java:1308)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:152)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:475)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:455)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:444)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeBulkOperation(JDBCStoreQuery.java:504)
> > >        ... 36 more
> > > NestedThrowables:
> > > java.sql.SQLException: near "t0": syntax error
> > >        at org.sqlite.DB.throwex(DB.java:252)
> > >        at org.sqlite.NativeDB.prepare(Native Method)
> > >        at org.sqlite.DB.prepare(DB.java:62)
> > >        at org.sqlite.PrepStmt.<init>(PrepStmt.java:25)
> > >        at org.sqlite.Conn.prepareStatement(Conn.java:205)
> > >        at org.sqlite.Conn.prepareStatement(Conn.java:198)
> > >        at org.sqlite.Conn.prepareStatement(Conn.java:187)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:165)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:225)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager$RefCountConnection.prepareStatement(JDBCStoreManager.java:1308)
> > >        at 
> > > org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:152)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:475)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:455)
> > >        at 
> > > org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:444)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeBulkOperation(JDBCStoreQuery.java:504)
> > >        at 
> > > org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeDelete(JDBCStoreQuery.java:425)
> > >        at 
> > > org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeDelete(ExpressionStoreQuery.java:681)
> > >        at org.apache.openjpa.kernel.QueryImpl.delete(QueryImpl.java:1008)
> > >        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:801)
> > >        at 
> > > org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:866)
> > >        at 
> > > org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:862)
> > >        at 
> > > org.apache.openjpa.kernel.DelegatingQuery.deleteAll(DelegatingQuery.java:541)
> > >        at 
> > > org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:314)
> > >        at com.leadgenllc.lib.GaPush.deleteAllRejected(GaPush.java:403)
> > >        at 
> > > com.leadgenllc.lib.GaPushTest.testRejectTextAds(GaPushTest.java:46)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at 
> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >        at 
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >        at java.lang.reflect.Method.invoke(Method.java:585)
> > >        at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
> > >        at 
> > > org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> > >        at 
> > > org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> > >        at 
> > > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> > >        at 
> > > org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> > >        at 
> > > org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> > >        at 
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
> > >        at 
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
> > >        at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at 
> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >        at 
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >        at java.lang.reflect.Method.invoke(Method.java:585)
> > >        at 
> > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
> > >        at 
> > > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
> > >
> >
> >
> > --
> > Patrick Linskey
> > 202 669 5907
> >
>


-- 
Patrick Linskey
202 669 5907

Reply via email to