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

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  destrn.h  -  Internal Transaction structures 
  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. #ifndef __destrn_h__
  29. #define __destrn_h__
  30. /* $Id: destrn.h,v 1.245 1997/03/31 03:46:38 kml Exp $ */
  31. #include "rnmtp.h"
  32. #include "pupsi.h"
  33. #include "tptrn.h"
  34. #include "pupans.h"
  35. #include "fieldtp.h"
  36. #include <stdio.h>
  37. #  include "deftr.h"
  38. typedef i4_t COST;
  39. typedef i2_t CPNM;
  40. struct d_r_bd
  41. {
  42.   i4_t relnum;
  43.   u2_t fieldnum;
  44.   u2_t fdfnum;
  45.   u2_t indnum;
  46. };
  47. struct d_r_t
  48. {
  49.   u2_t segnr;
  50.   u2_t pn_r;
  51.   u2_t ind_r;
  52.   struct d_r_t *drlist;
  53.   u2_t oscnum;
  54.   CPNM cpndr;
  55.   struct ldesind *pid;
  56.   struct d_r_bd desrbd;
  57. };
  58. struct des_index
  59. {
  60.   i4_t unindex;
  61.   u2_t rootpn;
  62.   char kifn;
  63. };
  64. struct ldesind
  65. {
  66.   struct des_field *pdf;
  67.   CPNM cpndi;
  68.   u2_t i_segn;
  69.   struct d_r_t *dri;
  70.   struct ldesind *listind;
  71.   u2_t oscni;
  72.   struct des_index ldi;
  73. };
  74. struct p_head
  75. {
  76.   i4_t csum;
  77.   i4_t idmod;
  78. };
  79. struct page_head
  80. {
  81.   struct p_head ph_ph;
  82.   u2_t lastin;
  83. };
  84. struct des_nseg
  85. {
  86.   u2_t lexnum;
  87.   u2_t mexnum;
  88.   struct des_exns *dextab;
  89.   u2_t mtobnum;
  90.   char **tobtab;
  91. };
  92. struct des_exns
  93. {
  94.   u2_t efpn;
  95.   u2_t funpn;
  96.   u2_t ldfpn;
  97.   u2_t freecntr;
  98. };
  99. struct prtob
  100. {
  101.   unsigned prob:1; /* relation or filter */
  102.   unsigned prsort:1;
  103.   unsigned prdbl:1;
  104.   unsigned prdrctn:1;
  105. };
  106. struct des_tob
  107. {
  108.   struct prtob prdt;
  109.   u2_t firstpn;
  110.   u2_t lastpn;
  111.   u2_t osctob;
  112.   u2_t free_sz;
  113. };
  114. struct des_trel
  115. {
  116.   struct des_tob tobtr;
  117.   i4_t  row_number;
  118.   u2_t fieldn;
  119.   u2_t fdftr;
  120.   u2_t keysntr;
  121. };
  122. struct des_fltr
  123. {
  124.   struct des_tob tobfl;
  125.   struct d_r_t *pdrtf;
  126.   u2_t selszfl;
  127.   u2_t keysnfl;
  128. };
  129. struct des_tid
  130. {
  131.   u2_t tpn;
  132.   u2_t tindex;
  133. };
  134. struct ldesscan
  135. {
  136.   struct ldesind *pdi;
  137.   u2_t curlpn;
  138.   u2_t offp;
  139.   u2_t offa;
  140.   i4_t sidmod;
  141.   struct des_tid ctidi;
  142.   struct des_tid mtidi;
  143.   char *dpnsc;
  144.   char *dpnsval;
  145.   char *cur_key;
  146. };
  147. struct d_mesc
  148. {
  149.   unsigned obsc:3; /* scan object */
  150.   unsigned modesc:3;
  151.   unsigned empty:1;
  152.   unsigned prcrt:1;
  153.   unsigned ancrt:1;
  154.   char *pobsc;
  155.   CPNM cpnsc;
  156.   char *pslc;
  157.   u2_t ndc;
  158.   u2_t fnsc;
  159.   u2_t fmnsc;
  160. };
  161. struct d_sc_r
  162. { /* relation scan descriptor */
  163.   struct d_mesc mescr;
  164.   struct des_tid curtid;
  165.   struct des_tid memtid;
  166. };
  167. struct d_sc_i
  168. { /* index scan descriptor */
  169.   struct d_mesc mesci;
  170.   struct ldesscan dessc;
  171. };
  172. struct d_sc_f
  173. { /* filter scan descriptor */
  174.   struct d_mesc mescf;
  175.   u2_t pnf;
  176.   u2_t offf;
  177.   u2_t mpnf;
  178.   u2_t mofff;
  179. };
  180. struct listtob
  181. {
  182.   u2_t prevpn;
  183.   u2_t nextpn;
  184. };
  185. struct p_h_tr
  186. {
  187.   struct listtob listtr;
  188.   u2_t linptr;
  189. };
  190. struct p_h_f
  191. {
  192.   struct listtob listfl;
  193.   u2_t freeoff;
  194. };
  195. struct dmbl_sz
  196. {
  197.   unsigned TAG:1;
  198.   unsigned bls:15;
  199. };
  200. struct dmbl_head
  201. {
  202.   struct dmbl_sz dmblsz;
  203.   struct dmbl_head *nextbl;
  204.   struct dmbl_head *prevbl;
  205. };
  206. struct A
  207. {
  208.   u2_t p_sn;
  209.   u2_t p_pn;
  210.   char *p_shm;
  211. };
  212. struct ind_page
  213. {
  214.   struct p_head ind_ph;
  215.   u2_t ind_nextpn;
  216.   u2_t ind_off;
  217.   u2_t ind_wpage;
  218. };
  219. #endif