reclj.c
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:2k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  reclj.c  - Records in Logical Journal
  3.  *             Kernel of GNU SQL-server 
  4.  *
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by  Vera Ponomarenko
  10.  *
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts:   gss@ispras.ru
  26.  *
  27.  */
  28. /* $Id: reclj.c,v 1.246 1997/04/10 06:57:28 vera Exp $ */
  29. #include "destrn.h"
  30. #include "strml.h"
  31. #include "fdcltrn.h"
  32. #include "xmem.h"
  33. #define SZLJBF BD_PAGESIZE
  34. extern struct ADREC bllj;
  35. extern i4_t idtr;
  36. extern char *pbuflj;
  37. void
  38. wmlj (i4_t type, u2_t size, struct ADBL *cadlj, struct id_rel *idr,
  39.       struct des_tid *tid, CPNM cpn)
  40. {
  41.   char *a;
  42.   bllj.razm = size;
  43.   a = pbuflj;
  44.   if (size > SZLJBF)
  45.     fprintf (stderr,"TR.reclj: LJ's buffer is too small");
  46.   *a++ = type;
  47.   t4bpack (idtr, a);
  48.   a += size4b;
  49.   t2bpack (cadlj->npage, a);
  50.   a += size2b;
  51.   t2bpack (cadlj->cm, a);
  52.   a += size2b;
  53.   if (type == CPRLJ)
  54.     {
  55.       bcopy ((char *) &cpn, a, cpnsize);
  56.       a += cpnsize;
  57.       LJ_put (PUTHREC);
  58.     }
  59.   else if (type == RLBLJ)
  60.     LJ_put (PUTHREC);
  61.   else if (type == RLBLJ_AS_OP)
  62.     LJ_put (PUTREC);
  63.   else
  64.     {
  65.       t2bpack (idr->urn.segnum, a);
  66.       a += size2b;
  67.       t4bpack (idr->urn.obnum, a);
  68.       a += size4b;
  69.       t2bpack (idr->pagenum, a);
  70.       a += size2b;
  71.       t2bpack (idr->index, a);
  72.       a += size2b;
  73.       t2bpack (tid->tpn, a);
  74.       a += size2b;
  75.       t2bpack (tid->tindex, a);
  76.       a += size2b;
  77.       LJ_put (PUTREC);
  78.     }
  79. }