View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003949 | SymmetricDS | Improvement | public | 2019-05-10 15:21 | 2019-05-13 17:49 |
Reporter | hanes | Assigned To | |||
Priority | normal | ||||
Status | confirmed | Resolution | open | ||
Product Version | 3.10.2 | ||||
Summary | 0003949: Oracle Dialect does not support LONG RAW type | ||||
Description | Oracle 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 | ||||
Tags | dialect: oracle, trigger | ||||