[comp.databases] POSTGRES is now available...

wensel@postgres.uucp (Sharon Wensel) (12/20/89)

     Version 1, release 2 of POSTGRES is now  available  for
distribution.   It  runs on Versions 3.4, 3.5, or 3.6 of SUN
OS for Sun 3/xxx  class  machines  and  on  DECstation  3100
machines.   The  Lisp  code has been entirely converted to C
and POSTGRES  now consists of about 150,000 lines of C code.

     If you would like the current system, you can get it in
one of two ways:

(1)  Send a check payable to the Regents of  the  University
     of California for $150.00 to:

         Sharon Wensel
         521 Evans Hall
         University of California
         Berkeley, CA 94720.

     Indicate in your accompanying letter whether  you  want
     the  system on a 9-track tape at 1600 BPI, at 6250 BPI,
     on a cartridge tape for SUN shoeboxes (QIC 24  format),
     or on a TK50 DEC cartridge tape.

(2)  FTP the code to your site over the ARPA net  by  typing
     the  following  bracketed  text  without brackets.  You
     should see similar output.

         % [ ftp 128.32.149.1 ]  # or ftp postgres.berkeley.edu
         Connected to 128.32.149.1.
         220 postgres FTP server (Version 4.4 Sun Feb 5 07:58:07 PST 1989) ready.
         Name (128.32.149.1:): [ anonymous ]
         331 Guest login ok, send ident as password.
         Password:[ mylogin@myhost ]
         230 Guest login ok, access restrictions apply.
         ftp> [ cd pub ]
         250 CWD command successful.
         ftp> [ binary ]
         200 Type set to I.
         ftp> [ get postgres-v1r2.new.tar.Z ]     #Sun version
	 ftp> [ get postgres-DS3100-v1r2.tar.Z ]  #DEC version
         200 PORT command successful.
         150 Opening BINARY mode data connection for postgres-v1r2.new.tar.Z (NNNNNNN bytes).
         226 Transfer complete.
         local: postgres-v1r2.new.tar.Z remote: postgres-v1r2.new.tar.Z
         NNNNNNN bytes received in MMM.MM seconds (KK Kbytes/s)
         ftp> [ quit ]
         221 Goodbye.
         %

dmn@stiatl.UUCP (Michael Nowacki) (12/21/89)

would someone on the postgres project post a quick summary of what postgres
is and what we would be likely to have if we compiled that 150k lines of c?

-- 
Michael Nowacki               gatech!stiatl!dmn
Sales Technologies, Inc             |\  /|
3399 Peachtree Rd, NE               | \/ |
Atlanta, GA  (404) 841-4000        _|ike |_

mao@eden (Mike Olson) (12/28/89)

Michael Nowacki writes
> would someone on the postgres project post a quick summary of what postgres
> is and what we would be likely to have if we compiled that 150k lines of c?

to which Steve Goldfield replies at length, quoting from the EECS research
summary published here at Berkeley.  Goldfield's reply was pretty much on
target.  In the interest of maintaining a presence for the Postgres group
on the net, though, I'll add some info.  I'm one of the programmers on the
project.

Postgres is a research project directed by Dr. Stonebraker at UC Berkeley.
Stonebraker was the principal investigator for Ingres back in the seventies.
Postgres is intended to extend relational systems to take advantage of likely
hardware and software advances of the coming decade.

The query language is called postquel; it's quel without range statements,
and with syntactic support for the features described below.  Architecture
is client/server.  A supervisory process called the postmaster (yes, even
*we* get sick of all these cute "post" names) accepts requests from user
processes, and starts a server (if necessary) for them.  For example, if you
want to use the terminal monitor (the program that accepts postquel input
and displays query output), you type the command "monitor".  Monitor
announces to the postmaster that it needs a server; if there's no server
running, the postmaster starts one and connects the terminal monitor to it.
The postmaster is a relatively small process, but the server (called postgres)
is pretty big, so it pays to start it only on demand.

Quel-style queries work as you'd expect.  In addition, the following features
are visible:

Versions of relations are available without any special trouble on the part
of the user.  That is, if you type the query

	retrieve (e.all) from e in emp["Apr 15 1989"]

you'll see all the people who had to pay taxes last year; intervening
changes won't be visible.

Rules allow implementation of some integrity constraints and security
controls.  For example, if you say

	define rule rule_1 as
		always retrieve (emp.sal = 0) where emp.name = "Stonebraker"

then you will have hidden Stonebraker's salary from anyone doing a retrieve;
you can put further restraints in the where clause to qualify the user
running the query, or whatever you like.  Also, the query

	define rule rule_2 as
		always retrieve (e.sal) from e in emp
		where emp.name = "Cimarron" and e.name = "Stonebraker"

will make Cimarron's salary equal to Stonebraker's salary.  Updates to
Stonebraker's salary will be magically propogated to Cimarron.  Of course,
as Stonebraker is an academic, this puts a tight cap on Cimarron's earning
potential, but we must all make sacrifices in the interest of research.

Rules are implemented in a way you probably don't care about, since it's
(a) complicated and (b) changing in the next release.

The final interesting feature in this release is the ability of users to
define data types, operators, and functions for use in postquel queries.
You write some code that implements your data type, operator, or function,
and compile it to a .o file.  You then do some hocus-pocus in postquel to
get your code and the name of the data type, operator, or function registered
in the system tables.  You can then invoke your code from postquel.  The
.o file will be dynamically loaded into the execution image of postgres on
demand.  Links are resolved as you'd expect, so you can call postgres
functions from your code.

Among the features Goldfield mentions that are due in the next release:

> (2) Construct an implementation for the multiple, closely coupled
>     processors that will be prevalent on next-generation
>     workstations;
> (3) Provide efficient support for versions;
> (6) Support triggers and inference.

More specifically, we're working on archiving data to optical disk, using
the rule manager to do versions of relations, revamping the rule manager
to support updatable views (including new query rewrite mechanisms), and
making necessary changes to the executor and optimizer.  Also, we're working
on a version of the planner that takes advantage of shared memory on a
multi-processor system.  Queries will be decomposed in a way that permits
a single query to run on multiple processors; again, the executor and
optimizer are getting reworked to support this.  These features are due
out in the next version of the code.

This version of postgres represents an advance over the Lisp version we
released at the beginning of 1989.  It is substantially faster, more
basic database support is in (indices and other stuff), and lots of bugs
have been fixed.  In addition, the rule manager code described above is
new.

Postgres is available via anonymous ftp from postgres.Berkeley.EDU
(internet addr 128.32.149.1), in dir pub/.  The file postgres-v1r2.new.tar.Z
contains the distribution.  Files postgres-setup.me and postgres-README are
of interest; you should get them first and read them.  If you're not on
the internet, you can send a request for a tape to Sharon Wensel
(wensel@postgres.Berkeley.EDU); we have some policy for sending out tapes,
but I'm not sure what it is.  It probably costs money.

The released version runs on Decstation 3100's and Sun 3's.

You are STRONGLY encouraged to send follow-up questions, bug reports, and
requests to postgres@postgres.Berkeley.EDU.  I will read messages sent
directly to me, but can't guarantee a response anytime in the nineties.

					Mike Olson
					Postgres research group
					UC Berkeley
					mao@postgres.Berkeley.EDU

PS:  Hi, Michael, hope you like Atlanta better than you liked Berkeley.