PostgreSQL Book Proposal

Bruce Momjian

Preface

1.
Introduction

(a)
History of POSTGRESQL

i.
UNIVERSITY OF CALIFORNIA AT BERKELEY
ii.
MICHAEL STONEBRAKER
iii.
JOLLY CHEN and ANDREW YU
iv.
POSTGRESQL GLOBAL DEVELOPMENT TEAM
(b)
Open source software

i.
development methods
ii.
peer review
iii.
release process
iv.
problem reporting
v.
support
(c)
When to use a database

i.
large volume
ii.
rapid retrieval
iii.
frequent modification
iv.
reporting
2.
Issuing database commands

(a)
Starting a database session

i.
choosing an access method
ii.
choosing a database
iii.
starting a session
(b)
Controlling a session

i.
typing in the query buffer
ii.
displaying the query buffer
iii.
editing the query buffer
iv.
erasing the query buffer
(c)
Sendinging queries
(d)
Getting help
(e)
Requesting server information
3.
Introduction to SQL

(a)
Relational Databases

i.
tables, rows, and columns
ii.
column types
iii.
column selection
iv.
row restriction
(b)
Creating tables

i.
naming columns
ii.
column types
(c)
Adding data with INSERT

i.
target columns
ii.
column types
iii.
missing values
(d)
Viewing data with SELECT

i.
target columns
ii.
FROM clause
(e)
Removing data with DELETE
(f)
Modifying data with UPDATE
(g)
Restricting with WHERE
(h)
Sorting data with ORDER BY
(i)
Using NULL values
4.
Advanced SQL Commands

(a)
Inserting data using SELECT
(b)
Aggregates: COUNT, SUM, ...
(c)
GROUP BY with aggregates
(d)
HAVING with aggregates
(e)
Joining tables
(f)
Using table aliases
(g)
UNION clause
(h)
UPDATE with FROM
(i)
Subqueries

i.
returning a single row
ii.
returning multiple rows
iii.
correlated Subqueries
(j)
Transactions

i.
BEGIN...END
ii.
ABORT transaction
(k)
Cursors

i.
DECLARE
ii.
FETCH
iii.
CLOSE
(l)
Indexing

i.
usage
ii.
types
iii.
definition
iv.
functional indexes
(m)
Column defaults
(n)
Referential integrity

i.
primary keys
ii.
foreign keys
(o)
AND/OR usage
(p)
Pattern matching

i.
LIKE clause
ii.
regular expressions
(q)
Temporary tables
(r)
Importing data

i.
COPY
ii.
DELIMITERS
iii.
BINARY
iv.
frontend COPY
5.
POSTGRESQL'S Unique Features

(a)
Object ID'S (OID'S)

i.
unique row assignment
ii.
join usage
(b)
Multi-Version Concurrency Control

i.
write locks
ii.
read locks
iii.
concurrency
iv.
solutions
(c)
Locking and deadlocks

i.
need for locking
ii.
deadlocks
(d)
Vacuum

i.
scheduling
ii.
ANALYZE
(e)
Views

i.
creation
ii.
limitations
(f)
Rules

i.
creation
ii.
limitations
(g)
Sequences

i.
purpose
ii.
creation
iii.
management
(h)
Triggers

i.
purpose
ii.
creation
(i)
Large objects(BLOBS)

i.
applications
ii.
creation
iii.
management
(j)
Adding user-defined functions

i.
purpose
ii.
creation
iii.
examples
(k)
Adding user-defined operators

i.
arithmetic processing
ii.
creation
(l)
Adding user-defined types

i.
purpose
ii.
creation
iii.
indexing
(m)
Exotic pre-installed types

i.
date/time
ii.
geometric
iii.
character string
iv.
internet
v.
internal
(n)
Arrays

i.
creation
ii.
access
(o)
Inheritance

i.
purpose
ii.
creation
iii.
examples
6.
Interfacing to the POSTGRESQL Database

(a)
C Language API (LIBPQ)
(b)
Embedded C (ECPG)
(c)
C++ (LIBPQ++)
(d)
JAVA (JDBC)
(e)
ODBC
(f)
PERL (PGSQL_PERL5)
(g)
TCL/TK (LIBPGTCL)
(h)
PYTHON (PYGRESQL)
(i)
Web access (PHP)
(j)
Server-side programming

i.
PLPGSQL
ii.
SPI
7.
POSTGRESQL Administration

(a)
Creating users and databases
(b)
Backup and restore
(c)
Performance
(d)
Troubleshooting
(e)
Customization
(f)
Access configuration

i.
server access
ii.
database access
iii.
table access
(g)
Internationalization

i.
national character encodings
ii.
date formats
8.
Additional Resources

(a)
Frequently Asked Questions (FAQ'S)
(b)
Mailing list support
(c)
Supplied documentation
(d)
Commercial support
(e)
Modifying the source code
9.
Appendix: Installation

(a)
Getting POSTGRESQL

i.
FTP
ii.
web
iii.
CDROM
(b)
Compiling

i.
compiler
ii.
RPM
(c)
Initialization
(d)
Starting the server
(e)
Creating a database
10.
Annotated Bibliography