⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insfltr.c

📁 免费的Sql数据库系统
💻 C
字号:
/* *  insfltr.c  - Insertion into a filter  *               Kernel of GNU SQL-server  * *  $Id: insfltr.c,v 1.245 1997/03/31 03:46:38 kml Exp $ * *  This file is a part of GNU SQL Server * *  Copyright (c) 1996, 1997, Free Software Foundation, Inc *  Developed at the Institute of System Programming *  This file is written by  Vera Ponomarenko * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * *  Contacts:   gss@ispras.ru * */#include "destrn.h"#include "strml.h"#include "fdcltrn.h"extern char **scptab;extern i2_t maxscan;extern struct des_nseg desnseg;intinsfltr (i4_t scnum, i4_t idfl){  struct d_mesc *scpr;  struct des_tob *destob;  char sctype, *asp;  struct p_h_f *ph;  struct d_r_t *desrel, *fdesrel;  struct des_fltr *desfltr;  struct des_tid tid;  struct  A pg;  scpr = (struct d_mesc *) * (scptab + scnum);  if (scnum >= maxscan || scpr == NULL)    return (NDSC);  if (scpr->prcrt == 0)    return (NCR);  if ((u2_t) idfl > desnseg.mtobnum)    return (NIOB);    desfltr = (struct des_fltr *) * (desnseg.tobtab + idfl);  if (desfltr == NULL)    return (NIOB);  destob = &desfltr->tobfl;  if (destob->prdt.prob != FLTR)    return (NIOB);  fdesrel = desfltr->pdrtf;  if ((sctype = scpr->obsc) == SCR)    {				/* relation scan */      struct d_sc_r *screl;      screl = (struct d_sc_r *) scpr;      desrel = (struct d_r_t *) scpr->pobsc;      tid = screl->curtid;    }  else if (sctype == SCI)    {				/* index scan */      struct d_sc_i *scind;      scind = (struct d_sc_i *) scpr;      desrel = (&scind->dessc)->pdi->dri;      tid = scind->dessc.ctidi;    }  else    return (NIOB);  if (fdesrel != desrel)    return (NCF);  asp = getwl (&pg, NRSNUM, destob->lastpn);  ph = (struct p_h_f *) asp;  if ((ph->freeoff + tidsize) > BD_PAGESIZE)    {      asp = getptob (&pg, destob);      ph = (struct p_h_f *) asp;      ph->freeoff = phfsize;    }  ph->freeoff += tidsize;  *(struct des_tid *) (asp + ph->freeoff) = tid;  putwul (&pg, 'm');  destob->prdt.prsort = NSORT;  return (OK);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -