View Issue Details

IDProjectCategoryView StatusLast Update
0003949SymmetricDSImprovementpublic2019-05-13 17:49
Reporterhanes Assigned To 
Prioritynormal 
Status confirmedResolutionopen 
Product Version3.10.2 
Summary0003949: Oracle Dialect does not support LONG RAW type
DescriptionOracle dialect supports type "LONG" but not "LONG RAW".

For simple example table:

create table test9 (mylong long raw,
    myId varchar(256), primary key (myId));
    

Trigger text generated is:


after insert on "HANES"."TEST9"
for each row
begin
    
    if 1=1 and sym_trigger_disabled() is null then
        begin
            insert into "HANES".sym_data
            (table_name, event_type, trigger_hist_id, row_data, channel_id,
            transaction_id, source_node_id, external_data, create_time)
            values(
            'test9',
            'I',
            59,
            
          decode(:new."MYID", null, '', '"'||replace(replace(:new."MYID",'\','\\'),'"','\"')||'"')||','||
          dbms_lob.substr(decode(dbms_lob.getlength(:new."MYLONG"), null, to_clob(''), '"'||sym_blob2clob(:new."MYLONG")||'"'), 4000, 1),
            'default',
            sym_transaction_id(),
            sym_pkg.disable_node_id,
            null,
            CURRENT_TIMESTAMP
            );
        exception
        when others then
            insert into "HANES".sym_data
            (table_name, event_type, trigger_hist_id, row_data, channel_id,
            transaction_id, source_node_id, external_data, create_time)
            values(
            'test9',
            'I',
            59,
            to_clob('')||
          decode(:new."MYID", null, to_clob('')||'', '"'||replace(replace(to_clob('')||:new."MYID",'\','\\'),'"','\"')||'"')||','||
          decode(dbms_lob.getlength(:new."MYLONG"), null, to_clob(''), '"'||sym_blob2clob(:new."MYLONG")||'"'),
            'default',
            sym_transaction_id(),
            sym_pkg.disable_node_id,
            null,
            CURRENT_TIMESTAMP
            );
        end;
    end if;
    
end;

and stack trace occurs when creating trigger:

org.jumpmind.db.sql.SqlException: ORA-04093: references to columns of type LONG are not allowed in triggers

    at org.jumpmind.db.sql.AbstractSqlTemplate.translate(AbstractSqlTemplate.java:302)
    at org.jumpmind.db.sql.AbstractSqlTemplate.translate(AbstractSqlTemplate.java:291)
    at org.jumpmind.db.sql.JdbcSqlTransaction.executeCallback(JdbcSqlTransaction.java:398)
    at org.jumpmind.db.sql.JdbcSqlTransaction.execute(JdbcSqlTransaction.java:300)
    at org.jumpmind.symmetric.db.AbstractSymmetricDialect.createTrigger(AbstractSymmetricDialect.java:398)
    at org.jumpmind.symmetric.db.oracle.OracleSymmetricDialect.createTrigger(OracleSymmetricDialect.java:108)
    at org.jumpmind.symmetric.service.impl.TriggerRouterService.rebuildTriggerIfNecessary(TriggerRouterService.java:1809)
    at org.jumpmind.symmetric.service.impl.TriggerRouterService.updateOrCreateDatabaseTriggers(TriggerRouterService.java:1680)
    at org.jumpmind.symmetric.service.impl.TriggerRouterService.syncTriggers(TriggerRouterService.java:1517)
    at com.jumpmind.symmetric.console.impl.cr$b.doWork(InstalledTriggersPanel.java:547)
    at com.jumpmind.symmetric.console.impl.ab$2.onBackgroundDataRefresh(InProgressDialog.java:99)
    at com.jumpmind.symmetric.console.ui.a.a(BackgroundRefresherService.java:99)
    at com.jumpmind.symmetric.console.ui.a$3.run(BackgroundRefresherService.java:142)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: ORA-04093: references to columns of type LONG are not allowed in triggers

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
    at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1026)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
    at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909)
    at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871)
    at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318)
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
    at org.jumpmind.db.sql.JdbcSqlTransaction$3.execute(JdbcSqlTransaction.java:307)
    at org.jumpmind.db.sql.JdbcSqlTransaction$3.execute(JdbcSqlTransaction.java:300)
    at org.jumpmind.db.sql.JdbcSqlTransaction.executeCallback(JdbcSqlTransaction.java:396)
    ... 17 more
Tagsdialect: oracle, trigger

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2019-05-10 15:21 hanes New Issue
2019-05-10 15:24 hanes Status new => confirmed
2019-05-10 15:24 hanes Product Version => 3.10.2
2019-05-13 17:49 elong Tag Attached: dialect: oracle
2019-05-13 17:49 elong Tag Attached: trigger