The scripts in the linked topic have been puzzled together, and dummy tables were created out of them to factor out Exact Online. This is the script used:
create or replace table timestamp_table@inmemorystorage
( sql_lastTimestamp int64
, sql_count int
, eol_count int
, eol_lastTimestamp int64
, insertupdate int
, to_insert int
, to_update int
, deleted int
, to_delete int
, to_modify int
, division int
, count_records_deleted int
, count_records_inserted int
);
insert
into timestamp_table@inmemorystorage
( sql_lastTimestamp
, sql_count
, eol_count
, eol_lastTimestamp
, insertupdate
, to_insert
, to_update
, deleted
, to_delete
, to_modify
, division
, count_records_deleted
, count_records_inserted
)
values
( 1234
, 100
, 200
, 1235
, 1
, 2
, 3
, 4
, 5
, 6
, 1234
, 8
, 9
);
create or replace table eol_count@inmemorystorage
as
select 1234 division
, 5678 eol_count
from dual@datadictionary
;
synchronize eol_count@inmemorystorage
to timestamp_table@inmemorystorage
with update all except $rowid
identified
by division
;
This indeed reproduced the itgenisr006
error as you indicated.
Upon further inspection, a typo was found in the column name in the except
clause. The primary key column name of in-memory tables is rowid$
, not $rowid
as in the script. Changing the name in the except
resolves the error.
We will investigate if we can improve the error message given that sync
supports both uni-directional and bi-directional synchronization, so the column name specified in the except
might not be found on both ends.