2.11BSD/ingres/source/dbu/resetrel.c

Compare this file to the similar file:
Show the results in this format:

# include	"../ingres.h"
# include	"../aux.h"
# include	"../batch.h"
# include	"../access.h"

/*
**	RESETREL -- will change a relation to an empty heap.  This is only
**		to be used on temporary relations and should only be called
**		by the DECOMP process.
*/

resetrel(pc, pv)
int	pc;
char	**pv;

{
	extern struct descriptor	Reldes;
	struct descriptor		desc;
	char				relname[MAXNAME + 4];
	long				lnum;

	opencatalog("relation", 2);
	while (*pv != -1)
	{
		if (openr(&desc, -1, *pv))
			syserr("RESETREL: openr %s", *pv);
		if (!bequal(Usercode, desc.relowner, sizeof desc.relowner))
			syserr("RESETREL: not owner of %s", *pv);
		ingresname(desc.relid, desc.relowner, relname);
		if ((desc.relfp = creat(relname, FILEMODE)) < 0)
			syserr("RESETREL: create %s", relname);
		lnum = 1;
		if (formatpg(&desc, lnum))
			syserr("RESETREL: formatpg %s", relname);
		desc.reltups = 0;
		desc.relspec = M_HEAP;
		desc.relprim = 1;
		close(desc.relfp);
		if (replace(&Reldes, &desc.reltid, &desc, FALSE) < 0)
			syserr("RESETREL: replace rel %s", relname);
		pv++;
	}
	return (0);
}