Hi Kashyup,
At the risk of being pedantic, I just wanted to point out that Kristian
has posted a candidate fix but he hasn't checked it in yet. It would be
great if you could take the fix for a test-drive and let us know if it
solves your problem. You will need to do the following:
1) Check out the trunk using subversion.
2) Apply Kristian's fix using the "patch" utility.
3) Build the code.
If you need help figuring out how to do this, let us know.
Thanks,
-Rick
kashyup wrote:
Hi Kristian,
Looking at the jira: https://issues.apache.org/jira/browse/DERBY-4278
https://issues.apache.org/jira/browse/DERBY-4278
seems like you have fixed the issue.
Previously I downloaded Derby 10.5.1.1
What would be the best way to get this fix? Should I do a check out from the
Development Trunk?
thanks
Kashyup
Kristian Waagan-4 wrote:
kashyup wrote:
Hello all,
We have just started to look into Derby as our embedded DB for a desktop
app
version.
Env: Hibernate 3.2 and Derby 10.5.1
I have defined a java string field of type 'text' in Hibernate Mapping
(works great on Postgres 8.1 and Oracle 10g)
I use Hibernate SessionFactory to generate Table schema, which is done
without any error.
But, when I try to save records in tables via Hibernate Session, I get
the
following exception:
Note: If I change hibernate mapping to type 'string', then I dont get
this
error:
java.lang.IllegalStateException: No context, unable to determine which
stream header format to generate
at
org.apache.derby.iapi.types.ClobStreamHeaderGenerator.determineMode(Unknown
Source)
at
org.apache.derby.iapi.types.ClobStreamHeaderGenerator.expectsCharCount(Unknown
Source)
at org.apache.derby.iapi.types.ReaderToUTF8Stream.fillBuffer(Unknown
Source)
at org.apache.derby.iapi.types.ReaderToUTF8Stream.read(Unknown Source)
at java.io.DataInputStream.read(Unknown Source)
at org.apache.derby.iapi.types.SQLClob.readExternal(Unknown Source)
at org.apache.derby.iapi.types.SQLChar.getString(Unknown Source)
at org.apache.derby.iapi.types.SQLClob.getClone(Unknown Source)
at org.apache.derby.impl.sql.GenericParameter.getClone(Unknown Source)
at org.apache.derby.impl.sql.GenericParameterValueSet.<init>(Unknown
Source)
at org.apache.derby.impl.sql.GenericParameterValueSet.getClone(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.addBatch(Unknown
Source)
at
org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:31)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2252)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
Also, I need to save it as type 'text' even though it gets saved as
CLOB(255), as the CLOB column size can later be altered.
What could be the cause? or changes needed?
Hello,
You have discovered / triggered a bug in the new Clob handling code
introduced in 10.5.1.
I logged DERBY-4278 [1], and have started working on a fix (the
regression tests are running, patch needs review).
Regarding workarounds, I'm afraid all I can think of is using the client
driver instead of the embedded driver, avoid batching for inserts with
Clobs, change the data type, or downgrade to 10.4. Another option is to
build Derby with the patch and test it out :)
I observe that you are using very small Clobs (255 characters). Clobs
are in general less effective than using for instance VARCHAR.
Is your concern about altering the column size related to Derby,
Hibernate or something else?
Regards,
--
Kristian
[1] https://issues.apache.org/jira/browse/DERBY-4278
thanks all