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

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  funall.h  - contains descriptions of functions from engine library.
  3.  *  The following parts describe:
  4.  *      - functions for connection compiler with DB    (catfun.c)
  5.  *      - engine interface library                     (libfunc1.c)
  6.  *      - DB engine interface                          (lib1.c)
  7.  *      - engine interaction support                   (copy.c, initbas.c)
  8.  *      - getting DB statistics for query optimizer    (estlib.c)
  9.  *
  10.  * This file is a part of GNU SQL Server
  11.  *
  12.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  13.  *  Developed at the Institute of System Programming
  14.  * 
  15.  *  This program is free software; you can redistribute it and/or modify
  16.  *  it under the terms of the GNU General Public License as published by
  17.  *  the Free Software Foundation; either version 2 of the License, or
  18.  *  (at your option) any later version.
  19.  *
  20.  *  This program is distributed in the hope that it will be useful,
  21.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23.  *  GNU General Public License for more details.
  24.  *
  25.  *  You should have received a copy of the GNU General Public License
  26.  *  along with this program; if not, write to the Free Software
  27.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  28.  *
  29.  *  Contacts: gss@ispras.ru
  30.  */
  31. /* $Id: funall.h,v 1.245 1997/03/31 03:46:38 kml Exp $ */
  32. /**********************************************************/
  33. /*             engine interface library                   */
  34. /*  functions for connection compiler with DB             */
  35. /*  (catfun)                                              */
  36. /**********************************************************/
  37. #ifndef __FUNALL_H__
  38. #define __FUNALL_H__
  39. #include "setup_os.h"
  40. #include "typeif.h"
  41. #include "type.h"
  42. #include "sql_type.h"
  43. i4_t   ind_read  __P((Indid * indid, i4_t ind_clm_cnt, DataUnit **ind_cond_du,
  44.                 i4_t read_cnt, i4_t *read_col_nums, DataUnit **read_du,
  45.                 Scanid *ext_scanid, char mode));
  46. i4_t   tab_read  __P((Tabid * tabid, i4_t tab_clm_cnt, i4_t max_clm_num,
  47.                 i4_t *tab_col_nums, DataUnit **tab_cond_du,
  48.                 i4_t read_cnt, i4_t *read_col_nums, DataUnit **read_du));
  49. void  db_func_init  __P((void));
  50. i4_t   existsc  __P((char  *autnm));
  51. i4_t   existtb  __P((char *owner,char *tabnm,Tabid *tabid,char *type));
  52. i4_t   existcl  __P((Tabid *tabid,char *colnm,sql_type_t *coltype,i4_t *colnumb ,i4_t *a));
  53. i4_t   tab_cl  __P((Tabid * tabid, i2_t clnm, sql_type_t * coltype, 
  54.               char **cl_name, char **defval, char **defnull,i4_t *a));
  55. i4_t   get_col_stat  __P((i4_t untabid, i2_t clnm, col_stat_info *col_info));
  56. i4_t   put_col_stat  __P((i4_t untabid, i2_t clnm, col_change_info *change_info));
  57. i4_t   tabclnm  __P((Tabid * tabid, i4_t *nnulcolnum));
  58. i4_t   get_nrows  __P((i4_t untabid));
  59. i4_t   put_nrows  __P((i4_t untabid, i4_t nrows));
  60. i4_t   tabpvlg  __P((i4_t untabid, char *user, char *acttype,
  61.                i4_t un, i4_t *ulist,i4_t rn, i4_t *rlist));
  62. Constr_Info *get_constraints  __P((i4_t untabid, i4_t tab_clm_num));
  63. char *get_chconstr  __P((i4_t chconid, i4_t consize));
  64. i4_t   getview  __P((i4_t untabid, char **res_segm));
  65. i4_t   drop_table  __P((i4_t untabid));
  66. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  67. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  68. /*             engine interface library (part 1)                   */
  69. /*                         (libfunc1)                              */
  70. /*=================================================================*/
  71. i4_t  opentscan  __P(( Tabid *tabid,i4_t *spn,char mode,i4_t nr,i4_t *rlist,
  72. i4_t nc,cond_buf_t cond,i4_t nm,i4_t *mlist));
  73. i4_t  openiscan  __P((Indid *indid,i4_t *spn, char mode,i4_t nr,i4_t *rlist,
  74. i4_t nc,cond_buf_t cond,i4_t nra,cond_buf_t range,i4_t nm,i4_t *mlist));
  75. i4_t  openfscan  __P((Filid *filid,char *mode,i4_t nr,i4_t *rlist,
  76. i4_t nc,cond_buf_t cond,i4_t nm,i4_t *mlist));
  77. i4_t findrow  __P((Scanid scanid, i4_t nr, DataUnit **colval));
  78. i4_t read_row  __P((Scanid scanid, i4_t nr, i4_t *rlist, DataUnit **colval));
  79. i4_t  saposit  __P((i4_t scanid));
  80. i4_t  reposit  __P((i4_t scanid));
  81. i4_t  delrow  __P((i4_t scanid,i4_t *spn));
  82. i4_t  mod_data  __P((Scanid scanid, i4_t nm, DataUnit *mod_from,
  83.        sql_type_t *dt_types, i4_t *spn, i4_t *mlist));
  84. i4_t  ins_data  __P((Tabid *tabid, i4_t nv, DataUnit *ins_from, sql_type_t *dt_types, i4_t *spn));
  85. i4_t  insrow  __P((Tabid *tabid,i4_t nv,u2_t *lenval ,Colval colval,i4_t *spn));
  86. i4_t  instid  __P((Scanid scanid, Filid filid));
  87. i4_t  closescan  __P((Scanid scanid));
  88. i4_t  crepview  __P((Tabid *tabid,Segid segid,i4_t *spn ,i4_t colnum ,
  89.        sql_type_t *coltype));
  90. i4_t  creptab  __P((Tabid *tabid, Segid segid, i4_t *spn , i4_t colnum,
  91.       i4_t nnulnum, sql_type_t *coltype));
  92. i4_t  crettab  __P((Tabid *tabid, i4_t colnum,i4_t nnulnum , sql_type_t *coltype));
  93. i4_t  crefil  __P((Filid *filid, Tabid *tabid));
  94. i4_t  creind  __P((Indid *indid, Tabid *tabid, i4_t *spn ,char unique,
  95.      char clust,i4_t ncn,i4_t *cnlist));
  96. i4_t  dropptab  __P((Tabid *tabid , i4_t *spn));
  97. i4_t  dropttab  __P((Tabid *tabid));
  98. i4_t  dropind  __P((Indid *indid , i4_t *spn));
  99. i4_t  addcol  __P((Tabid *tabid, i4_t *spn ,i4_t ncn ,sql_type_t *coltype));
  100. i4_t  savepoint  __P((void));
  101. i4_t  rollback __P((i4_t spno));
  102. void commit __P((void));
  103. i4_t  sorttab  __P((Tabid * itabid, Tabid * otabid, i4_t ns,
  104.               i4_t *slist, char order, char fl));
  105. i4_t  sortfil  __P((Filid *ifilid, Filid *ofilid));
  106. i4_t  make_group  __P((Tabid *itabid, Tabid *otabid,i4_t ng,i4_t *glist,char order,
  107.  i4_t nf,i4_t *flist,char *fl));
  108. /*---------- E N D   P A R T 1 ----------------------*/
  109. /*****************************************************/
  110. /*****************************************************/
  111. /*  ((lib1)  -  DB engine interface (part2)
  112.  */                
  113. /*********************************************************/
  114. i4_t uidnsttab  __P((Tabid * i1tabid, Tabid * i2tabid, Tabid * otabid, i4_t code));
  115. i4_t unsttab  __P((Tabid *i1tabid, Tabid *i2tabid, Tabid *otabid,
  116.      i4_t ns, i4_t *rlist));
  117. i4_t intsttab  __P((Tabid *i1tabid, Tabid *i2tabid, Tabid *otabid,
  118.       i4_t ns, i4_t *rlist));
  119. i4_t difsttab  __P((Tabid *i1tabid, Tabid *i2tabid, Tabid *otabid,
  120.       i4_t ns, i4_t *rlist));
  121. i4_t bldttfil  __P((Tabid *tabid, Filid *filid,i4_t nc, cond_buf_t cond, i4_t *spn));
  122. i4_t bldtifil  __P((Indid *indid, Filid *filid,i4_t nc, cond_buf_t cond,i4_t nra,
  123.       cond_buf_t range, i4_t *spn));
  124. i4_t bldtffil  __P((Filid *ifilid, Filid *ofilid,i4_t nc,cond_buf_t cond));
  125. i4_t bldtttab  __P((Tabid *itabid, Tabid *otabid,i4_t nr, i4_t *rlist,i4_t nc ,
  126.       cond_buf_t cond, i4_t *spn));
  127. i4_t bldtitab  __P((Indid *indid, Tabid *otabid,i4_t nr, i4_t *rlist,i4_t nc,
  128.       cond_buf_t cond,i4_t nra,cond_buf_t range, i4_t *spn));
  129. i4_t bldtftab  __P((Filid *filid, Tabid *otabid,i4_t nr, i4_t *rlist,i4_t nc ,
  130.       cond_buf_t cond));
  131. i4_t delttab  __P((Tabid *tabid,i4_t nc , cond_buf_t cond, i4_t *spn));
  132. i4_t delitab  __P((Indid *indid, i4_t nc , cond_buf_t cond, i4_t nra ,cond_buf_t range,
  133.      i4_t *spn));
  134. i4_t delftab  __P((Filid *filid, i4_t nc ,cond_buf_t cond, i4_t *spn));
  135. i4_t modttab  __P((Tabid *tabid, i4_t nc,cond_buf_t cond,i4_t nm,i4_t *mlist,
  136.      Colval lenval , Colval colval, i4_t *spn));
  137. i4_t moditab  __P((Indid *indid,i4_t nc,cond_buf_t cond,i4_t nr,cond_buf_t range,
  138.      i4_t nm,i4_t *mlist,Colval lenval,Colval colval,i4_t *spn));
  139. i4_t modftab  __P((Filid *filid, i4_t nc,cond_buf_t cond,i4_t nm, i4_t *mlist,
  140.      Colval lenval ,Colval colval, i4_t *spn));
  141. i4_t instttab  __P((Tabid *itabid, Tabid *otabid, i4_t nr, i4_t *rlist,
  142.       i4_t nc,cond_buf_t cond, i4_t *spn));
  143. i4_t institab  __P((Indid *indid, Tabid *otabid, i4_t nr, i4_t *rlist,i4_t nc,
  144.       cond_buf_t cond,i4_t nra, cond_buf_t range, i4_t *spn));
  145. i4_t instftab  __P((Filid *filid, Tabid *otabid, i4_t nr, i4_t *rlist,i4_t nc,
  146.       cond_buf_t cond, i4_t *spn));
  147. i4_t jnsttab  __P((Tabid *i1tabid, Tabid *i2tabid, Tabid *otabid, i4_t ns,
  148.      i4_t *r1list,i4_t *r2list));
  149. i4_t cnt_ttab  __P((Tabid *tabid,i4_t nc, cond_buf_t cond));
  150. i4_t cnt_itab  __P((Indid *indid,i4_t nc, cond_buf_t cond, i4_t nr,cond_buf_t range));
  151. i4_t cnt_ftab  __P((Filid *filid,i4_t nc, cond_buf_t cond));
  152. i4_t maxminavgitab  __P((Indid * indid, i4_t maxminavg, i4_t nc, cond_buf_t cond,
  153.    i4_t nr, cond_buf_t range, i4_t code));
  154. i4_t minmaxavgstab  __P((Tabid * tabid, i4_t minmaxavg, i4_t code));
  155. i4_t funci  __P((Indid * indid, i4_t *spn, i4_t nc, cond_buf_t cond,
  156.    i4_t nr, cond_buf_t range, DataUnit **colval, i4_t nf, 
  157.    i4_t *flist, char *fl));
  158. i4_t func  __P((Tabid * tabid, i4_t *spn, i4_t nc, cond_buf_t cond,
  159.   DataUnit **colval, i4_t nf, i4_t *flist, char *fl));
  160. /**************************************************************
  161.  *
  162.  *  (copy, initbas, newnewcr)  -  engine interaction support
  163.  *              common function
  164.  *
  165.  *---------------------------------------------------------*/
  166. i4_t Copy  __P((void *v_to,void *v_from,i4_t len));
  167. #define t2bto2char(source,dest)  t2bpack(source,dest)
  168. i4_t  create_base __P((void));
  169. i4_t  initbas  __P((void));
  170. TXTREF existind  __P((Tabid *tabid));
  171. #endif