Não é possível fazer push down de funções de cadeia de caracteres com unidades de cadeia de caracteres na fonte de dados remota " Db2 na Data Virtualization

É possível usar as funções de sequência com unidades de sequência a partir de uma origem de dados remota do Db2; no entanto, a função de sequência não é submetida a push down na origem de dados remota do Db2.

Sintomas

É possível usar as funções de sequência com unidades de sequência em uma consulta, porém a função de sequência não é submetida a push down na origem de dados remota do Db2.

Por exemplo:

select SUBSTRING (col13_char, 1, 2,OCTETS) from n1

Resolvendo o problema

Para resolver esse problema, deve-se configurar as opções SAME_CODESET e STRING_UNITS. A opção SAME_CODESET fornece uma maneira de configurar o atributo do servidor SAME_CODESET externamente. A opção STRING_UNITS fornece uma maneira de configurar o atributo do servidor STRING_UNITS externamente. É a configuração de string_units para a origem de dados remota Db2.

  1. Obtenha o cid da tabela dvsys.rdb_connections.
    select cid, url from dvsys.rdb_connections;
  2. Verifique se o " codeset entre o banco de dados local Data Virtualization e a fonte de dados remota " Db2 é o mesmo.

    Execute o seguinte comando no banco de dados local do Data Virtualization e na fonte de dados remota " Db2 para obter a configuração " codeset.

    db2 get db cfg for <dbname> | grep "Database code set"

    Em que <dbname> é o nome do banco de dados e "Database code set" = UTF-8.

    Se a configuração for a mesma, será possível configurar SAME_CODESET para Y.

  3. Execute o comando a seguir na origem de dados remota Db2 para localizar a configuração de unidades de cadeia.
    db2 get db cfg for <dbname> | grep "STRING_UNITS"

    Em que < dbname> é o nome do banco de dados e a unidade de sequência padrão ("STRING_UNITS") é configurada como SYSTEM.

    Se a configuração for SYSTEM, configure STRING_UNITS para S. Se a configuração for CODEUNITS32, configure STRING_UNITS para C.

  4. Execute os comandos a seguir para especificar a opção SAME_CODESET e STRING_UNITS Use o valor < cid> que você obteve da etapa 1 e o valor para SAME_CODESET que você determinou na etapa 2 e o valor para STRING_UNITS que você determinou na etapa 3.
    alter server qplex options(set <cid>@same_codeset 'Y')
    alter server qplex options(set <cid>@string_units 'S')

    Ou

     alter server qplex options(set <cid>@same_codeset 'N')
     alter server qplex options(set <cid>@string_units 'C')

Para obter mais informações, consulte Sequências de caracteres na documentação do Db2.