How does this impact existing applications? Would they have to convert
LONGs to CLOBs (and LONGRAWs to BLOBs) to keep the application working?
As far as the advantage of CLOB over TEXT, if you read every character,
which one is really faster? I would expect TEXT to be a little faster,
since the server side will send the characters before they are asked
for. By faster, I mean from the application performance point of view. :)
Could this be changed in a custom Oracle dialect? So new
applications/databases could perhaps use that and existing applications
might use LONGs a bit longer via the existing Oracle dialect.
On 10/14/2011 09:22 PM, Gail Badner wrote:
In [1], I am seeing the following type mappings:
Column type: LONG -> java.sql.Types.LONGVARCHAR -> java.lang.String
Column type: LONGRAW -> java.sql.Types.LONGVARBINARY -> byte[]
org.hibernate.type.TextType is consistent with the mapping for LONG.
org.hibernate.type.ImageType is consistent with the mapping for LONGRAW.
From this standpoint, the current settings are appropriate.
I understand there are restrictions when LONG and LONGRAW are used and I see from your
other message that there is Oracle documentation for migrating to CLOB and BLOB.
I agree that changing column type registration as follows (for Oracle only) should fix
this:
registerColumnType( Types.VARBINARY, 2000, "raw($l)" );
registerColumnType( Types.VARBINARY, "blob" );
registerColumnType( Types.LONGVARCHAR, "clob" );
registerColumnType( Types.LONGVARBINARY, "blob" );
registerColumnType( Types.VARCHAR, 4000, "varchar2($l char)" );
registerColumnType( Types.VARCHAR, "clob" );
Steve, what do you think? Is it too late to make this change for 4.0.0?
[1] Table 11-1 of Oracle® Database JDBC Developer's Guide and Reference, 11g Release
1 (11.1)
(
http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/datacc.htm#g...)
[2] Hibernate Core Migration Guide for 3.5
(
http://community.jboss.org/wiki/HibernateCoreMigrationGuide35)
[3] Table 2-10 of Oracle® Database SQL Language Reference
11g Release 1 (11.1)
(
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elemen...)
----- Original Message -----
> From: "Łukasz Antoniak"<lukasz.antoniak(a)gmail.com>
> To: hibernate-dev(a)lists.jboss.org
> Sent: Thursday, October 13, 2011 12:50:13 PM
> Subject: [hibernate-dev] HHH-6726 LONG and LONG RAW column types in Oracle
>
> Welcome Community!
>
> I have just subscribed to the list and wanted to discuss HHH-6726
> JIRA
> issue.
>
> Gail Badner wrote
> (
http://lists.jboss.org/pipermail/hibernate-dev/2011-October/007208.html):
> HHH-6726 (Oracle : map TextType to clob and ImageType to blob)
>
https://hibernate.onjira.com/browse/HHH-6726
> There have been a number of issues opened since the change was made
> to
> map TextType (LONGVARCHAR) 'long' and ImageType (LONGVARBINARY) to
> 'long
> raw'. This change was already documented in the migration notes.
> Should
> the mapping for Oracle (only) be changed back to clob and blob?
>
> HHH-6726 is caused by an issue in Oracle JDBC driver (version
> 10.2.0.4
> and later). This bug appears when LONG or LONG RAW columns are
> accessed
> not as first or last while processing SQL statement.
>
> I have discussed the topic of mapping TextType to CLOB and ImageType
> to
> BLOB (only in Oracle dialect) with Strong Liu. Reasons for doing so:
> - Oracle allows only one LONG / LONG RAW column per table. This might
> be
> the most important from Hibernate's perspective.
> - LONG / LONG RAW - up to 2 GB, BLOB / CLOB - up to 4 GB.
> - In PL/SQL using LOBs is more efficient (random access to data).
> LONG
> only sequential.
> - LONG and LONG RAW are deprecated.
>
> What is your opinion?
>
> Regards,
> Lukasz Antoniak
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev