Сбросить изменения на диск

Назначение
 

Изменения, производимые клиентским приложением, не сразу переносятся в файлы БД, т.к. СУБД ЛИНТЕР выполняет буферизацию ввода/вывода с целью оптимизации обработки запросов. Команда SNAP заставляет ядро СУБД ЛИНТЕР произвести запись накопленных изменений, не дожидаясь заполнения буфера вывода.

Эта команда позволяет регулировать загрузку буферов ввода/вывода, снижать их заполнение обновленными страницами и элементами очередей.

Параметры вызова

inter(CBL, NULL, NULL, [CondBuf], NULL);

Входные данные

Входными данными является контрольный блок CBL.

В нем должны быть заполнены поля:

Имя поля Значение
Command "SNAP"
Node Имя ЛИНТЕР-сервера
Выходные данные

Выходными данными является контрольный блок CBL.

В нем будут возвращены:

Имя поля Значение
CodErr Код завершения запроса к СУБД ЛИНТЕР
SysErr Код состояния ОС
Описание

Команду SNAP можно подавать в любом месте приложения.

Указание номера открытого канала не требуется (это неканальная команда). Номер канала в контрольном блоке можно не заполнять.

Идентификации пользователя не требуется, эту команду может подать любой пользователь.

Пример формирования команды
#include < string.h >
#include < stdlib.h >
#include "inter.h"


L_LONG LinterSNAP(L_CHAR * Node)
  {
  TCBL    CBL;

  memset(&CBL, 0, sizeof(TCBL));
  memcpy(CBL.Command, "SNAP", 4);
  if (strlen(Node)  > MAX_NODE_LEN)
    {
    return SQLLONGID;
    }
  memset(CBL.Node, 0, MAX_NODE_LEN);
  memcpy(CBL.Node, Node, strlen(Node));
  CBL.PrzExe &= ~Q_ASYNC;
  inter(&CBL, NULL, NULL, NULL, NULL);
  return CBL.CodErr;
  }
Пример использования команды
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include "inter.h"
#include "exlib.h"


#ifndef WINCE
int    main()
#else
int    exsnap()
#endif
  {
  TCBL    CBL;
  L_CHAR    Node[] = "        ";
  L_LONG  Err;

  /* ... */

  memset(&CBL,0,sizeof(TCBL));
  Err = LinterSNAP(Node);
  if (Err != NORMAL)
    PrintError(&CBL);
  printf("SNAP\n");

  /* ... */

  printf("End Example\n");

  return 0;
  }