The source code for the INGRES system lives in this directory.

RECOMPILATION

To recompile the system, use:

	cd conf; make allclean allinstall

This will clean out all objects from everywhere and then recompile
and install the entire system.  This can be expected to take about
1.5 hours.

ROAD MAP

conf
	Configuration files for the system.  This is the "main"
	directory -- the Makefile in this directory applies to
	the entire system, rather than just the particular module.
ctlmod
	The control module.  This module provides interprocess
	communication and provides certain system functions.  It
	might be considered the "kernel" of the system.
dbu
	Database utilities.  These are things like print, help,
	copy, ksort, etc.
decomp
	Decomposition.  This module does query optimization.
equel
	The EQUEL preprocessor.
gutil
	General utilities.  These are not particular to INGRES,
	although they were written for INGRES.
h
	Header files.
iutil
	INGRES utilities.  This includes the old "access" library.
	This directory has the access methods and utility routines
	that are used throughout INGRES, but have no meaning outside
	of the INGRES context.
libq
	The EQUEL runtime support.
monitor
	The terminal monitor (front end).
ovqp
	One Variable Query Processor.  This is the "search engine"
	(basically a big interpreter).
parser
	The parser.  Takes text and produces query trees.
qrymod
	Query Modification.  This module supports views, integrity,
	and protection.
support
	All programs that are to be run from the shell are in this
	directory.

Note for SUN users:
	This release will compile on the SUN workstation but it is
untested and known to have problems with equel programs.  To compile
for the SUN add 'CPUTYPE=SUN' to the make command or change
conf/Makefile.

Known bugs:
	There is only one known bug with this version of INGRES on
VAXs running 4.3 BSD UNIX.  The bug is as follows:
The quel statement
retrieve (a.foo) where count(a.bar by a.foo)=max(count(a.bar by a.foo))
will work but
retrieve (a.foo) where max(count(a.bar by a.foo))=count(a.bar by a.foo)
will not.  In general the problem is in queries with clauses of the
form simpleagg(aggfunc())=thesameaggfunc() as such a clause does not
connect the 'by' clause of the aggfunc with the rest of the query.
