Uploaded image for project: 'Hibernate ORM'
  1. HHH-10603

ORA-00932: inconsistent datatypes: expected - got BLOB after HHH-10345 with Oracle12cDialect

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.1.0, 5.0.8, 5.3.2
    • Fix Version/s: 5.3.4, 5.1.16, 5.4.0
    • Component/s: None
    • Labels:
    • Environment:
      Oracle12c
      Oracle12cDialect
    • Bug Testcase Reminder (view):

      Bug reports should generally be accompanied by a test case!

    • Last commented by a user?:
      true
    • Sprint:

      Description

      FooBarTest.testLimit
      FooBarTest.testPersistCollections
      ParameterTest.testNonPrimitiveArrayParameterBinding
      ParameterTest.testPrimitiveArrayParameterBinding
      PredicateTest.testByteArray
      ImplicitJoinTest.testImplicitJoinFromExplicitCollectionJoin

      These tests fail on Oracle12c with Oracle12cDialect because Hibernate tries to compare blob with blob1=blob2 but Oracle requires function dbms_lob.compare

      f.ex.

      where dbms_lob.compare(data,:var2) = 0}}
      

      Failing sql:

          create table ENT_W_MANY_COLS (
              id number(19,0) not null,
              someBytes blob,
              someWrappedBytes blob,
              primary key (id)
          )
          select
              multityped0_.id as id1_0_,
              multityped0_.someBytes as someBytes2_0_,
              multityped0_.someWrappedBytes as someWrappedBytes3_0_ 
          from
              ENT_W_MANY_COLS multityped0_ 
          where
              multityped0_.someBytes=?
      

      fails with

      java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected - got BLOB
      
      	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
      	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
      	at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
      	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
      	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
      	at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
      	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
      	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
      	at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774)
      	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
      	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
      	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
      	at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
      	at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
      	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)
      	at org.hibernate.loader.Loader.getResultSet(Loader.java:2116)
      	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1899)
      	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1875)
      	at org.hibernate.loader.Loader.doQuery(Loader.java:919)
      	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
      	at org.hibernate.loader.Loader.doList(Loader.java:2611)
      	at org.hibernate.loader.Loader.doList(Loader.java:2594)
      	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
      	at org.hibernate.loader.Loader.list(Loader.java:2418)
      	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
      	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
      	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
      	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
      	at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
      	at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)
      	at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483)
      	at org.hibernate.jpa.criteria.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:50)
      	at org.hibernate.jpa.test.criteria.ParameterTest.testPrimitiveArrayParameterBinding(ParameterTest.java:43)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      	at org.hibernate.testing.junit4.ExtendedFrameworkMethod.invokeExplosively(ExtendedFrameworkMethod.java:45)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
      

        Attachments

          Issue links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: