DBA: Postres e campi Data
copia linkDescrizione del difetto
Impossibile salvare i dati in un pannello se si utilizzava il database Postgres ed il pannello mostrava almeno un campo di tipo Datetime.
Il malfunzionamento era dovuto al driver .NET che veniva automaticamente copiata da In.de se l'applicazione C# utilizzava il database Postgres (versione 2.0.10).
Fino alla versione 10.0 di Instant Developer le applicazioni web in tecnologia C# utilizzavano il driver .NET per Postgres in versione 1.0.0.
A partire dalla versione 10.1 di Instant Developer il driver è stato aggiornato alla versione Stabile disponibile al momento, ovvero la versione 2.0.10.
Purtroppo, come indicato in questo articolo, la versione 2.0.10 conteneva un bug che rendeva impossibile modificare record nelle tabelle se almeno uno dei campi era di tipo DateTime.
La soluzione al malfunzionamento è stata consegnata dal programmatore FXJR ed inclusa nella versione BETA del driver 2.0.11.91 come indicato nelle note di rilascio della versione 2.0.11.91. Purtroppo l'ultima versione Stable è la versione 2.0.11 che non contiene tale patch e che, tra l'altro, non permette più il salvataggio dei dati poiché è stato inserito un ulteriore bug che genera malfunzionamenti nel sistema di auto-generazione delle query di INSERT, UPDATE e DELETE a partire dall'istruzione di SELECT.
Pertanto a partire dalla versione 11.1 di Instant Developer viene distribuita la versione 2.0.8 del driver .NET per Postgres che non conteneva ancora il bug relativo ai campi di tipo Datetime.
Attenzione: durante lo studio del problema è stato osservato che se si utilizzava In.de per creare tabelle su database Postgres e si utilizzava il tipo di dato DATE o TIME In.de utilizzava, rispettivamente, i tipi nativi "date" e "time" invece del tipo "timestamp". I tipi nativi "date" e "time" non sono correttamente gestiti dal driver. Pertanto a partire dalla versione 11.1 In.de utilizza il tipo nativo "timestamp" per i campi di tipo DATE, TIME e DATETIME.
Effetti del malfunzionamento
- Se si tentava di modificare una riga di un pannello che conteneva un campo Datetime si otteneva l'errore specified cast is invalid.
Soluzioni
Era sufficiente utilizzare il driver in versione 2.0.8 o precedenti.
Funzionalità interessate
L'utilizzo di campi di tipo DATE con il database Postgres.
Note
- Malfunzionamento relativo alla richiesta di assistenza 000749-2012.
Ultima modifica: 24/03/2021 / Validità: da 11.1.4900