Que faire des champs int64?

Selon cette note de la doc de http://doc.4d.com/4Dv17/4D/17/CAST.300-3786721.en.htmlCAST>:
“Note: The CAST function is not compatible with “Integer 64 bits” type fields in compiled mode.”

Si on ne peut pas “caster” un int64 en alphanumérique en compilé, on ne peut plus le lire qu’avec un réel comme variable de réception :
SELECT monCham64 FROM maTable INTO :$mnReel
Mais, du coup, on prend le risque de perdre des chiffres significatifs :
Num(“125656535228786”) -> 1,256565352288e+14
Num(“125835254264217”) -> 1,258352542642e+14

J’ai tout de même fait un test de lecture avec CAST en v17 compilée de ces 2 nombres à 15 digits, stockés dans un champ int64 :
<code 4D>
TABLEAU TEXTE($_at;0)
Début SQL
SELECT CAST (int64bits AS ALPHA_NUMERIC)
FROM Table1
INTO :$_at;
Fin SQL
ASSERT($_at{1}=“125656535228786”)
ASSERT($_at{2}=“125835254264217”)
</code 4D>
Je ne vois aucune différence en interprété et en compilé, contrairement à ce que dit la doc.

En conclusion, j’en suis à me demander si :

  • la doc a raison au sujet de CAST ; comme je ne vois pas comment lire un int64 sans risque de perde de chiffres significatifs, je dois considérer que ce type de champ ne peut servir qu’en bonne connaissance de cause
  • la doc a tord au sujet de CAST (du moins à partir de la v17) ; ce serait bien de la corriger car ça ouvre des perspectives intéressantes pour ce type de champ

Pourrait-on m’éclairer ?

Pour ma part, tant que ce type n’est pas géré par le langage, je me garderais bien de l’utiliser pour un champ.

Bien d’accord, je ne vais pas stocker si je suis démuni pour lire correctement. Cela dit, les uuid ne sont pas gérés par le langage (je veux dire “en tant que nombres sur 128bits”), mais on peut s’en servir car un transtypage correct est assuré. Dans le cas du int64, j’essaie de savoir si la doc n’a pas un train de retard sur ce que je constate avec CAST. Je me dis aussi qu’en attendant mieux, s’ils ont pu assurer une conversion en hexa pour les int128, pourquoi pas n’avons-nous rien pour les int64.

Bon.
Comme la doc dit que CAST ne marche pas et que je constate que ça marche, je vais déposer un bug pour que CAST dysfonctionne comme prévu.
Si on me répond “standard behaviour”, j’aurai la réponse que je n’arrive pas à avoir par les voies diplomatiques.
keskifopa être tordu quand même.