Árvore de páginas

Correções

Melhorias

Incidente: A migração de uma tabela (através do DBTools) que contém índices com o campo S_T_A_M_P_ em sua estrutura apresentava mensagem de erro do Banco de Dados, pois ocorria falha na identificação da estrutura do índice.

Error : 1909 (37000) (RC=-1) - [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot use duplicate column names in index. Column name 'D_E_L_E_T_' listed more than once.
Error : 1909 (00000) (RC=-1) - 
 ( From tISAMFile::CreateIndex )
Thread ID [24624]	User [danilo]	IO [27]	Tables [1]	MaxTables [1]	Comment [> Criando índice [TPGW1/TPGW1_ST] (D_E_L_E_T_)...]	SP [ ]	Traced [No]	SQLReplay [No]	InTran [No]	DBEnv [MSSQL/DSTST64_MSSQL]	DBThread [(SPID 65)]	Started [05/10/2022 18:18:14]	IP [127.0.0.1]	IDLE [ ]	InTransact [ ]	Memory [0]	Running [ROP_CREATEINDEX for 0 s.]	RCV [4329]	SND [1576]	TCBuild [20210202-20220802]	TCVersion [21.1.1.8]	ARCH [64]	OS [WINDOWS]	BUILD [RELEASE]	
CREATE INDEX TPGW1_ST ON dbo.TPGW1(D_E_L_E_T_,R_E_C_N_O_,D_E_L_E_T_)

Melhoria: Criamos um mecanismo para tratar os índices em questão, trazendo suporte a sua migração através do DBTools.

Referente à ocorrência: TPGW-1210

Novas Implementações


Ocorrência: Queries realizadas pela aplicação AdvPL, que primordialmente usam campos do tipo UUID ( Unique Idenrtifier ) apresentam baixo desempenho em tabelas com muitas linhas, devido a ausência de um índice que contemple o(s) campo(s) UUID. 

Implementação: O DBAccess passa a criar automaticamente um índice interno no banco de dados, para cada coluna de tabela que seja criada com tratamento de UUID (Unique Identifier) no banco de dados, no momento da criação da tabela ou da adição da coluna. Caso a tabela e a coluna já existam como UUID, a primeira abertura da tabela pelo DBACCESS, verifica e cria o índice para a coluna sob demanda. 

Observações: A criação dos índices internos por UUID tende a consumir mais tempo quanto mais linhas houver na tabela. 

Referente a ocorrencia : TPGW-1343

Como a criação dos índices para as colunas com tipo UUID está habilitada por default para ser feita na primeira abertura da tabela pelo DBAccess, enquanto o índice está sendo criado a rotina em questão fica parada na operação ROP_OPEN, mostrada no monitor de conexóes do DBAccess, até que o índice seja criado. E quanquer outro processo ou conexão também vai ficar aguardando enquanto a criação do índice náo for concluída.  Para desligar esse comportamento de verificação e criação automática de índices, pode ser usada a configuração UUIDIndex=0 no arquivo dbaccess.ini, na seção do DSN/AMBIENTE, ou na seção GENERAL