Itgenrst010 bij gebruik synchronize onder release 25.0

Bij uitvoering van het volgende SQL-statement op versie 25.0.5:

synchronize doel@InMemoryStorage
to          bron@cs
with        insert
            or
            update all except created_by, created_at, date_created, session_created, uid
            ignore changes to modified_by, modified_at, date_modified, session_modified, created_by, created_at, date_created, session_created, uid
identified
by          table_alias
,           identity_key

treedt de volgende melding op die niet optreedt bij release 24.0:

itgenrst010
The result set has 16 defined fields, but row #1 has only values for 14 fields.

De tabel bron@cs heeft 16 velden, de tabel doel@InMemoryStorage heeft er 14 (inclusief rowid$).

Verwachting is dat de velden uit bron@cs die ook bestaan in doel@InMemoryStorage gevuld worden en geladen in de doeltabel.

Callstack:

InvantiveSystemException
   at Invantive.Basics.ValidationException..ctor(GlobalState owner, ExecutionOptions executionOptions, String messageCode, String errorMessage, String kindRequest, String localStackTrace, String nk, Exception innerException, Boolean inheritMessageCodeWhenPresent, Nullable`1 uid, Nullable`1 isRecoverable, String poolIdentityId, String url, Nullable`1 partyUid, String partitionCode, String tableName, String parameter1, String parameter2, String parameter3, String parameter4, String parameter5, String clientId)
   at Invantive.Basics.InvantiveSystemException..ctor(GlobalState owner, ExecutionOptions executionOptions, String validationCode, String errorMessage, String kindRequest, String stackTrace, String nk, Exception innerException, Boolean inheritMessageCodeWhenPresent, Nullable`1 uid, Boolean isRecoverable, String poolIdentityId, String partitionCode, String tableName, String parameter1, String parameter2, String parameter3, String parameter4, String parameter5, String clientId)
   at Invantive.Data.SqlUtility.CheckRow(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, IProviderManager manager, ISparseArray row, IColumnDefinitionCollection fields, Nullable`1 rowNumberContext, ObjectDefinition objectDefinition, String sqlStatement, Boolean isFromDml, String operationType, String fullTableNameOverrule, Rst004Mode rst004Mode, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011AndOrRst013, Boolean disableRst046, Boolean disableRst054)
   at Invantive.Data.SqlUtility.CheckRows(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, IProviderManager manager, ResultSet resultSet, IColumnDefinitionCollection fields, String sqlStatement, Boolean isFromDml, String operationType, String fullTableNameOverrule, Rst004Mode rst004Mode, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011)
   at Invantive.Sql.V1.SynchronizeStatementTree.InsertDelayedOnRight(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, IQueryStatePerExecution queryStatePerExecution, SparseArrayPool sparseArrayPool, IDataProvider rightProvider, ObjectDefinition leftObjectDefinition, ObjectDefinition rightObjectDefinition, Nullable`1 maxBatchSizeRows, Boolean allFieldsMatch, Dictionary`2 matchingFieldsToRightMinExcluded, HashSet`1 excludedInsertFieldsHashSet, List`1 rowsToInsert, Int64& rowsInsertAttempted, Func`1 rowsTotalAttempted, ProjectionMeta beforeInsertOnRightProjection, ProjectionMeta insteadOfInsertOnRightProjection, ProjectionMeta afterInsertOnRightProjection, ISparseArray pSqlVariableRow, Int32 beforeInsertOnRightVariableCount, Int32 insteadOfInsertOnRightVariableCount, Int32 afterInsertOnRightVariableCount, List`1 errorsOverall, Int64& errorCntOverall, Int64& errorCntInsertRight, Nullable`1 errorCntOverallMax)
   at Invantive.Sql.V1.SynchronizeStatementTree.<Synchronize>d__99.MoveNext()
   at Invantive.Data.CompressedEnumerable`1.<GetEnumerator>d__10.MoveNext()
   at Invantive.Sql.V1.FirehoseResultSet.<Iterator>d__71.MoveNext()
   at Invantive.Sql.V1.QueryPlan.<CorrectAndCheckData>d__17.MoveNext()
   at Invantive.Data.ExtensionMethods.IteratorWithFinally`1.IteratorWithFinallyEnumerator.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlansV1(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, QueryPlan[] queryPlans, String sqlStatement, ParameterList parameters)
   at Invantive.Data.ConnectionManager.ExecuteProviderPassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, SqlExecutionStep sqlExecutionStep, String callSafeNameOverrule)
   at Invantive.Data.ConnectionManager.c(GlobalState owner, ExecutionOptions , SqlExecutionStep , String actionSql, ParameterList , String )
   at Invantive.Producer.Windows.Forms.QueryToolResults.A(GlobalState owner, ExecutionOptions , IProgressNotifier , String , ParameterList bindVariables, Boolean , Boolean , Boolean , Boolean )
   at Invantive.Producer.Windows.Forms.QueryToolResults.A(GlobalState , ExecutionOptions executionOptions, String , ParameterList )
   at Invantive.Producer.Windows.Forms.QueryToolResults.<>c__DisplayClass83_0.<FetchData>b__0()
   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, SqlExecutionStep sqlExecutionStep, IProviderManager manager, ISparseArray row, IColumnDefinitionCollection fields, Nullable`1 rowNumberContext, ObjectDefinition objectDefinition, String sqlStatement, Boolean isFromDml, String operationType, String fullTableNameOverrule, Rst004Mode rst004Mode, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011AndOrRst013, Boolean disableRst046, Boolean disableRst054)
   at Invantive.Data.SqlUtility.CheckRows(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, IProviderManager manager, ResultSet resultSet, IColumnDefinitionCollection fields, String sqlStatement, Boolean isFromDml, String operationType, String fullTableNameOverrule, Rst004Mode rst004Mode, Boolean disableRst007, Boolean disableRst009, Boolean disableRst011)
   at Invantive.Sql.V1.SynchronizeStatementTree.InsertDelayedOnRight(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, IQueryStatePerExecution queryStatePerExecution, SparseArrayPool sparseArrayPool, IDataProvider rightProvider, ObjectDefinition leftObjectDefinition, ObjectDefinition rightObjectDefinition, Nullable`1 maxBatchSizeRows, Boolean allFieldsMatch, Dictionary`2 matchingFieldsToRightMinExcluded, HashSet`1 excludedInsertFieldsHashSet, List`1 rowsToInsert, Int64& rowsInsertAttempted, Func`1 rowsTotalAttempted, ProjectionMeta beforeInsertOnRightProjection, ProjectionMeta insteadOfInsertOnRightProjection, ProjectionMeta afterInsertOnRightProjection, ISparseArray pSqlVariableRow, Int32 beforeInsertOnRightVariableCount, Int32 insteadOfInsertOnRightVariableCount, Int32 afterInsertOnRightVariableCount, List`1 errorsOverall, Int64& errorCntOverall, Int64& errorCntInsertRight, Nullable`1 errorCntOverallMax)
   at Invantive.Sql.V1.SynchronizeStatementTree.<Synchronize>d__99.MoveNext()
   at Invantive.Data.CompressedEnumerable`1.<GetEnumerator>d__10.MoveNext()
   at Invantive.Sql.V1.FirehoseResultSet.<Iterator>d__71.MoveNext()
   at Invantive.Sql.V1.QueryPlan.<CorrectAndCheckData>d__17.MoveNext()
   at Invantive.Data.ExtensionMethods.IteratorWithFinally`1.IteratorWithFinallyEnumerator.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlansV1(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, QueryPlan[] queryPlans, String sqlStatement, ParameterList parameters)
   at Invantive.Data.ConnectionManager.ExecuteProviderPassthroughSqlActionTable(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, SqlExecutionStep sqlExecutionStep, 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, SqlExecutionStep sqlExecutionStep, String callSafeNameOverrule)
   at Invantive.Data.ConnectionManager.c(GlobalState owner, ExecutionOptions , SqlExecutionStep , String actionSql, ParameterList , String )
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Invantive.Data.ConnectionManager.c(GlobalState owner, ExecutionOptions , SqlExecutionStep , String actionSql, ParameterList , String )
   at Invantive.Producer.Windows.Forms.QueryToolResults.A(GlobalState owner, ExecutionOptions , IProgressNotifier , String , ParameterList bindVariables, Boolean , Boolean , Boolean , Boolean )
   at Invantive.Producer.Windows.Forms.QueryToolResults.A(GlobalState , ExecutionOptions executionOptions, String , ParameterList )

De foutmelding is reproduceerbaar met volgende statements:

Voer uit op PostgreSQL:

create table test_sync_bug
as
select 'A' dummy_string
,      1347843 dummy_int32
,      cast(null as varchar(240)) e1
,      cast(null as numeric(15,0)) e2

Op UniversalSQL Server:

create or replace table target@inmemorystorage
as
select 'B' dummy_string
,      d.dummy_int32_null dummy_int32
,      d.dummy_int64_null dummy_int64
from   dual@datadictionary d

en dan het statement:

synchronize target@inmemorystorage
to          test_sync_bug@pg
identified
by          dummy_string

Een oplossing is beschikbaar vanaf release 25.0.12.

Dit topic is 3 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.