Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: corrigir bug no script de atualização para versão 3.7.0 no sqlserver, postgresql e oracleSQL #691

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 17 additions & 20 deletions src/scripts/sei_atualizar_versao_modulo_pen.php
Original file line number Diff line number Diff line change
Expand Up @@ -2801,6 +2801,7 @@ protected function instalarV3070()
{
// Criação da tabela restrição
$objMetaRestricaoBD = $this->objMeta;
$SNULLO = BancoSEI::getInstance() instanceof InfraPostgreSql ? 'null' : PenMetaBD::SNULLO;

// Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado
$this->logar("CRIANDO TABELA DE CONFIGURACAO PARA RESTRICAO ");
Expand All @@ -2810,10 +2811,10 @@ protected function instalarV3070()
'id' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO),
'id_unidade' => array($objMetaRestricaoBD->tipoNumero(), PenMetaBD::NNULLO),
'id_unidade_rh' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO),
'id_unidade_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::SNULLO),
'nome_unidade_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO),
'id_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::SNULLO),
'nome_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO),
'id_unidade_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO),
'nome_unidade_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), $SNULLO),
'id_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO),
Copy link
Member

@caduvieira caduvieira Oct 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isso daqui tá certo? Faz diferença null ser maiúsculo ou minúsculo?

Copy link
Contributor Author

@mrglaydson mrglaydson Oct 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@caduvieira No método getOptionNull() no arquivo InfraMetaBD.php, a validação do parametro $strOption é feita em letras minúsculas especificamente para o PostgreSQL. Diferente de outros bancos de dados, o PostgreSQL utiliza os comandos DROP NOT NULL ou SET NOT NULL para lidar com colunas que aceitam valores nulos.

Referência:
https://github.com/pengovbr/sei/blob/9273779f0cfbd96f3dfd84f6ad70610ae1b0cfb1/src/infra/infra_php/InfraMetaBD.php#L1017

'nome_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), $SNULLO),
),
'pk' => array('cols' => array('id')),
'fks' => array(
Expand Down Expand Up @@ -2854,7 +2855,6 @@ protected function instalarV3070()
}

// Alterar colunas em md_pen_expedir_lote
$SNULLO = BancoSEI::getInstance() instanceof InfraPostgreSql ? 'null' : PenMetaBD::SNULLO;
$objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_repositorio_destino', $objMetaBD->tipoNumero(), $SNULLO);
$objMetaBD->alterarColuna('md_pen_expedir_lote', 'str_repositorio_destino', $objMetaBD->tipoTextoVariavel(250), $SNULLO);
$objMetaBD->alterarColuna('md_pen_expedir_lote', 'id_repositorio_origem', $objMetaBD->tipoNumero(), $SNULLO);
Expand All @@ -2875,16 +2875,16 @@ protected function instalarV3070()
}

// Adicionar coluna de atualização do registro
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'dth_atualizado', $objMetaBD->tipoDataHora(), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'dth_envio', $objMetaBD->tipoDataHora(), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'dth_atualizado', $objMetaBD->tipoDataHora(), $SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'dth_envio', $objMetaBD->tipoDataHora(), $SNULLO);

// Adicionar campos extrar para a tabela md_pen_expedir_lote
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_protocolo', $objMetaBD->tipoNumeroGrande(10), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_bloco', $objMetaBD->tipoNumero(10), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'sequencia', $objMetaBD->tipoNumero(10), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_andamento', $objMetaBD->tipoNumero(11), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_atividade_expedicao', $objMetaBD->tipoTextoVariavel(4000), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'tentativas', $objMetaBD->tipoNumero(), PenMetaBD::SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_protocolo', $objMetaBD->tipoNumeroGrande(10), PenMetaBD::NNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_bloco', $objMetaBD->tipoNumero(10), $SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'sequencia', $objMetaBD->tipoNumero(10), $SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_andamento', $objMetaBD->tipoNumero(11), $SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'id_atividade_expedicao', $objMetaBD->tipoTextoVariavel(4000), $SNULLO);
$objMetaBD->adicionarColuna('md_pen_expedir_lote', 'tentativas', $objMetaBD->tipoNumero(), $SNULLO);

$this->excluirChaveEstrangeira("md_pen_expedir_lote", "fk_bloco_protocolo", true);
$this->excluirChaveEstrangeira("md_pen_rel_expedir_lote", "fk_md_pen_rel_expedir_lote", true);
Expand All @@ -2900,9 +2900,6 @@ protected function instalarV3070()
$objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_proc_procedi", "md_pen_bloco_processo", array('id_protocolo'), "protocolo", array('id_protocolo'), false);
$objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_processo_bl", "md_pen_bloco_processo", array('id_bloco'), "md_pen_bloco", array('id'), false);

//Adicionar coluna para ordenar blocos por unidade
$objMetaBD->adicionarColuna('md_pen_bloco', 'ordem', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO);

$objInfraSequenciaRN = new InfraSequenciaRN();
$objInfraSequenciaDTO = new InfraSequenciaDTO();

Expand All @@ -2918,13 +2915,14 @@ protected function instalarV3070()
// Atualizar md_pen_bloco_processo->ordem para 1
$objInfraBanco->executarSql('delete from md_pen_bloco_processo');

$objInfraBanco->executarSql('update md_pen_bloco set ordem=1');

$objMetaBD->alterarColuna('md_pen_bloco_processo', 'id_bloco', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO);

// Excluir bloco legados
$this->limparBlocos();

//Adicionar coluna para ordenar blocos por unidade
$objMetaBD->adicionarColuna('md_pen_bloco', 'ordem', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO);

$tabelas = ['md_pen_bloco_protocolo',
'md_pen_seq_bloco_protocolo',
'md_pen_rel_expedir_lote',
Expand Down Expand Up @@ -3136,5 +3134,4 @@ private function removerTabelas($tabelas)
}

exit(1);
}

}
Loading