Itgenrst009 error bij ophalen data

Ik lees een tabel uit met de volgende query:

create or replace table emp@inmemorystorage
as
select /*+ ods(false) */ *
from   AccountView..EMPLOYEE

Deze foutmelding treed ook op bij de ‘AccountView…OPENITEM’ en ‘AccountView…CONTACT’ op dezelfde kolom breedte foutmelding.

krijg ik de volgende foutmelding met code itgenrst009:

The column 'COMMENT1' in '' can contain a text of at most 4 characters. The value '...'  in row #68 exceeds the maximum length (903 characters). Ensure that the value fits the maximum capacity of the column.

Dit is een bijzonder lage beedte voor het veld. Ook staan er rare karakters (ik vermoed 0x00) in de waarde.

Hoe kan ik dit oplossen?

Invantive SQL voert een groot aantal integriteitscontroles uit op de data die het verzamelt bij de platformen. Een van die controles is dat de waarde van een tekst past bij de opgegeven maximale lengte. Deze controles hebben meestal een foutcode die begint met itgenrst (rst staat voor Result Set).

Analyse

Je kunt een analyse laten uitvoeren op je gegevens en de verwerking. Als blijkt dat het een bug is in de SQL engine, dan worden de kosten hiervan gecrediteerd en wordt de oorzaak planmatig weggenomen. Stuur hiervoor een ticket naar support@invantive.com.

Workaround

Je kunt het wel/niet uitvoeren van alle controles instellen via de omgevingsvariabele INVANTIVE_CHECK_ALL. Standaard staan alle controles AAN. Als je die op false of 0 instelt, dan worden de volgende controles niet uitgevoerd:

  • itgenrst004: The actual data processed must match the data type of the target column ‘…’ in ‘…’.
  • itgenrst007: The metadata of the columns ‘…’ specifies that null values should not appear, but there is a null value in row #999.
  • itgenrst009: The column ‘…’ in ‘…’ can contain a text of at most 999 characters. The value ‘…’ in row #999 exceeds the maximum length (999 characters).
  • itgenrst011 en itgenrst013: The value ‘…’ of the required column ‘…’ in ‘…’ is before the start of the Gregorian calendar (01-01-1753).

Je kunt ook een specifieke controle uitschakelen via de omgevingsvariabelen:

  • INVANTIVE_CHECK_ITGENRST004
  • INVANTIVE_CHECK_ITGENRST007
  • INVANTIVE_CHECK_ITGENRST009
  • INVANTIVE_CHECK_ITGENRST011

Ook hier gebruik je false, 0, true of 1.

Met INVANTIVE_CHECK_ITGENRST011 zet je ook itgenrst013 uit. Je kunt echter voor itgenrst011 en itgenrst013 ook de SQL engine vragen om er een geldige datumwaarde in te zetten zoals beschreven in dit topic.

Gebruik dit uitschakelen alleen als de verlaagde betrouwbaarheid van de gegevens het toestaat en tref aanvullende maatregelen om te zorgen dat de eisen die gesteld worden aan de gegevensverwerking anderszins gerealiseerd worden.

Merk op dat het gaat om omgevingsvariabelen. Die werken op alle platformen (Mac, iOS, Linux, Windows) vergelijkbaar: je stelt een omgevingsvariabele in, (exporteert 'm eventueel op UNIX-varianten) en het proces en alle nieuwe kindprocessen werken hiermee.

Andere controles dan genoemde kun je momenteel niet omzeilen.

Ik heb via cmd de omgevingsvariabele INVANTIVE_CHECK_ITGENRST009 op 0 ingesteld en ben daarna naar de map van het Query Tool gegaan en heb de executable gestart via Invantive.Producer.QueryTool.exe.

Echter, de controle lijkt nog steeds af te gaan bij genoemde query. Ik gebruik versie 20.1.278.

Hoe krijg ik de controle omzeild?

Probeer in plaats van 0 anders False. Lukt dan wel?