Improve InformixDialect sequence support

Description

On startup of JBossAS I see this in the boot.log file:
17:53:43,896 INFO [DatabaseMetadata] table not found: hibernate_sequence
17:53:43,898 ERROR [SchemaUpdate] could not complete schema update: org.hibernate.MappingException: Dialect does not support pooled sequences
at org.hibernate.dialect.Dialect.getCreateSequenceString(Dialect.java:734) [:3.5.5-Final]
at org.hibernate.dialect.Dialect.getCreateSequenceStrings(Dialect.java:692) [:3.5.5-Final]
at org.hibernate.id.enhanced.SequenceStructure.sqlCreateStrings(SequenceStructure.java:156) [:3.5.5-Final]
at org.hibernate.id.enhanced.SequenceStyleGenerator.sqlCreateStrings(SequenceStyleGenerator.java:363) [:3.5.5-Final]
at org.hibernate.cfg.Configuration.generateSchemaUpdateScript(Configuration.java:1142) [:3.5.5-Final]
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:187) [:3.5.5-Final]
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:386) [:3.5.5-Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385) [:3.5.5-Final]
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) [:3.5.5-Final]
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:891) [:3.5.5-Final]
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) [:3.5.5-Final]
at org.jboss.jpa.builder.DefaultCEMFBuilder.build(DefaultCEMFBuilder.java:47) [:1.0.2-alpha-1]
at org.jboss.as.jpa.scanner.HackCEMFBuilder.build(HackCEMFBuilder.java:49) [:6.0.0-SNAPSHOT]
at org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:275) [:1.0.2-alpha-1]

I created the sequence manually but during next startup the same error message.
I enabled the logging of database statements and found this:
QUERY: (OPTIMIZATION TIMESTAMP: 09-19-2010 17:53:43)
------ select tabname, tabtype, owner, tabid from jboss6:informix.systables where tabtype in ('T','V') and tabname like 'hibernate_sequence' and owner like '%'

Estimated Cost: 10
Estimated # of Rows Returned: 3

1) informix.systables: SEQUENTIAL SCAN

Filters: ((informix.systables.tabtype IN ('T' , 'V' )AND informix.systables.tabname LIKE 'hibernate_sequence' ) AND informix.systables.owner LIKE '%' )

Hibernate is looking for a table or view named "hibernate_sequence" and not for a sequence of this name.

Environment

JBoss-6.0.0-SNAPSHOT (current svn checkout), Informix 11.5 Database, SUN JDK 1.6.0_21

Activity

Show:
Steve Ebersole
September 20, 2010, 1:00 AM

Is there a reason we need 2 issues regarding the seemingly same issue? ->

Frank Langelage
September 20, 2010, 8:06 AM

These two are two different things for me.
This one here is about the problem how hibernate incorrectly searches for the existence of the sequence.
is about the missing flag for pooled sequence support in the InformixDialect.
So if would be fixed I would not see the exception anymore because I created the sequence manually.
If would be fixed (and if I found out how to get JBoss to use the InformixDialect for it's DefaultDS with the administrative database object) I would not see this error but something like "sequence already exists" on every boot up then.

Frank Langelage
September 23, 2010, 9:18 PM

This InformixDialect.java contains the difference shown in the diff file compared with current version of Branch_3_5. The main difference is the introduction of the two methods getQuerySequencesString() and supportsPooledSequences(). So this patch also solves the problem HHH-5582. Using this version now with JBossAS-6.0.0.SNAPSHOT both described problems went away.

Fixed

Assignee

Steve Ebersole

Reporter

Frank Langelage

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Major
Configure