Árvore de páginas

Ocorrência

A execução concorrente de algumas rotinas que trabalham com tabelas temporárias poderia causar falha na leitura do catálogo de tabelas do PostgreSQL, causando a mensagem de erro abaixo.

[20220521 06:53:09.824][Thread 144028][BEGINLOG]
Error : 1 (42P16) (RC=-1) - ERROR: multiple primary keys for table "tmpsc00" are not allowed;
Error while executing the query
Error : 1 () (RC=-1) - 
 ( From tPostgresConnection::DescribeIndexes )
Thread ID [144028]	User [Balcao03_]	IO [643]	Tables [29]	MaxTables [30]	Comment []	SP [ ]	Traced [No]	SQLReplay [No]	InTran [No]	DBEnv [POSTGRES/BDEAP]	DBThread [(ID 400417)]	Started [21/05/2022 06:53:07]	IP [192.168.1.151:1570]	IDLE [ ]	InTransact [ ]	Memory [0]	Running [ROP_REFRESHFILE for 0 s.]	RCV [139124]	SND [246563]	TCBuild [20210202-20220202]	TCVersion [21.1.1.1]	ARCH [64]	OS [LINUX]	BUILD [RELEASE]	
ALTER TABLE TMPSC00 ADD PRIMARY KEY (R_E_C_N_O_)
[ENDLOG]
Correção

Realizamos um ajuste no TOTVS | DBAccess, alterando a nomenclatura das tabelas temporárias, que agora passam a ter o ThreadID em sua composição.

Uma vez que o catálogo de tabelas temporárias do PostgreSQL é compartilhado, com o ajuste citado acima, conseguimos mitigar a possibilidade de fazer a leitura da tabela "errada".

Informações adicionais
  • Referente à ocorrência: TPGW-1147