For Oracle LONG RAW an itgenrst004 occurs: The type of the actual data must match the data type of the column

Query Tool 20.1.326

when doing a simple : select * from MARINA.EUL4_DOCUMENTS@MM_BRUINISSE

itgenrst004: The type of the actual data must match the data type of the column ‘DOC_DOCUMENT’ in ‘’.
Ensure that the actual data data type (currently ‘Byte[]’) in row #0 is cast to the data type (currently ‘string’)
DOCID(Int64/decimal): 1009444, DOC_NAME (String/string): Offe…ateTime/datetime): 01/1

On Oracle SQL client we have for DOC_DOCUMENT:

Bericht ID: 3da48e12-6f4e-40f7-89f4-e92f94e82f8dOpgetreden (UTC): 7-1-2021 07:55:41select * from MARINA.EUL4_DOCUMENTS@MM_BRUINISSEValidationException at Invantive.Basics.ValidationException…ctor(GlobalState owner, ExecutionOptions executionOptions, String messageCode, String messageText, String kindRequest, String localStackTrace, String nk, Exception innerException, Boolean inheritMessageCodeWhenPresent, Nullable1 uid, Boolean isRecoverable, String poolIdentityId) at Invantive.Data.SqlUtility.CheckRow(GlobalState owner, ExecutionOptions executionOptions, IProviderManager manager, ISparseArray row, DatabaseColumnDefinitionCollection fields, Nullable1 rowNumberContext, ObjectDefinition objectDefinition, String sqlStatement, Boolean isFromDml, Boolean disableRst004, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011AndOrRst013) at Invantive.Sql.V1.QueryPlan.JA.MoveNext() at Invantive.Data.ExtensionMethods.QRF1.HRF.MoveNext() at System.Collections.Generic.List1…ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Invantive.Data.ConnectionManager.WG.Q(QueryPlan ) at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at System.Linq.Buffer1…ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlansV1(GlobalState owner, ExecutionOptions executionOptions, QueryPlan[] queryPlans, String sqlStatement, ParameterList parameters) at Invantive.Data.ConnectionManager.ExecuteProviderPassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule) at Invantive.Data.ConnectionManager.PassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule) at Invantive.Data.ActionProceduresBase.PassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters) at Invantive.Producer.Windows.Forms.QueryToolResults.RQE(GlobalState , ExecutionOptions , IProgressNotifier , String , ParameterList , Boolean , Boolean , Boolean , Boolean ) at Invantive.Producer.Windows.Forms.QueryToolResults.LJE(GlobalState , ExecutionOptions , String , ParameterList ) at Invantive.Producer.Windows.Forms.QueryToolResults.VC.C() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() at Invantive.Data.SqlUtility.CheckRow(GlobalState owner, ExecutionOptions executionOptions, IProviderManager manager, ISparseArray row, DatabaseColumnDefinitionCollection fields, Nullable1 rowNumberContext, ObjectDefinition objectDefinition, String sqlStatement, Boolean isFromDml, Boolean disableRst004, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011AndOrRst013) at Invantive.Sql.V1.QueryPlan.JA.MoveNext() at Invantive.Data.ExtensionMethods.QRF1.HRF.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Invantive.Data.ConnectionManager.WG.Q(QueryPlan ) at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlansV1(GlobalState owner, ExecutionOptions executionOptions, QueryPlan[] queryPlans, String sqlStatement, ParameterList parameters) at Invantive.Data.ConnectionManager.ExecuteProviderPassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule)— End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Invantive.Data.ConnectionManager.ExecuteProviderPassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule) at Invantive.Data.ConnectionManager.PassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule)— End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Invantive.Data.ConnectionManager.PassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String callSafeNameOverrule) at Invantive.Data.ActionProceduresBase.PassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters) at Invantive.Producer.Windows.Forms.QueryToolResults.RQE(GlobalState , ExecutionOptions , IProgressNotifier , String , ParameterList , Boolean , Boolean , Boolean , Boolean ) in C:\Users\gle3.WS212\Documents\ws-master\Invantive.Producer\src\Invantive.Producer.Windows.Forms\QueryTool\QueryToolAvailableObjectsViewModel.cs:line 55 at Invantive.Producer.Windows.Forms.QueryToolResults.LJE(GlobalState , ExecutionOptions , String , ParameterList ) in C:\Users\gle3.WS212\Documents\ws-master\Invantive.Producer\src\Invantive.Producer.Windows.Forms\QueryTool\QueryToolAvailableObjectsViewModel.cs:line 30

A long raw is an ancient data type. I think it was replaced by BLOB starting Oracle 8 or 9 (something like start of millinium). A raw is a binary format. For instance, a GUID is stored by Invantiev SQL as a RAW(16)… A long raw is a binary of at most (I think) 2 GB document. There can be at most one long raw column per table; the actual data is stored outside of the data block since a data block was 512…8192 bytes at most and a pointer is stored in the Oracle block.

I will have to discuss this one internally. I recall that a LONG RAW was quite hard to access and even harder to write without reverting to Oracle Pro*C. Experience tells me it is not a wise plan to add support for this data type, but maybe Oracle has improved LONG RAW support over the years.

Thanks. keep me posted. No emergency on my side. This is the last data_type that generates an error in my full sync/migration process from oracle (out of 325 tables…) . I can easily skip this table for now!