FirebirdSQL logo

IBatch

L’interface IBatch vous permet de traiter plusieurs ensembles de paramètres dans une seule instruction.

  1. add

    void add(StatusType* status, unsigned count, const void* inBuffer)

    Ajoute le nombre de messages de inBuffer au lot. La taille totale des messages pouvant être ajoutés à un lot est limitée par le paramètre « TAG_BUFFER_BYTES_SIZE » lors de la création du lot.

  2. addBlob

    void addBlob(StatusType* status,
                 unsigned length, const void* inBuffer,
                 ISC_QUAD* blobId,
                 unsigned bpbLength, const unsigned char* bpb)

    Ajoute un octet length de inBuffer au paquet, le BLOB est situé à blobId.Si le blob doit être créé avec des paramètres autres que la valeur par défaut, BPB peut être passé (le format est le même que celui utilisé dans Attachment::createBlob).La taille totale des objets blob intégrés qui peuvent être ajoutés à un package (y compris les BPB facultatifs, les en-têtes BLOB, la taille du segment avec alignement) est limitée par le paramètre TAG_BUFFER_BYTES_SIZE lors de la création du package (affecte toutes les méthodes orientées BLOB à l’exception de registerBlob()).

  3. appendBlobData

    void appendBlobData(StatusType* status, unsigned length, const void* inBuffer)

    Étend le dernier BLOB ajouté en ajoutant des octets de la longueur length prise à partir de l’adresse inBuffer.

  4. addBlobStream

    addBlobStream(StatusType* status, unsigned length, const void* inBuffer)

    Ajoute des données BLOB (il peut s’agir de plusieurs objets ou d’une partie d’un seul BLOB) à un lot. L’en-tête de chaque BLOB du flux est aligné sur la limite getBlobAlignment() et contient 3 champs : le premier est le BLOB de 8 octets (au format ISC_QUAD), le second est la longueur de 4 octets du BLOB et le troisième est la longueur de 4 octets du BPB. L’en-tête d’objet blob ne doit pas franchir les limites de la mémoire tampon dans cet appel de fonction. Les données BPB sont placées immédiatement après l’en-tête, suivies des données d’objet blob.La longueur de l’objet blob inclut le BPB (le cas échéant). Toutes les données peuvent être distribuées sur plusieurs appels à addBlobStream(). Les données d’objets blob, à leur tour, peuvent être structurées dans le cas d’un objet blob partitionné, voir le chapitre Modification des données par lots.

  5. registerBlob

    void registerBlob(StatusType* status, const ISC_QUAD* existingBlob, ISC_QUAD* blobId)

    Permet d’utiliser des BLOB ajoutés à l’aide de l’interface standard IBlob dans le package. Cette fonction contient 2 paramètres ISC_QUAD*, il est important de ne pas les confondre – le deuxième paramètre (existingBlob) est un pointeur vers le BLOB déjà ajouté en dehors de la portée du package, le troisième (blobId) pointe vers le BLOB qui sera placé dans le message de ce package`.

  6. execute

    IBatchCompletionState* execute(StatusType* status, ITransaction* transaction)

    Exécute le paquet avec les paramètres qui lui sont transmis dans les messages. Si le paramètre MULTIERROR n’est pas défini dans le bloc de paramètres lors de la création d’un lot, l’exécution du lot sera arrêtée après la première erreur, un nombre illimité d’erreurs peut se produire en mode MULTIERROR, après une erreur l’exécution se poursuit avec le message suivant. Cette fonction renvoie l’interface IBatchCompletionState, qui contient toutes les informations demandées sur les résultats de l’exécution du lot.

  7. cancel

    void cancel(StatusType* status)

    Efface les tampons de message et les objets BLOB, en rétablissant le paquet dans l’état dans lequel il se trouvait lors de sa création.Notez que l’interface de comptage de références IBatch ne contient pas de fonction spéciale pour la fermer, utilisez release() pour le faire.

  8. getBlobAlignment

    unsigned getBlobAlignment(StatusType* status)

    Renvoie l’alignement requis pour les données mises en mémoire tampon par la fonction addBlobStream().

  9. getMetadata

    IMessageMetadata* getMetadata(StatusType* status)

    Renvoie le format des métadonnées utilisées dans les messages batch.

  10. setDefaultBpb

    void setDefaultBpb(StatusType* status, unsigned parLength, const unsigned char* par)

    Spécifie le BPB qui sera utilisé pour tous les objets blob qui n’ont pas de BPB par défaut.Doit être appelé avant qu’un message ou un objet blob ne soit ajouté à un lot.

  11. getInfo

    void getInfo(StatusType* status,
                 unsigned itemsLength, const unsigned char* items,
                 unsigned bufferLength, unsigned char* buffer)

    Demande des informations sur le package.

Balise pour le bloc de paramètres :

  • VERSION1

Balises pour les clusters dans le bloc de paramètres :

  • TAG_MULTIERROR (0/1) – Peut avoir plus d’un message d’erreur.

  • TAG_RECORD_COUNTS (0/1) - Enregistrement des enregistrements de messages modifiés ;

  • TAG_BUFFER_BYTES_SIZE (integer) - Taille maximale possible de la mémoire tampon sur le serveur Firebird (16 Mo par défaut, 256 Mo maximum) ;

  • TAG_BLOB_POLICY - La stratégie utilisée pour stocker les objets blob

  • TAG_DETAILED_ERRORS (integer) - Nombre de vecteurs contenant des informations d’erreur détaillées sont stockés dans l’état d’achèvement (64 Mo par défaut, 256 Mo au maximum).

Stratégies utilisées pour stocker les objets BLOB :

  • BLOB_NONE – vous ne pouvez pas utiliser de blobs intégrés (registerBlob() fonctionne de toute façon) ;

  • BLOB_ID_ENGINE - Les BLOBs sont ajoutés un par un, les blobs sont générés par le moteur Firebird ;

  • BLOB_ID_USER - Les BLOB sont ajoutés un par un, les BLOBs sont générés par l’utilisateur ;

  • BLOB_STREAM - Les objets blob sont ajoutés au flux.

Éléments autorisés dans l’appel getInfo() :

  • INF_BUFFER_BYTES_SIZE – Taille maximale possible de la mémoire tampon (définie dans TAG_BUFFER_BYTES_SIZE) ;

  • INF_DATA_BYTES_SIZE - La taille des messages qui ont déjà été ajoutés ;

  • INF_BLOBS_BYTES_SIZE - Taille des objets blob qui ont déjà été ajoutés ;

  • INF_BLOB_ALIGNMENT - l’alignement requis pour les données BLOB (duplique getBlobAlignment).

IPluginConfig

Interface IPluginConfig — est transmis au constructeur de plugins lorsque vous créez une instance du plugin (avec une configuration spécifique).

  1. getConfigFileName

    const char* getConfigFileName()

    Renvoie le nom recommandé du fichier dans lequel la configuration du plugin est censée être enregistrée.

  2. getDefaultConfig

    IConfig* getDefaultConfig(StatusType* status)

    Configuration du plugin chargée selon les règles standard.

  3. getFirebirdConf

    IFirebirdConf* getFirebirdConf(StatusType* status)

    Retourne la configuration principale de Firebird, en tenant compte des paramètres de la base de données avec laquelle la nouvelle instance de plugin fonctionnera.

  4. setReleaseDelay

    void setReleaseDelay(StatusType* status, ISC_UINT64 microSeconds)

    Utilisé par le plugin pour configurer le délai recommandé pendant lequel le module de plugin ne sera pas déchargé par le gestionnaire de plugin après que la dernière instance du plugin soit libérée de ce module.