Itgenpae003: Unknown provider attribute 'use-result-cache'. Possible valid alternatives: use-result-memory-cache

Ik krijg de volgende foutmelding in de procedure xxdru_initialize sinds we gewisseld zijn van versie 17.32 naar 20.0.

Hoe kan ik de itgenpae003 foutmelding oplossen?

2020-10-19 22:01:43.014 Warning itgendhb173: Context: begin   xxdru_initialize('L...'); end;
2020-10-19 22:01:43.114 Error itgencun016: Fout itgenpae003: itgenpae003: Unknown provider attribute 'use-result-cache'. Possible valid alternatives: use-result-memory-cache.

Call stack:

2020-10-19 22:01:45.118 Error itgenpae003: ValidationException
   at Invantive.Basics.ValidationException..ctor(GlobalState owner, ExecutionOptions executionOptions, String messageCode, String messageText, String kindRequest, String localStackTrace, String nk, Exception innerException, Boolean inheritMessageCodeWhenPresent, Nullable`1 uid, Boolean isRecoverable)
   at Invantive.Data.ProviderAttributes.SetOneSetting(GlobalState owner, ExecutionOptions executionOptions, String attributeCode, Object attributeValue, ProviderAttributeNewValueOrigin origin, Boolean failOnNotFound)
   at Invantive.Sql.SetStatementTree.<>c__DisplayClass10_0.<OnExecute>b__0(ISparseArray pSqlVariableRow)
   at Invantive.Sql.FirehoseResultSet.II.MoveNext()
   at Invantive.Sql.QueryPlan.WQ.MoveNext()
   at Invantive.Data.ExtensionMethods.BGS`1.JGS.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Sql.PSqlParser.ExecuteQueryTree(GlobalState owner, ExecutionOptions executionOptions, PSqlScope scope, SqlStatementContext ctx, ISparseArray variablesRow, DatabaseColumn[] intoVariables, ParameterList globalParameters, XS queryPlanState)
   at lambda_method(Closure , ISparseArray , ISparseArray )
   at lambda_method(Closure , ISparseArray , ISparseArray )
   at Invantive.Sql.PSqlStatementTree.<Fetch>d__29.MoveNext()
   at Invantive.Data.CompressedEnumerable`1.<GetEnumerator>d__8.MoveNext()
   at Invantive.Sql.FirehoseResultSet.II.MoveNext()
   at Invantive.Sql.QueryPlan.WQ.MoveNext()
   at Invantive.Data.ExtensionMethods.BGS`1.JGS.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.BM.M(QueryPlan )
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlans(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 IDH.P.ProcessStatement(GlobalState owner, ExecutionOptions executionOptions, String statement, ResultSet& resultSet, Action`2 fetchMoreRows, Action`9 executeStatement, Boolean isInInteractiveMode, ScriptingLanguageNextStepSpecification& nextStepSpecification)
   at IDH.P.ProcessStatements(GlobalState owner, ExecutionOptions executionOptions, Action`2 fetchMoreRows, Action`9 executeStatement, IEnumerable`1 statements, String sourceFileName, ScriptingLanguageNextStepSpecification& exitSpecification)
   at IDH.P.CM(String[] )
   at Invantive.Producer.QueryEngine.Program.Main(String[] arguments)
   at Invantive.Data.ProviderAttributes.SetOneSetting(GlobalState owner, ExecutionOptions executionOptions, String attributeCode, Object attributeValue, ProviderAttributeNewValueOrigin origin, Boolean failOnNotFound)
   at Invantive.Sql.SetStatementTree.<>c__DisplayClass10_0.<OnExecute>b__0(ISparseArray pSqlVariableRow)
   at Invantive.Sql.FirehoseResultSet.II.MoveNext()
   at Invantive.Sql.QueryPlan.WQ.MoveNext()
   at Invantive.Data.ExtensionMethods.BGS`1.JGS.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Sql.PSqlParser.ExecuteQueryTree(GlobalState owner, ExecutionOptions executionOptions, PSqlScope scope, SqlStatementContext ctx, ISparseArray variablesRow, DatabaseColumn[] intoVariables, ParameterList globalParameters, XS queryPlanState)
   at lambda_method(Closure , ISparseArray , ISparseArray )
   at lambda_method(Closure , ISparseArray , ISparseArray )
   at Invantive.Sql.PSqlStatementTree.<Fetch>d__29.MoveNext()
   at Invantive.Data.CompressedEnumerable`1.<GetEnumerator>d__8.MoveNext()
   at Invantive.Sql.FirehoseResultSet.II.MoveNext()
   at Invantive.Sql.QueryPlan.WQ.MoveNext()
   at Invantive.Data.ExtensionMethods.BGS`1.JGS.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.BM.M(QueryPlan )
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Invantive.Data.ConnectionManager.ExecuteAndCombineQueryPlans(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 IDH.P.ProcessStatement(GlobalState owner, ExecutionOptions executionOptions, String statement, ResultSet& resultSet, Action`2 fetchMoreRows, Action`9 executeStatement, Boolean isInInteractiveMode, ScriptingLanguageNextStepSpecification& nextStepSpecification)

De connector attribute use-result-cache heeft in versie 20.0 een nieuwe naam gekregen use-memory-result-cache zoals ook te vinden in de documentatie van elke connector die ook XML verwerkt (voorbeeld is Exact Online documentatie die zowel OData als XML verwerkt).

De betekenis is ongewijzigd:

Whether to use result sets cached in memory from previous queries that can answer the current query.

Je kunt de naam van de connector attribute wijzigen en de werking zou hetzelfde moeten blijven.

Deze wijziging van naam is gemaakt zodat het meer in lijn ligt met de HTTP caches en om ruimte te maken voor een diskcache op XML resultsets.

In de laatste versie van xxdru_initialize hoort iets te staan zoals:

    create or replace procedure xxdru_initialize
    ( p_agreement_code varchar2
    )
    is
    begin
      --
      -- Disable caches since the data will be retrieved at most once.
      --
      for r
      in
      ( select spe.code
               || case
                  when spe.provider_data_container_alias is not null
                  then '@' || spe.provider_data_container_alias
                  end
               attribute_code
        from   systemproviderattributes@datadictionary spe
        where  spe.provider_is_service_provider_flag = false
        and    spe.code in ('use-http-disk-cache', 'use-http-memory-cache', 'use-result-memory-cache')
      )
      loop
        execute immediate 'set ' || r.attribute_code || ' false';
      end loop;
      --
      -- To enable quick restarts.
      -- Enable when you want to reduce performance loss on restart when loading large tables.
      -- Needs data container alias.
      --
      --set http-disk-cache-max-age-sec 3600;
      --set requests-parallel-max 4;
      --
      -- Not yet covered by PSQL:
      -- alter persistent cache download feed license contract code p_agreement_code;
      --
      delete xxdru_desired_tables@inmemorystorage;
      delete xxdru_excluded_partitions@inmemorystorage;
      delete xxdru_sql_actions@inmemorystorage;
    end;