Max, Thank you for your reply. It seems I am the only one, messing with SQLBase :) I have partially completed the SQLBaseDialect and patched the Configuration in addition to Dialect class. This works for my cases so far, yet I have to tested it properly. Once I have something "pretty" I will submit a patch to CVS. Are there any predefined test procedures you have developed for the Dialects?
Thank you, Sergey Menis -----Original Message----- From: Max Rydahl Andersen [mailto:[EMAIL PROTECTED] Sent: Monday, January 31, 2005 7:12 AM To: Sergey Menis; hibernate-devel@lists.sourceforge.net Subject: Re: [Hibernate] Index creation on PK (Hibernate3, Gupta SQL Base) On Mon, 24 Jan 2005 14:42:38 -0500, Sergey Menis <[EMAIL PROTECTED]> wrote: I didn't notice if you got an answer to this yet - so just ignore me if otherwise ;) You are correct about your need to extend configuration/dialect. You probably also need to look at Table.primaryKey and see where it is used when creating primary keys. I also *think* HSQLDialect has the same issues and that it is not handled in a good way at the moment (some instanceof HSQLDialect somewhere). Thus you should add something like "requireAlterTableForPrimaryKey()" or something to Dialect to handle it more smoothly. /max > All, > > I am in the process of creating a dialect to communicate with Gupta > SQLbase database. Currently I am facing a problem of "Table in > incomplete state". According to Gupta this problem is caused by a > missing index on the primary key. This appears to be correct since > there are no indexes created on my table (NOTATION), once the > SchemaExport runs. I have tested the same mapping documents and > identical code on MSSQL Server, using the provided dialect > (SQLServerDialect) and there are no problems with index creation. This > is due to the fact that indexes on primary key are created implicitly > under such DBs as Oracle and MSSQL Server. Unfortunately this is not > the case with Gupta SQL Base, where the index must be created explicitly. Hence my question: > > Since this problem is DB specific, any ideas on how to incorporate > functionality to force explicit index creation on PK, after table > generation? > > As I understand it I am faced with extending: > > org.hibernate.cfg.Configuration > org.hibernate.dialect.Dialect > + my own dialect > > I have less then a month of exposure with Hibernate so there are > probably many misconceptions in the above. Please correct me if you > see anything wrong. > > Thanks, > > Sergei > > ************************RELEVANT INFORMATION************** Hibernate > version: Hibernate3 > > Full stack trace of any exception that occurs: > > > [java] 12:19:02,110 DEBUG SQL:290 - insert into NOTATION (NOTE, TYPE, > OWNER_ID, CREATE_DATE) values (?, ?, ?, ?) [java] Hibernate: insert > into NOTATION (NOTE, TYPE, OWNER_ID, > CREATE_DATE) values (?, ?, ?, ?) > [java] 12:19:02,110 DEBUG AbstractBatcher:341 - preparing statement > [java] 12:19:02,157 DEBUG JDBCExceptionReporter:49 - SQL Exception > [java] java.sql.SQLException: 01417 DLU TIC Table in incomplete state > > [java] at > jdbc.gupta.sqlbase.SqlbaseStatement.SQLException(SqlbaseStatement.java > :8 > 26) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:147) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:92) > [java] at > jdbc.gupta.sqlbase.SqlbaseConnection.prepareStatement(SqlbaseConnection. > java:195) > [java] at > org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher. > java:349) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :71) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :65) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatch > er > .java:125) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1653) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:2006) > [java] at > org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: > 42) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:232) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:137) > [java] at > org.hibernate.event.AbstractFlushingEventListener.performExecutions(Ab > st > ractFlushingEventListener.java:255) > [java] at > org.hibernate.event.DefaultFlushEventListener.onFlush(DefaultFlushEven > tL > istener.java:26) > [java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:814) > [java] at > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java: > 75 > ) > [java] at org.hibernate.auction.Main.createNotation(Main.java:127) > [java] at org.hibernate.auction.Main.main(Main.java:425) > [java] 12:19:02,173 WARN JDBCExceptionReporter:57 - SQL Error: 0, > SQLState: null > [java] 12:19:02,173 ERROR JDBCExceptionReporter:58 - 01417 DLU TIC > Table in incomplete state [java] 12:19:02,188 DEBUG > JDBCExceptionReporter:49 - could not insert: > [org.hibernate.auction.Notation] [insert into NOTATION (NOTE, T YPE, > OWNER_ID, CREATE_DATE) values (?, ?, ?, ?)] [java] > java.sql.SQLException: 01417 DLU TIC Table in incomplete state [java] > at > jdbc.gupta.sqlbase.SqlbaseStatement.SQLException(SqlbaseStatement.java > :8 > 26) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:147) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:92) > [java] at > jdbc.gupta.sqlbase.SqlbaseConnection.prepareStatement(SqlbaseConnection. > java:195) > [java] at > org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher. > java:349) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :71) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :65) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatch > er > .java:125) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1653) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:2006) > [java] at > org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: > 42) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:232) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:137) > [java] at > org.hibernate.event.AbstractFlushingEventListener.performExecutions(Ab > st > ractFlushingEventListener.java:255) > [java] at > org.hibernate.event.DefaultFlushEventListener.onFlush(DefaultFlushEven > tL > istener.java:26) > [java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:814) > [java] at > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java: > 75 > ) > [java] at org.hibernate.auction.Main.createNotation(Main.java:127) > [java] at org.hibernate.auction.Main.main(Main.java:425) > [java] 12:19:02,282 WARN JDBCExceptionReporter:57 - SQL Error: 0, > SQLState: null > [java] 12:19:02,282 ERROR JDBCExceptionReporter:58 - 01417 DLU TIC > Table in incomplete state [java] 12:19:02,282 ERROR > AbstractFlushingEventListener:258 - Could not synchronize database > state with session [java] > org.hibernate.exception.GenericJDBCException: could not insert: > [org.hibernate.auction.Notation] > [java] at > org.hibernate.exception.SQLStateConverter.handledNonSpecificException( > SQ > LStateConverter.java:82) > [java] at > org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.ja > va > :70) > [java] at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper. > java:43) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1683) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:2006) > [java] at > org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: > 42) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:232) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:137) > [java] at > org.hibernate.event.AbstractFlushingEventListener.performExecutions(Ab > st > ractFlushingEventListener.java:255) > [java] at > org.hibernate.event.DefaultFlushEventListener.onFlush(DefaultFlushEven > tL > istener.java:26) > [java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:814) > [java] at > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java: > 75 > ) > [java] at org.hibernate.auction.Main.createNotation(Main.java:127) > [java] at org.hibernate.auction.Main.main(Main.java:425) > [java] Caused by: java.sql.SQLException: 01417 DLU TIC Table in > incomplete state [java] at > jdbc.gupta.sqlbase.SqlbaseStatement.SQLException(SqlbaseStatement.java > :8 > 26) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:147) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:92) > [java] at > jdbc.gupta.sqlbase.SqlbaseConnection.prepareStatement(SqlbaseConnection. > java:195) > [java] at > org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher. > java:349) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :71) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :65) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatch > er > .java:125) > [java] Exception in thread "main" > org.hibernate.exception.GenericJDBCException: could not insert: > [org.hibernate.auction.Notation] > [java] at > org.hibernate.exception.SQLStateConverter.handledNonSpecificException( > SQ > LStateConverter.java:82) > [java] at > org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.ja > va > :70) > [java] at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper. > java:43) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1683) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:2006) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1653) > [java] ... 10 more > [java] 12:19:02,407 DEBUG JDBCTransaction:99 - rollback [java] > 12:19:02,423 DEBUG SessionImpl:363 - transaction completion [java] > 12:19:02,423 DEBUG SessionImpl:232 - closing session [java] > 12:19:02,423 DEBUG SessionImpl:311 - disconnecting session [java] > 12:19:02,423 DEBUG AbstractBatcher:392 - closing JDBC connection (open > PreparedStatements: 1, globally: 1) (open ResultSets: 0, > globally: 0) > [java] 12:19:02,423 DEBUG DriverManagerConnectionProvider:129 - > returning connection to pool, pool size: 1 [java] 12:19:02,423 DEBUG > SessionImpl:363 - transaction completion [java] at > org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java: > 42) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:232) > [java] at > org.hibernate.impl.ActionQueue.executeActions(ActionQueue.java:137) > [java] at > org.hibernate.event.AbstractFlushingEventListener.performExecutions(Ab > st > ractFlushingEventListener.java:255) > [java] at > org.hibernate.event.DefaultFlushEventListener.onFlush(DefaultFlushEven > tL > istener.java:26) > [java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:814) > [java] at > org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java: > 75 > ) > [java] at org.hibernate.auction.Main.createNotation(Main.java:127) > [java] at org.hibernate.auction.Main.main(Main.java:425) > [java] Caused by: java.sql.SQLException: 01417 DLU TIC Table in > incomplete state [java] at > jdbc.gupta.sqlbase.SqlbaseStatement.SQLException(SqlbaseStatement.java > :8 > 26) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:147) > [java] at > jdbc.gupta.sqlbase.SqlbasePreparedStatement.<init>(SqlbasePreparedStat > em > ent.java:92) > [java] at > jdbc.gupta.sqlbase.SqlbaseConnection.prepareStatement(SqlbaseConnection. > java:195) > [java] at > org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher. > java:349) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :71) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.ja > va > :65) > [java] at > org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatch > er > .java:125) > [java] at > org.hibernate.persister.BasicEntityPersister.insert(BasicEntityPersist > er > .java:1653) > [java] ... 10 more > > BUILD FAILED > C:\java\eclipse\workspace\HibernateSQLBase\build.xml:624: Java returned: > 1 > > > Name and version of the database you are using: Gupta SQL Base 7.6.0 > > The generated SQL (show_sql=true): > [java] 12:19:01,751 DEBUG SchemaExport:154 - create table NOTATION ( > [java] TYPE varchar(2) not null, [java] OWNER_ID varchar(40) not null, > [java] CREATE_DATE date not null, [java] NOTE LONG VARCHAR, [java] > primary key (TYPE, OWNER_ID, CREATE_DATE) > [java] ) -- Max Rydahl Andersen callto://max.rydahl.andersen Hibernate [EMAIL PROTECTED] http://hibernate.org JBoss Inc [EMAIL PROTECTED] http://jboss.com ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ hibernate-devel mailing list hibernate-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hibernate-devel