[net.database] Ingres Question

mohan@ihuxf.UUCP (Palat) (08/24/85)

	Consider the following:
        An application opens an Ingres database through an
	equel program. It then forks a child process.
	1. Can the parent process fork a child with the
	   database open?
	2. If 1. can be done, is the database open to the child?
	3. Again, if 2. can be done, are the ranges of the relations
	   (##range) declared before the child was forked valid for the
	   child too?

	Mohan Palat 
	AT&T Network Systems

anton@ucbvax.ARPA (Jeff Anton) (08/26/85)

In article <2673@ihuxf.UUCP> mohan@ihuxf.UUCP (Palat) writes:
>	Consider the following:
>        An application opens an Ingres database through an
>	equel program. It then forks a child process.
>	1. Can the parent process fork a child with the
>	   database open?
>	2. If 1. can be done, is the database open to the child?
>	3. Again, if 2. can be done, are the ranges of the relations
>	   (##range) declared before the child was forked valid for the
>	   child too?
>
>	Mohan Palat 
>	AT&T Network Systems

1. Sure, you can fork.  However, the '## exit' will not return
until all the procs have closed their descriptors.  I'd suggect
not to put it in your programs.

2. If you do an exec then you've lost what file descriptors
talk to the backend.  Unless you're knowledgeable about equel
internals it's hopeless to talk to the backend after an exec.
I'm not sure but those file descriptors should be close on exec.
In the child before an exec you could conceivably talk sucessfully
to the backend IF ONLY ONE PROCESS USES THE BACKEND DURRING A XACT.
You could build some kind of locking convention yourself to allow this.
This is very shakey ground; I don't suggest this for the week of heart.

3. The 'range' statement just passes to the backend which remembers
it.  In this forked user process environment we have many procs at
one end of some pipes and the backend at the other end of those pipes,
If one proc changes a range variable all the user proc will be affected.

I can think of a few more problems that might occur.  Again, you'll
be exceeding the manufacturers recommendations doing this stuff
so don't attempt the above unless you understand what is going on.
-- 
C knows no bounds.
					Jeff Anton
					U.C.Berkeley
					Ingres Group
					ucbvax!anton
					anton@BERKELEY.EDU

lar@inuxc.UUCP (L Reid) (09/03/86)

I'm *attempting* to write a report using the INGRES report
writer (we have the AT&T version of INGRES but this
question is basic?).  I've set up a header on a column
that will start a new page and write headers when a
new value for this column has been received.  The
problem is when the number of records for a value
in this column exceeds one page, the subsequent
pages have no column headings.  If I define a "page header",
I receive two sets of headers on pages where a new
column value is detected.  

Can anyone help me?  Or is it a "no-can-do" situation.
Thanks in advance!

Laura Reid
317-845-6135