FreeAdhocUDF pour InterBase et FireBird in deutschin englishen françaisen españolin italianoa português
homeprevious pagecontentnext pagelast page Seite empfehlen • advice website •Forum Mailing-Liste • mailinglist • liste de diffusionwas ich vermisse • what I missed •eMail Kommentar • eMail commentprintsitemap
 
Functions comprises dans FreeAdhocUDF.dll/.so/.dylib :
Fonctions UUID 13 fonctions
Avertissement voir http://fr.wikipedia.org/wiki/UUID
Utilitaires 6 fonctions
Conversions 2 fonctions
Lecture 5 fonctions
Depuis FireBird 2.0, au lieu de 0 donne ‘’(vide) ou ’17.11.1858’ <null>
Lors du RETURN: FREE_IT, sauf indication contraire
Les TestSQL avec NULL ne sont opérationnels que sous FireBird 2.0
 
Fonctions UUID: Avertissement
Remarque (voir http://fr.wikipedia.org/wiki/UUID):
Un identifiant unique universel (UUID) est un repère d’identification normalisé utilisé dans le développement de logiciels. La norme émane de l’Open Software Foundation (OSF) comme une partie du Distributed Computing Environment (DCE). L’objectif de L’UUID est de fournir un repère d’identification unique au monde pour les systèmes partagés sans avoir recours à une coordination centrale contraignante. Un UUID est codé sur 16 octets et divisé en 5 groupes de signes. Dans sa forme normalisée, l’UUID apparaît comme suit: 550e8400-e29b-11d4-a716-446655440000
Bien que l’unicité d’un UUID fourni ne soit pas garantie, le clé de 2128 ou 3,4028*1038 est si élevée que la probabilité d’obtenir deux UUID identiques est pratiquement nulle. C’est ainsi que les UUID peuvent être utilisés sans contrôle centralisé et sans risque qu’un UUID représente des applications différentes. Ces données marquées par un UUID peuvent être introduites dans une base de données sans risque de conflit. La forme la plus répandue de la
norme UUID est celle de Microsoft: Globally Unique Identifier (GUID).
Dans la version originale (Version 1) l’UUID est formé de l’adresse MAC que l’ordinateur génère et du nombre d’intervalles de cent nanosecondes écoulé depuis le début du calendrier grégorien selon l’horloge de l’ordinateur. En pratique l’algorithme est compliqué. Ce schéma a été critiqué car il manque de confidentialité en donnant l’identité de l’ordinateur et la date de création.
5 versions d’UUID sont définies dans la norme RFC4122
    1 Basée sur l’horloge de l’ordinateur
        a avec l’adresse MAC unique selon la norme IEEE 802
        b avec une adresse MAC générée par des nombres aléatoires selon la norme IEEE 802
    2 Version de sécurité DCE (avec les UIDs de POSIX)
    3 Basée sur les espaces de noms (hachage cryptographique MD5)
    4 Générée par des nombres aléatoires
    5 Basée sur les espaces de noms (hachage cryptographique SHA-1).
Seules les versions 1 et 4 permettent de réaliser, par un même algorithme, la décen tralisation de la génération d’un identifiant unique qui soit compatible à la fois avec Windows et Linux. Ce n’est pas le cas des versions 3 et 5, car la garantie d’unicité d’un espace de nom (URL) n’est pas absolue.
Comme cela dépend de l’application de savoir si l’identité de l’ordinateur et la date de création peuvent ou non être accessibles, 3 fonctions de génération d’UUID ont été prévues:
F_UUID1MAC
    Version 1 avec adresse MAC réelle
    Identité de l’ordinateur et date de création décelables
F_UUID1RAND
    Version 1 avec adresse MAC générée par nombres aléatoires
    Identité de la date de création seule décelable
F_UUID4
    Version 4
    Plus d’identité décelable.
Jan Newby est l’auteur d’une UUIDLIB qui met en œuvre la version 1b, mais dans laquelle l’adresse MAC générée est comprimée au lieu d’utiliser le masque pré vu par la norme RFC4122. L’UUID ainsi généré comprend alors 22 caractères au lieu de 36, ce qui donnerait à FireBird / Interbase (?) un gain de vitesse.
Nous avons également fait usage de cet algorithme dans les fonctions de conversion, de sorte que pour chacune des trois versions d’UUID générées il y ait une version comprimée disponible (qui corresponde aux caractéristiques de la version de base):
F_UUID1MACCOMPR, F_UUID1RANDCOMPR, F_UUID4COMPR.
nach oben • go top •
 
Fonctions UUID: Utilitaires
F_UUID1MAC Fonction de adhoc
Entrypoint uuid1mac Compatibles UTF-8
Entrée  aucune

Sortie CSTRING(36) Produit un identifiant unique universel (UUID) de version 1a
TestSQL
SELECT F_UUID1MAC() FROM RDB$DATABASE;
Remarque:
S’il n’y a pas d’adresse MAC disponible sur le Serveur, actionne la fonction F_UUID1RAND
nach oben • go top •
F_UUID1RAND Fonction de adhoc
Entrypoint uuid1rand Compatibles UTF-8
Entrée  aucune
Sortie CSTRING(36) Produit un identifiant unique universel (UUID) de version 1b
TestSQL
SELECT F_UUID1RAND() FROM RDB$DATABASE;
nach oben • go top •
F_UUID4 Fonction de adhoc
Entrée/Sortie compatibles avec rFunc (CREATEGUID)
Entrypoint uuid4 Compatibles UTF-8
Entrée  aucune
Sortie CSTRING(36) Produit un identifiant unique universel (UUID) de version 4
TestSQL
SELECT F_UUID4() FROM RDB$DATABASE;
nach oben • go top •
F_UUID1MACCOMPR Fonction de adhoc
En appui  à uuidlib
Entrypoint uuid1maccompr Compatibles UTF-8
Entrée  aucune
Sortie CSTRING(22) Produit un identifiant unique universel (UUID) comprimé de version 1a
Remarque (à propos de uuidlib):
CREATE_UUID() génère un guid de 22 caractères sous forme comprimée qui permute les sections composantes afin de permettre la compression du préfixe des index de Firebird. Tous les caractères utilisés dans cette UUID sont des caractères valides pour URL.
TestSQL
SELECT F_UUID1MACCOMPR() FROM RDB$DATABASE;
nach oben • go top •
F_UUID1RANDCOMPR Résultat compatible avec la fonction UUID_CREATE de uuidlib
Entrypoint uuid1randcompr Compatibles UTF-8
Entrée  aucune
Sortie CSTRING(22) Produit un identifiant unique universel (UUID) comprimé de version 1b
TestSQL
SELECT F_UUID1RANDCOMPR() FROM RDB$DATABASE;
nach oben • go top •
F_UUID4COMPR Fonction de adhoc
Entrypoint uuid4compr Compatibles UTF-8
Entrée  aucune
Sortie CSTRING(22) Produit un identifiant unique universel (UUID) comprimé de version 4
TestSQL
SELECT F_UUID4COMPR() FROM RDB$DATABASE;
nach oben • go top •
 
Fonctions UUID:  Conversions
F_UUID2UUIDCOMPR Résultat compatible avec la fonction GUID_TO_UUID de uuidlib
Entrypoint uuid2uuidcompr Compatibles UTF-8
Entrée  CSTRING(250) UUID valide
Sortie CSTRING(22) Convertit un identifiant unique universel (UUID) quelle que soit la version en un UUID comprimé
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d'un UUID comprimé au lieu d'un UUID normal:
SELECT UUIDTESTID, 'Input no RFC4122 UUID' AS ISCORRECT, F_UUID2UUIDCOMPR(UUIDCOMPR) FROM UUIDTEST WHERE UUIDCOMPR IS NOT NULL ORDER BY 1;
Transmission comme paramètre d’une chaîne de caractères quelconque au lieu d’un UUID normal:
SELECT 'Input no RFC4122 UUID' AS ISCORRECT, F_UUID2UUIDCOMPR('abcde') FROM RDB$DATABASE;
Transmission comme paramètre d’un UUID normal valide:
SELECT UUIDTESTID, UUIDCOMPR AS ISCORRECT, F_UUID2UUIDCOMPR(UUID) FROM UUIDTEST WHERE UUIDCOMPR IS NOT NULL ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUID2UUIDCOMPR(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UUIDCOMPR2UUID Résultat compatible avec la fonction UUID_TO_GUID de uuidlib
Entrypoint uuidcompr2uuid Compatibles UTF-8
Entrée  CSTRING(250) UUID comprimé valide
Sortie CSTRING(36) Convertit un UUID comprimé respectant la norme de compression en un UUID normal
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d’un UUID normal au lieu d’un UUID comprimé:
SELECT UUIDTESTID, 'Input no compressed UUID' AS ISCORRECT, F_UUIDCOMPR2UUID(UUID) FROM UUIDTEST WHERE UUIDCOMPR IS NOT NULL ORDER BY 1;
Transmission comme paramètre d’une chaîne de caractères quelconque au lieu d’un UUID comprimé:
SELECT 'Input no compressed UUID' AS ISCORRECT, F_UUIDCOMPR2UUID('abcde') FROM RDB$DATABASE;
Transmission comme paramètre d’un UUID comprimé valide:
SELECT UUIDTESTID, UUID AS ISCORRECT, F_UUIDCOMPR2UUID(UUIDCOMPR) FROM UUIDTEST WHERE UUIDCOMPR IS NOT NULL ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUIDCOMPR2UUID(NULL) FROM RDB$DATABASE;
nach oben • go top •
 
Fonctions UUID:  Lecture
F_UUIDVERSION Fonction de adhoc
Entrypoint uuidversion Compatibles UTF-8
Entrée  CSTRING(250) UUID valide
Sortie CSTRING(20) Fournit la variante et la version de l’UUID
Les variantes possibles sont:
    0        NCS (réservé à la compatibilité avec les anciennes versions)
    10    La variante actuelle selon RFC4122
    110    Microsoft (réservé à la compatibilité avec les anciennes versions)
    111    Réservé aux variantes futures
Les versions possibles sont:
    1    Basé sur l’horloge
        a. Avec une adresse MAC unique selon la norme IEEE 802
        b. Avec une adresse MAC calculée par nombre aléatoire selon la norme IEEE 802
    2    Version de sécurité DCE (avec UIDs de POSIX)
    3    Basé sur espaces de noms avec hachage MD5
    4    Généré par nombre aléatoire
    5    Basé sur espaces de noms avec hachage SHA-1.
La fonction renvoie:
    V1a
    V1b
    V3
    V4
    V5
TestSQL (pour TestISO.GDB)
SELECT ART, F_UUIDVERSION(UUID) FROM UUIDTEST ORDER BY UUIDTESTID;
SELECT NULL AS ISCORRECT, F_UUIDVERSION(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UUID1TIMESTAMP Fonction de adhoc
Entrypoint uuid1timestamp Compatibles UTF-8
Entrée  CSTRING(250) UUID valide de version 1
Sortie TIMESTAMP Fournit, à partir d’un UUID1, les date et heure auxquelles cet UUID a été créé
Si le paramètre transmis n’est pas correct, la fonction renvoie 31.12.1899 00:00:00, soit un temps 0 correspondant au point de départ des dates dans InterBase/FireBird.
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d’un UUID comprimé au lieu d’un UUID normal:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, NULL AS ISCORRECT, F_UUID1TIMESTAMP(UUIDCOMPR) FROM UUIDTEST ORDER BY 1;
Transmission comme paramètre d’un UUID normal valide:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, ZEITSTEMPEL AS ISCORRECT, F_UUID1TIMESTAMP(UUID) FROM UUIDTEST ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUID1TIMESTAMP(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UUID1COMPRTIMESTAMP Fonction de adhoc
Entrypoint uuid1comprtimestamp Compatibles UTF-8
Entrée  CSTRING(250) UUID comprimé valide de version 1
Sortie TIMESTAMP Fournit, à partir d’un UUID1, les date et heure auxquelles cet UUID a été créé
Si le paramètre transmis n’est pas correct, la fonction renvoie 31.12.1899 00:00:00, soit un temps 0 correspondant au point de départ des dates dans InterBase/FireBird.
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d’un UUID comprimé au lieu d’un UUID normal:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, NULL AS ISCORRECT,
F_UUID1COMPRTIMESTAMP(UUID) FROM UUIDTEST ORDER BY 1;
Transmission comme paramètre d’un UUID normal valide:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, ZEITSTEMPEL AS ISCORRECT,
F_UUID1COMPRTIMESTAMP(UUIDCOMPR) FROM UUIDTEST ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUID1COMPRTIMESTAMP(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UUID1MACMAC Fonction de adhoc
Entrypoint uuid1macmac Compatibles UTF-8
Entrée  CSTRING(250) UUID valide de version 1
Sortie CSTRING(17) Fournit l’adresse MAC de l’ordinateur sur lequel l’UUID a été créé
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d’un UUID normal au lieu d’un UUID comprimé:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, NULL AS ISCORRECT, F_UUID1MACMAC(UUIDCOMPR) FROM UUIDTEST ORDER BY 1;
Transmission comme paramètre d’un UUID comprimé valide:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, MACADRESS AS ISCORRECT, F_UUID1MACMAC(UUID) FROM UUIDTEST ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUID1MACMAC(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UUID1MACCOMPRMAC Fonction de adhoc
Entrypoint uuid1maccomprmac Compatibles UTF-8
Entrée  CSTRING(250) UUID comprimé valide de version 1
Sortie CSTRING(17) Fournit l’adresse MAC de l’ordinateur sur le quel l’UUID a été créé
TestSQL (pour TestISO.GDB)
Transmission comme paramètre d’un UUID normal au lieu d’un UUID comprimé:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, NULL AS ISCORRECT, F_UUID1MACCOMPRMAC(UUID) FROM UUIDTEST ORDER BY 1;
Transmission comme paramètre d’un UUID comprimé valide:
SELECT UUIDTESTID, F_UUIDVERSION(UUID), ART, MACADRESS AS ISCORRECT, F_UUID1MACCOMPRMAC(UUIDCOMPR) FROM UUIDTEST ORDER BY 1;
SELECT NULL AS ISCORRECT, F_UUID1MACCOMPRMAC(NULL) FROM RDB$DATABASE;
vorige Seite • previous page • passée sitenach oben • go top • vers le hautnächste Seite • next page • prochain site