via extended query protocol, because it sends Sync right after Execute
without realizing that the command to be executed is COPY. There seems
to be no reasonable way for it to realize that, either, so the best fix
seems to be to make the backend ignore Sync during copy-in mode. Bit of
a wart on the protocol, but little alternative. Also, libpq must send
another Sync after terminating the COPY, if the command was issued via
Execute.
libpq users to perform Bind/Execute of previously prepared statements.
Per yesterday's discussion, this offers enough performance improvement
to justify bending the 'no new features during beta' rule.
tree. This also catches lots of little Makefile bugs, so here's a small
patch for one of them (replacing an explicit reference to thread.c with
a reference to it as the first prerequsite of the rule makes make look
for it in the place where it was found (the source tree) rather than in
the build tree. (using GNU make 3.79.1)
John Gray
< * Allow easy display of usernames in a group
> * -Allow easy display of usernames in a group
88,89d87
< * -Delay resolution of array expression type so assignment coercion
< can be performed on empty array expressions (Joe)
94c92,94
< o Support construction of array result values in expressions
> o -Support construction of array result values in expressions (Joe)
> o Delay resolution of array expression type so assignment coercion
> can be performed on empty array expressions (Joe)
148c148
< * Allow LIKE indexing optimization for non-ASCII locales
> * -Allow LIKE indexing optimization for non-ASCII locales using special index
173c173
< * Return proper effected tuple count from complex commands [return]
> * -Return proper effected tuple count from complex commands [return]
236c236
< o Allow SHOW of non-modifiable variables, like pg_controldata
> o -Allow SHOW of some non-modifiable variables, like pg_controldata
257a258
> o Add capability to create and call PROCEDURES
272c273
<
> * Allow psql \du to show groups, and add \dg for groups
424c425
< * Improve Subplan list handling
> * -Improve Subplan list handling
< o Allow array declarations and other data types in PL/PgSQL DECLARE
> o -Allow array declarations and other data types in PL/PgSQL DECLARE
254c254
< o Allow PL/PgSQL to support array element assignment
> o -Allow PL/PgSQL to support array element assignment (Joe)
< * Allow elog() to return error codes, module name, file name, line
< number, not just messages (Peter E)
< * Add error codes (Peter E)
< * Make error messages more consistent [error]
> * -Allow elog() to return error codes, module name, file name, line
> number, not just messages (Tom)
> * -Add error codes (Tom)
> * -Make error messages more consistent
40c40
< * Add GUC log_statement_and_duration to print statement and >= min duration
> * -Add GUC log_statement_and_duration to print statement and >= min duration
84c84
< * Allow current datestyle to restrict dates; prevent month/day swapping
> * -Allow current datestyle to restrict dates; prevent month/day swapping
86c86
< * Prevent month/day swapping of ISO dates to make invalid dates valid
> * -Prevent month/day swapping of ISO dates to make invalid dates valid
88c88
< * Delay resolution of array expression type so assignment coercion
> * -Delay resolution of array expression type so assignment coercion
93c93
< o Allow arrays to be ORDER'ed
> o -Allow arrays to be ORDER'ed
116c116
< * Remove Cyrillic recode support
> * -Remove Cyrillic recode support
144c144
< * Certain indexes will not shrink, e.g. indexes on ever-increasing
> * -Certain indexes will not shrink, e.g. indexes on ever-increasing
185c185
< * Have SELECT '13 minutes'::interval display zero seconds in ISO datestyle
> * -Have SELECT '13 minutes'::interval display zero seconds in ISO datestyle
196c196
< o -Add ALTER TABLE tab SET WITHOUT OIDS (Rod)
> o --Add ALTER TABLE tab SET WITHOUT OIDS (Rod)
221c221
< stored in the backend
> stored in the backend (Gavin)
235c235
< o Allow EXPLAIN EXECUTE to see prepared plans
> o -Allow EXPLAIN EXECUTE to see prepared plans
241d240
< o Add untrusted version of plpython
265c264
< * Allow psql to show transaction status if backend protocol changes made
> * -Allow psql to show transaction status if backend protocol changes made
272,273c271,272
< * Modify pg_get_triggerdef() to take a boolean to pretty-print,
< and use that as part of pg_dump along with psql
> * -Modify pg_get_triggerdef() to take a boolean to pretty-print,
> and use that as part of pg_dump along with psql
292c291
< o Add SQLSTATE
> o -Add SQLSTATE
296c295
< o Implement SQLDA (do we really need this?)
> o -Implement SQLDA
364d362
< * Allow binding query args over FE/BE protocol
378c376,377
< * Provide automatic running of vacuum in the background (Tom) [vacuum]
> * Provide automatic running of vacuum in the background in backend
> rather than in /contrib [vacuum]
427c426
< * Allow Subplans to use efficient joins(hash, merge) with upper variable
> * -Allow Subplans to use efficient joins(hash, merge) with upper variable
429c428
< * Allow merge and hash joins on expressions not just simple variables (Tom)
> * -Allow merge and hash joins on expressions not just simple variables (Tom)
474c473
< * Remove memory/file descriptor freeing befor elog(ERROR) (Bruce)
> * Remove memory/file descriptor freeing before ereport(ERROR) (Bruce)
489,490c488,489
< o Show transaction status in psql
< o Allow binding of query parameters, support for prepared queries
> o -Show transaction status in psql
> o -Allow binding of query parameters, support for prepared queries
492,494c491,493
< o Remove hard-coded limits on user/db/password names
< o Remove unused elements of startup packet (unused, tty, passlength)
< o Fix COPY/fastpath protocol?
> o -Remove hard-coded limits on user/db/password names
> o -Remove unused elements of startup packet (unused, tty, passlength)
> o -Fix COPY/fastpath protocol
496,497c495
< o Replication support?
< o Error codes
> o -Error codes
500d497
< o ecpg improvements?
503c500
< o Report server version number, database encoding, client encoding
> o -Report server version number, database encoding, client encoding
he supplied a few months ago, but didn't get around to docing until now. And
he also added some doc for calling stored functions in general from jdbc that was missing.
Modified Files:
sgml/jdbc.sgml
< * Fernando Nasser <fnasser@redhat.com> of Red Hat
< * Gavin Sherry <swm@linuxworld.com.au> of Alcove Systems Engineering
> * Fernando is Fernando Nasser <fnasser@redhat.com> of Red Hat
> * Gavin is Gavin Sherry <swm@linuxworld.com.au> of Alcove Systems Engineering
> * Greg is Greg Sabino Mullane <greg@turnstep.com>
heuristic determination of day vs month in date/time input. Add the
ability to specify that input is interpreted as yy-mm-dd order (which
formerly worked, but only for yy greater than 31). DateStyle's input
component now has the preferred spellings DMY, MDY, or YMD; the older
keywords European and US are now aliases for the first two of these.
Per recent discussions on pgsql-general.
>>ISTM that "source" is worth knowing.
>
> Hm, possibly. Any other opinions?
This version has the seven fields I proposed, including "source". Here's
an example that shows why I think it's valuable:
regression=# \x
Expanded display is on.
regression=# select * from pg_settings where name = 'enable_seqscan';
-[ RECORD 1 ]-----------
name | enable_seqscan
setting | on
context | user
vartype | bool
source | default
min_val |
max_val |
regression=# update pg_settings set setting = 'off' where name =
'enable_seqscan';
-[ RECORD 1 ]---
set_config | off
regression=# select * from pg_settings where name = 'enable_seqscan';
-[ RECORD 1 ]-----------
name | enable_seqscan
setting | off
context | user
vartype | bool
source | session
min_val |
max_val |
regression=# alter user postgres set enable_seqscan to 'off';
ALTER USER
(log out and then back in again)
regression=# \x
Expanded display is on.
regression=# select * from pg_settings where name = 'enable_seqscan';
-[ RECORD 1 ]-----------
name | enable_seqscan
setting | off
context | user
vartype | bool
source | user
min_val |
max_val |
In the first case, enable_seqscan is set to its default value. After
setting it to off, it is obvious that the value has been changed for the
session only. In the third case, you can see that the value has been set
specifically for the user.
Joe Conway
psql4win32.patch - changes in the psql source code
psql-ref.patch - changes in the documentation psql-ref.sgml
(for new builtin variable WIN32_CONSOLE)
To apply them use "patch -p 1" in the root directory of the
postgres source directory.
These patches fix the following problems of psql on Win32
(all changes only have effect #ifdef WIN32):
a) Problem: Static library libpq.a did not work
Solution: Added WSAStartup() in fe-connect.c
b) Problem: Secret Password was echoed by psql
Solution: Password echoing disabled in sprompt.c
c) Problem: 8bit characters were displayed/interpreted wrong in psql
This is due to the fact that the Win32 "console" uses a
different encoding than the rest of the Windows system
Solution: Introduced a new psql variable WIN32_CONSOLE
When set with "\set WIN32_console", the function OemToChar()
is applied after reading input and CharToOem() before
displaying Output
Christoph Dalitz
modes (and replace the requiressl boolean). The four options were first
spelled out by Magnus Hagander <mha@sollentuna.net> on 2000-08-23 in email
to pgsql-hackers, archived here:
http://archives.postgresql.org/pgsql-hackers/2000-08/msg00639.php
My original less-flexible patch and the ensuing thread are archived at:
http://dbforums.com/t623845.html
Attached is a new patch, including documentation.
To sum up, there's a new client parameter "sslmode" and environment
variable "PGSSLMODE", with these options:
sslmode description
------- -----------
disable Unencrypted non-SSL only
allow Negotiate, prefer non-SSL
prefer Negotiate, prefer SSL (default)
require Require SSL
The only change to the server is a new pg_hba.conf line type,
"hostnossl", for specifying connections that are not allowed to use SSL
(for example, to prevent servers on a local network from accidentally
using SSL and wasting cycles). Thus the 3 pg_hba.conf line types are:
pg_hba.conf line types
----------------------
host applies to either SSL or regular connections
hostssl applies only to SSL connections
hostnossl applies only to regular connections
These client and server options, the postgresql.conf ssl = false option,
and finally the possibility of compiling with no SSL support at all,
make quite a range of combinations to test. I threw together a test
script to try many of them out. It's in a separate tarball with its
config files, a patch to psql so it'll announce SSL connections even in
absence of a tty, and the test output. The test is especially informative
when run on the same tty the postmaster was started on, so the FATAL:
errors during negotiation are interleaved with the psql client output.
I saw Tom write that new submissions for 7.4 have to be in before midnight
local time, and since I'm on the east coast in the US, this just makes it
in before the bell. :)
Jon Jensen
> Well, no. What it says is that certain values must be escaped (but
> doesn't say which ones). Then it says there are alternate escape
> sequences for some values, which it lists.
>
> It doesn't say "The following table contains the characters which must
> be escaped:", which would be much clearer (and actually useful).
Attached documentation patch updates the wording for bytea input
escaping, per complaint by Stephen Norris above.
Joe Conway
for the sign of timezone offsets, ie, positive is east from UTC. These
were previously out of step with other operations that accept or show
timezones, such as I/O of timestamptz values.
and 100 respectively, if the platform will allow it. initdb selects
values that are not too large to allow the postmaster to start, and
places these values in the installed postgresql.conf file. This allows
us to continue to start up out-of-the-box on platforms with small SHMMAX,
while having somewhat-realistic default settings on platforms with
reasonable SHMMAX. Per recent pghackers discussion.
without needing a running backend. Reorder postgresql.conf.sample
to match new layout of runtime.sgml. This commit re-adds work lost
in Wednesday's crash.
'scalar op ALL (array)', where the operator is applied between the
lefthand scalar and each element of the array. The operator must
yield boolean; the result of the construct is the OR or AND of the
per-element results, respectively.
Original coding by Joe Conway, after an idea of Peter's. Rewritten
by Tom to keep the implementation strictly separate from subqueries.
client-side AUTOCOMMIT mode now: '\set AUTOCOMMIT off' supports
SQL-spec commit behavior. Get rid of LO_TRANSACTION hack --- the
LO operations just work now, using libpq's ability to track the
transaction status. Add a VERBOSE variable to control verboseness
of error message display, and add a %T prompt-string code to show
current transaction-block status. Superuser state display in the
prompt string correctly follows SET SESSION AUTHORIZATION commands.
Control-C works to get out of COPY IN state.
comparison functions), replacing the highly bogus bitwise array_eq. Create
a btree index opclass for ANYARRAY --- it is now possible to create indexes
on array columns.
Arrange to cache the results of catalog lookups across multiple array
operations, instead of repeating the lookups on every call.
Add string_to_array and array_to_string functions.
Remove singleton_array, array_accum, array_assign, and array_subscript
functions, since these were for proof-of-concept and not intended to become
supported functions.
Minor adjustments to behavior in some corner cases with empty or
zero-dimensional arrays.
Joe Conway (with some editorializing by Tom Lane).
identifier, while some areas do not.
The attached converts be below to "name":
conversion_name
index_name
The below have an existing, initdb supplied, entity named "name". As
such, it could be confusing for the reader to see that identifier used
in the example.
domainname
typename
Rod Taylor
with advocacy and 'portal' websites.
Link to createdb / dropdb from the tutorial page about create / dropdb.
A pair of notes were asking about more info...
Rod Taylor
Regression tests for IPv6 operations added.
Documentation updated to document IPv6 bits.
Stop treating IPv4 as an "unsigned int" and IPv6 as an array of
characters. Instead, always use the array of characters so we
can have one function fits all. This makes bitncmp(), addressOK(),
and several other functions "just work" on both address families.
add family() function which returns integer 4 or 6 for IPv4 or
IPv6. (See examples below) Note that to add this new function
you will need to dump/initdb/reload or find the correct magic
to add the function to the postgresql function catalogs.
IPv4 addresses always sort before IPv6.
On disk we use AF_INET for IPv4, and AF_INET+1 for IPv6 addresses.
This prevents the need for a dump and reload, but lets IPv6 parsing
work on machines without AF_INET6.
To select all IPv4 addresses from a table:
select * from foo where family(addr) = 4 ...
Order by and other bits should all work.
Michael Graff
specific hash functions used by hash indexes, rather than the old
not-datatype-aware ComputeHashFunc routine. This makes it safe to do
hash joining on several datatypes that previously couldn't use hashing.
The sets of datatypes that are hash indexable and hash joinable are now
exactly the same, whereas before each had some that weren't in the other.
out of mind, because it'd been commented out years ago). Try to bring the
remains up to a reasonable level of currency, and give it all approximately
the same high level of abstraction.
> * Allow current datestyle to restrict dates; prevent month/day swapping
> from making invalid dates valid
> * Prevent month/day swapping of ISO dates to make invalid dates valid
character in identifiers. The first change eliminates the current need
to put spaces around parameter references, as in "x<=$2". The second
change improves compatibility with Oracle and some other RDBMSes. This
was discussed and agreed to back in January, but did not get done.
not all SQL identifiers taken from command line arguments. We decided
years ago that that was a bad idea: identifiers taken from the command
line should be treated as literally correct. Remove the inconsistent
code that has crept in recently. Also fix pg_dump so that the combination
of --schema and --table does what you'd expect, namely dump exactly one
table from exactly one schema. Per gripe from Deepak Bhole of Red Hat.
extensions to support our historical behavior. An aggregate belongs
to the closest query level of any of the variables in its argument,
or the current query level if there are no variables (e.g., COUNT(*)).
The implementation involves adding an agglevelsup field to Aggref,
and treating outer aggregates like outer variables at planning time.
> * Allow a single index to index multiple tables (for inheritance and subtables)
408a410
> * Improve the planner to use CHECK constraints to prune the plan (for subtables)
418a421
> * Allow partitioning of table into multiple subtables
419a423
> T
of an index can now be a computed expression instead of a simple variable.
Restrictions on expressions are the same as for predicates (only immutable
functions, no sub-selects). This fixes problems recently introduced with
inlining SQL functions, because the inlining transformation is applied to
both expression trees so the planner can still match them up. Along the
way, improve efficiency of handling index predicates (both predicates and
index expressions are now cached by the relcache) and fix 7.3 oversight
that didn't record dependencies of predicate expressions.
blanks, in hopes of reducing the surprise factor for newbies. Remove
redundant operators for VARCHAR (it depends wholly on TEXT operations now).
Clean up resolution of ambiguous operators/functions to avoid surprising
choices for domains: domains are treated as equivalent to their base types
and binary-coercibility is no longer considered a preference item when
choosing among multiple operators/functions. IsBinaryCoercible now correctly
reflects the notion that you need *only* relabel the type to get from type
A to type B: that is, a domain is binary-coercible to its base type, but
not vice versa. Various marginal cleanup, including merging the essentially
duplicate resolution code in parse_func.c and parse_oper.c. Improve opr_sanity
regression test to understand about binary compatibility (using pg_cast),
and fix a couple of small errors in the catalogs revealed thereby.
Restructure "special operator" handling to fetch operators via index opclasses
rather than hardwiring assumptions about names (cleans up the pattern_ops
stuff a little).
< * Update clients to use data types, typmod, schema.table.column names of
< result sets using new query protocol
453a452,453
> o Update clients to use data types, typmod, schema.table.column names of
> result sets using new query protocol
< * Allow clients to get data types, typmod, schema.table.column names from
< result sets, either via the backend protocol or a new QUERYINFO command
to:
> * Update clients to use data types, typmod, schema.table.column names of
> result sets using new query protocol
Win32 port is now called 'win32' rather than 'win'
add -lwsock32 on Win32
make gethostname() be only used when kerberos4 is enabled
use /port/getopt.c
new /port/opendir.c routines
disable GUC unix_socket_group on Win32
convert some keywords.c symbols to KEYWORD_P to prevent conflict
create new FCNTL_NONBLOCK macro to turn off socket blocking
create new /include/port.h file that has /port prototypes, move
out of c.h
new /include/port/win32_include dir to hold missing include files
work around ERROR being defined in Win32 includes
only remnant of this failed experiment is that the server will take
SET AUTOCOMMIT TO ON. Still TODO: provide some client-side autocommit
logic in libpq.
of Describe on a prepared statement. This was in the original 3.0
protocol proposal, but I took it out for reasons that seemed good at
the time. Put it back per yesterday's pghackers discussion.
implementation limits, do not issue an ERROR; instead issue a NOTICE and use
the max supported value. Per pgsql-general discussion of 28-Apr, this is
needed to allow easy porting from pre-7.3 releases where the limits were
higher.
Unrelated change in same area: accept GLOBAL TEMP/TEMPORARY as a synonym
for TEMPORARY, as per pgsql-hackers discussion of 15-Apr. We previously
rejected it, but that was based on a misreading of the spec --- SQL92's
GLOBAL temp tables are really closer to what we have than their LOCAL ones.
Both plannable queries and utility commands are now always executed
within Portals, which have been revamped so that they can handle the
load (they used to be good only for single SELECT queries). Restructure
code to push command-completion-tag selection logic out of postgres.c,
so that it won't have to be duplicated between simple and extended queries.
initdb forced due to addition of a field to Query nodes.
for tableID/columnID in RowDescription. (The latter isn't really
implemented yet though --- the backend always sends zeroes, and libpq
just throws away the data.)
initial values and runtime changes in selected parameters. This gets
rid of the need for an initial 'select pg_client_encoding()' query in
libpq, bringing us back to one message transmitted in each direction
for a standard connection startup. To allow server version to be sent
using the same GUC mechanism that handles other parameters, invent the
concept of a never-settable GUC parameter: you can 'show server_version'
but it's not settable by any GUC input source. Create 'lc_collate' and
'lc_ctype' never-settable parameters so that people can find out these
settings without need for pg_controldata. (These side ideas were all
discussed some time ago in pgsql-hackers, but not yet implemented.)
rewritten and the protocol is changed, but most elog calls are still
elog calls. Also, we need to contemplate mechanisms for controlling
all this functionality --- eg, how much stuff should appear in the
postmaster log? And what API should libpq expose for it?
have length words. COPY OUT reimplemented per new protocol: it doesn't
need \. anymore, thank goodness. COPY BINARY to/from frontend works,
at least as far as the backend is concerned --- libpq's PQgetline API
is not up to snuff, and will have to be replaced with something that is
null-safe. libpq uses message length words for performance improvement
(no cycles wasted rescanning long messages), but not yet for error
recovery.
with variable-width fields. No more truncation of long user names.
Also, libpq can now send its environment-variable-driven SET commands
as part of the startup packet, saving round trips to server.
some message types. In particular add text/binary flag to StartCopyIn
and StartCopyOut, so that client library can know what is expected or
forthcoming.
chapters on extending types, operators, and aggregates into the extending
functions chapter. Move the information on how to call table functions
into the queries chapter. Remove some outdated information that is
already present in a better form in other parts of the documentation.
find out about it is to read the documentation that tells you how
dangerous it is. Add default_transaction_read_only to documentation;
seems to have been overlooked in patch that added read-only transactions.
Clean up check_guc comparison script, which has been suffering bit rot.
page when it's read in, per pghackers discussion around 17-Feb. Add a
GUC variable zero_damaged_pages that causes the response to be a WARNING
followed by zeroing the page, rather than the normal ERROR; this is per
Hiroshi's suggestion that there needs to be a way to get at the data
in the rest of the table.
(materialization into a tuple store) discussed on pgsql-hackers earlier.
I've updated the documentation and the regression tests.
Notes on the implementation:
- I needed to change the tuple store API slightly -- it assumes that it
won't be used to hold data across transaction boundaries, so the temp
files that it uses for on-disk storage are automatically reclaimed at
end-of-transaction. I added a flag to tuplestore_begin_heap() to control
this behavior. Is changing the tuple store API in this fashion OK?
- in order to store executor results in a tuple store, I added a new
CommandDest. This works well for the most part, with one exception: the
current DestFunction API doesn't provide enough information to allow the
Executor to store results into an arbitrary tuple store (where the
particular tuple store to use is chosen by the call site of
ExecutorRun). To workaround this, I've temporarily hacked up a solution
that works, but is not ideal: since the receiveTuple DestFunction is
passed the portal name, we can use that to lookup the Portal data
structure for the cursor and then use that to get at the tuple store the
Portal is using. This unnecessarily ties the Portal code with the
tupleReceiver code, but it works...
The proper fix for this is probably to change the DestFunction API --
Tom suggested passing the full QueryDesc to the receiveTuple function.
In that case, callers of ExecutorRun could "subclass" QueryDesc to add
any additional fields that their particular CommandDest needed to get
access to. This approach would work, but I'd like to think about it for
a little bit longer before deciding which route to go. In the mean time,
the code works fine, so I don't think a fix is urgent.
- (semi-related) I added a NO SCROLL keyword to DECLARE CURSOR, and
adjusted the behavior of SCROLL in accordance with the discussion on
-hackers.
- (unrelated) Cleaned up some SGML markup in sql.sgml, copy.sgml
Neil Conway
functions
* Document pg_conversion_is_visible() which was created in one of my
previous patches and didn't get documented for some reason
Christopher Kings-Lynne
them as arrays of the internal datatype. This requires treating the
stavalues columns as 'anyarray' rather than 'text[]', which is not 100%
kosher but seems to work fine for the purposes we need for pg_statistic.
Perhaps in the future 'anyarray' will be allowed more generally.
some of the algorithms for higher functions. I see about a factor of ten
speedup on the 'numeric' regression test, but it's unlikely that that test
is representative of real-world applications.
initdb forced due to change of on-disk representation for NUMERIC.
effectively used to mean a default value that could also be spelled
out explicitly. (ACLs behave that way, and useconfig/datconfig
do too IIRC.)
It's a bit of a hack, but it saves table space and backend code ---
without this convention the default would have to be inserted "manually"
since we have no mechanism to supply defaults when C code is forming a
new catalog tuple.
I'm inclined to leave the code alone. But Alvaro is right that it'd be
good to point out the 'infinity' option in the CREATE USER and ALTER
USER man pages. (Doc patch please?)
Alvaro Herrera
join is defined as:
from_item [ NATURAL ] join_type from_item
[ ON join_condition | USING ( join_column_list ) ]
However, if the join_type is an INNER or OUTER join, an ON, USING, or
NATURAL clause *must* be specified (it's not optional, as that segment
of the docs suggest).
I'm not exactly sure what the best way to fix this is, so I've attached
a patch adding a FIXME comment to the relevant section of the SGML. If
anyone has any ideas on the proper way to outline join syntax, please
speak up.
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC
Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values
Also updated create sequence docs to mention NO MINVALUE, & NO MAXVALUE.
New Files:
doc/src/sgml/ref/alter_sequence.sgml
src/test/regress/expected/sequence.out
src/test/regress/sql/sequence.sql
ALTER SEQUENCE is NOT transactional. It behaves similarly to setval().
It matches the proposed SQL200N spec, as well as Oracle in most ways --
Oracle lacks RESTART WITH for some strange reason.
--
Rod Taylor <rbt@rbt.ca>
Envrironment and Files section, explained exactly what -w
does)
This is a patch which allows pg_ctl to make an intelligent
guess as to the proper port when running 'psql -l' to
determine if the database has started up (the -w flag).
The environment variable PGPORT is used. If that is not found,
it checks if a specific port has been set inside the postgresql.conf
file. If it is has not, it uses the port that Postgres was
compiled with.
Greg Sabino Mullane greg@turnstep.com
> weird behavior across fork boundaries; (b) the additional memory space
> that has to be duplicated into child processes will cost something per
> child launch, even if the child never uses it. But these are only
> arguments that it might not *always* be a prudent thing to do, not that
> we shouldn't give the DBA the tool to do it if he wants. So fire away.
Here is a patch for the above, including a documentation update. It
creates a new GUC variable "preload_libraries", that accepts a list in
the form:
preload_libraries = '$libdir/mylib1:initfunc,$libdir/mylib2'
If ":initfunc" is omitted or not found, no initialization function is
executed, but the library is still preloaded. If "$libdir/mylib" isn't
found, the postmaster refuses to start.
In my testing with PL/R, it reduces the first call to a PL/R function
(after connecting) from almost 2 seconds, down to about 8 ms.
Joe Conway
< * Add GUC log_statement_duration to print statement and >= min duration
> * Add GUC log_statement_and_duration to print statement and >= min duration
utility statement (DeclareCursorStmt) with a SELECT query dangling from
it, rather than a SELECT query with a few unusual fields in it. Add
code to determine whether a planned query can safely be run backwards.
If DECLARE CURSOR specifies SCROLL, ensure that the plan can be run
backwards by adding a Materialize plan node if it can't. Without SCROLL,
you get an error if you try to fetch backwards from a cursor that can't
handle it. (There is still some discussion about what the exact
behavior should be, but this is necessary infrastructure in any case.)
Along the way, make EXPLAIN DECLARE CURSOR work.
> * Allow savepoints / nested transactions [transactions] (Bruce)
215d210
< o Add GUC parameter to control the maximum number of rewrite cycles
227,228c222
< o Allow parameters to be specified by name and type during
< definition
> o Allow parameters to be specified by name and type during definition
304,305d297
< * Overhaul bufmgr/lockmgr/transaction manager
< * Allow savepoints / nested transactions [transactions] (Bruce)
386,387c378,379
< * Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
< that are too frequent
> * -Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
> that are too frequent (Bruce)
390d381
< * Allow pg_xlog to be moved without symlinks
406c397
< * Precompile SQL functions to avoid overhead (Neil)
> * -Precompile SQL functions to avoid overhead (Neil)
Adjustable threshold is gone in favor of keeping track of total requested
page storage and doling out proportional fractions to each relation
(with a minimum amount per relation, and some quantization of the results
to avoid thrashing with small changes in page counts). Provide special-
case code for indexes so as not to waste space storing useless page
free space counts. Restructure internal data storage to be a flat array
instead of list-of-chunks; this may cost a little more work in data
copying when reorganizing, but allows binary search to be used during
lookup_fsm_page_entry().
now knows what to do upon hitting a dead page (in theory anyway, it's
untested...). Add a post-VACUUM-cleanup entry point for index AMs, to
provide a place for dead-page scavenging to happen.
Also, fix oversight that broke btpo_prev links in temporary indexes.
initdb forced due to additions in pg_am.
- more work from the SGML police
- some grammar improvements: rewriting a paragraph or two, replacing
contractions where (IMHO) appropriate
- fix missing utility commands in lock mode docs
- improve CLUSTER, REINDEX, SET SESSION AUTHORIZATION ref pages
Neil Conway
functions which limited the maximum date for a timestamp to AD 1465001.
The new limit is AD 5874897.
The files affected are:
doc/src/sgml/datatype.sgml:
Documentation change due to patch. Included is a notice about
the reduced range when using an eight-byte integer for timestamps.
src/backend/utils/adt/datetime.c:
Replacement functions for j2date() and date2j() functions.
src/include/utils/datetime.h:
Corrected a bug with the limit on the earliest possible date,
Nov 23,-4713 has a Julian day count of -1. The earliest possible
date should be Nov 24, -4713 with a day count of 0.
src/test/regress/expected/horology-no-DST-before-1970.out:
src/test/regress/expected/horology-solaris-1947.out:
src/test/regress/expected/horology.out:
Copies of expected output for regression testing.
Note: Only horology.out has been physically tested. I do not have access
to a Solaris box and I don't know how to provoke the "pre-1970" test.
src/test/regress/sql/horology.sql:
Added some test cases to check extended range.
John Cochran
performance of min() and max() is slow when applied to the entire table,
and suggesting the simple workaround most experienced Pg users
eventually learn about (SELECT xyz ... ORDER BY xyz LIMIT 1).
Neil Conway
< * Prevent index uniqueness checks when UPDATE does not modifying column
> * Prevent index uniqueness checks when UPDATE does not modify the column
235c235
< o Make PL/PgSQL %TYPE schema-aware
> o -Make PL/PgSQL %TYPE schema-aware
< o Allow CLUSTER to cluster all tables (Alvaro Herrera)
> o -Allow CLUSTER to cluster all tables (Alvaro Herrera)
243c243
< * Allow pg_dump to dump a specific schema (Neil Conway)
> * -Allow pg_dump to dump a specific schema (Neil Conway)
398c398
< * Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS (Tom)
> * -Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS (Tom)
> o -Add ALTER TABLE tab SET WITHOUT OIDS (Rod)
> o -Allow CLUSTER to cluster all tables (Alvaro Herrera)
> * -Allow pg_dump to dump a specific schema (Neil Conway)
> * -Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS (Tom)
> * Rod is Rod Taylor <pg@rbt.ca)>
< * Disallow DROP COLUMN on a column that is part of a multi-column index
> * Require DROP COLUMN CASCADE for a column that is part of a multi-column index
> > comma).
>
> OK. But the documentation implies there is a comma, so it should probably
> get chenged then.
Yes, it should. (attached)
[ Backpatched to 7.3.X too.]
Rod Taylor
takes two parameters, an OID x and an integer y, and returns "true" with
probability 1/y (the OID argument is ignored). This can be useful -- for
example, it can be used to select a random sampling of the rows in a
table (which is what the "random" regression test uses it for).
This patch removes that function, because it was old and messy. The old
function had the following problems:
- it was undocumented
- it was poorly named
- it was designed to workaround an optimizer bug that no longer exists
(the OID argument is to ensure that the optimizer won't optimize away
calls to the function; AFAIK marking the function as 'volatile' suffices
nowadays)
- it used a different random-number generation technique than the other
PSRNG-related functions in the backend do (it called random() like they
do, but it had its own logic for setting a set and deciding when to
reseed the RNG).
Ok, this patch removes oidrand(), oidsrand(), and userfntest(), and
improves the SGML docs a little bit (un-commenting the setseed()
documentation).
Neil Conway
On Wed, 2003-01-08 at 21:59, Christopher Kings-Lynne wrote:
> I agree. I want to remove OIDs from heaps of our tables when we go to 7.3.
> I'd rather not have to do it in the dump due to down time.
Rod Taylor <rbt@rbt.ca>
> I don't care what you use for short options if all useful ones are taken.
> But the long option should be --schema.
Ok, fair enough: a revised patch is attached that uses the '-n' short
option and the '--schema' long option.
Neil Conway
rid of the assumption that sizeof(Oid)==sizeof(int). This is one small
step towards someday supporting 8-byte OIDs. For the moment, it doesn't
do much except get rid of a lot of unsightly casts.
expression accepted by the regex operators, per discussion yesterday.
Along the way, reduce deadlock_timeout from PGC_POSTMASTER to PGC_SIGHUP
category. It is probably best to insist that all backends share the same
setting, but that doesn't mean it has to be frozen at startup.
(extracted from Tcl 8.4.1 release, as Henry still hasn't got round to
making it a separate library). This solves a performance problem for
multibyte, as well as upgrading our regexp support to match recent Tcl
and nearly match recent Perl.
restriction was debatable to begin with, but it has now become obvious
that it breaks forward-porting of user-defined types; contrib/lo being
the most salient example.
for type 'time without time zone', as we already did for type
'timestamp without time zone'. This patch was proposed by Tom Lockhart
on 7-Nov-02, but he never got around to applying it. Adjust regression
tests and documentation to match.
value of MAX_TIME_PRECISION in floating-point-timestamp-storage case
from 13 to 10, which is as much as time_out is actually willing to print.
(The alternative of increasing the number of digits we are willing to
print looks risky; we might find ourselves printing roundoff garbage.)
passed to join selectivity estimators. Make use of this in eqjoinsel
to derive non-bogus selectivity for IN clauses. Further tweaking of
cost estimation for IN.
initdb forced because of pg_proc.h changes.
necessarily following the JOIN syntax to develop the query plan. The old
behavior is still available by setting GUC variable JOIN_COLLAPSE_LIMIT
to 1. Also create a GUC variable FROM_COLLAPSE_LIMIT to control the
similar decision about when to collapse sub-SELECT lists into their parent
lists. (This behavior existed already, but the limit was always
GEQO_THRESHOLD/2; now it's separately adjustable.)
that's selecting into a RECORD variable returns zero rows, make it
assign an all-nulls row to the RECORD; this is consistent with what
happens when the SELECT INTO target is not a RECORD. In support of
this, tweak the SPI code so that a valid tuple descriptor is returned
even when a SPI select returns no rows.
There are two implementation techniques: the executor understands a new
JOIN_IN jointype, which emits at most one matching row per left-hand row,
or the result of the IN's sub-select can be fed through a DISTINCT filter
and then joined as an ordinary relation.
Along the way, some minor code cleanup in the optimizer; notably, break
out most of the jointree-rearrangement preprocessing in planner.c and
put it in a new file prep/prepjointree.c.
including:
- replacing all the appropriate usages of <citetitle>PostgreSQL
...</citetitle> with &cite-user;, &cite-admin;, and so on
- fix an omission in the EXECUTE documentation
- add some more text to the EXPLAIN documentation
- improve the PL/PgSQL RETURN NEXT documentation (more work to do here)
- minor markup fixes
Neil Conway
containing a volatile function), rather than only on 'Var = Var' clauses
as before. This makes it practical to do flatten_join_alias_vars at the
start of planning, which in turn eliminates a bunch of klugery inside the
planner to deal with alias vars. As a free side effect, we now detect
implied equality of non-Var expressions; for example in
SELECT ... WHERE a.x = b.y and b.y = 42
we will deduce a.x = 42 and use that as a restriction qual on a. Also,
we can remove the restriction introduced 12/5/02 to prevent pullup of
subqueries whose targetlists contain sublinks.
Still TODO: make statistical estimation routines in selfuncs.c and costsize.c
smarter about expressions that are more complex than plain Vars. The need
for this is considerably greater now that we have to be able to estimate
the suitability of merge and hash join techniques on such expressions.
costs for expression evaluation, not only per-tuple cost as before.
This extension is needed in order to deal realistically with hashed or
materialized sub-selects.
>
> I'd suggest that the runtime.sgml description explicitly say "values of
> at least a few thousand are recommended for production installations".
Neil Conway
required if a datatype is to be accepted by GROUP BY, DISTINCT, or
ORDER BY. This is documentation for code changes made pursuant to
pgsql-hackers discussion around 29-Nov-02.
beginning/end of cursor.
Have MOVE return 0/1 depending on cursor position.
Matches SQL spec.
Pass cursor counter from parser as a long rather than int.
Doc updates.
< * Bruce is Bruce Momjian <pgman@candle.pha.pa.us>
< * Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au>
< * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
> * Bruce is Bruce Momjian <pgman@candle.pha.pa.us> of Software Research Assoc.
> * Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au> of
> Family Health Network
> * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net> of The Cain Gang Ltd.
460,461c461,462
< * Fernando Nasser <fnasser@redhat.com>
< * Gavin Sherry <swm@linuxworld.com.au>
> * Fernando Nasser <fnasser@redhat.com> of Red Hat
> * Gavin Sherry <swm@linuxworld.com.au> of Alcove Systems Engineering
464,466c465,467
< * Jan is Jan Wieck <wieck@sapserv.debis.de>
< * Liam is Liam Stewart <liams@redhat.com>
< * Marc is Marc Fournier <scrappy@hub.org>
> * Jan is Jan Wieck <JanWieck@Yahoo.com> of PeerDirect Corp.
> * Liam is Liam Stewart <liams@redhat.com> of Red Hat
> * Marc is Marc Fournier <scrappy@hub.org> of PostgreSQL, Inc.
468,469c469
< * Marko is Marko Kreen <marko@l-t.ee>
< * Michael is Michael Meskes <meskes@postgresql.org>
> * Michael is Michael Meskes <meskes@postgresql.org> of Credativ
472c472
< * Peter M is Peter T Mount <peter@retep.org.uk>
> * Peter M is Peter T Mount <peter@retep.org.uk> of Retep Software
474c474
< * Philip is Philip Warner <pjw@rhyme.com.au>
> * Philip is Philip Warner <pjw@rhyme.com.au> of Albatross Consulting Pty. Ltd.
477d476
< * Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
479,483c478,481
< * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
< * Thomas is Thomas Lockhart <lockhart@fourpalms.org>
< * Tom is Tom Lane <tgl@sss.pgh.pa.us>
< * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.no>
< * Vadim is Vadim B. Mikheev <vadim4o@email.com>
> * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp> of Software Research Assoc.
> * Thomas is Thomas Lockhart <lockhart@fourpalms.org> of Jet Propulsion Labratory
> * Tom is Tom Lane <tgl@sss.pgh.pa.us> of Red Hat
> * Vadim is Vadim B. Mikheev <vadim4o@email.com> of Sector Data
> I'm not objecting to improving the text. I am objecting to deleting it
> outright...
Ok, fair enough. I've attached a revised version of the patch -- let me
know you think it needs further improvements.
Neil Conway
>
> In pg.py the attributes of DB are defined as being the same as
> the attributes of the corresponding pgobject "db", using the following
...
> The problem is that the attributes of db (which are read only)
> are not static (they are actually function calls to PostgreSQL),
> especially "status" and "error", but those attributes are copied
> and this is done only once when initializing the DB object.
>
> So, in effect, only the attribute "db.error" of a DB instance
> will be updated, but not the attribute "error". Same with "status".
> Don't copy the (read only) attributes of the pgobject to the
> DB object, but only the methods, and all of them, like this:
>
> --------------- change in pg.py ------------------
> # Create convience methods, in a way that is still overridable.
> for e in self.db.__methods__:
> setattr(self, e, getattr(self.db, e))
> ----------------------------------------------------
>
> Furthermore, make an addition to the documentation of the
> DB wrapper class (i.e. in pygresql-pg-db.html):
> After the sentence "All pgobject methods are included in this class also."
> add the following sentence "The pgobject read-only attributes can be
> accessed py adding the prefix 'db.' to them."
Christoph Zwerschke
* Add schema, cast, and conversion backslash commands to psql
I had to create a new publically available function,
pg_conversion_is_visible, as it seemed to be missing from the catalogs.
This required me to do no small amount of hacking around in namespace.c
I have updated the \? help and sgml docs.
\dc - list conversions [PATTERN]
\dC - list casts
\dn list schemas
I didn't support patterns with casts as there's nothing obvious to match
against.
Catalog version incremented --- initdb required.
Christopher Kings-Lynne
make VALUE a non-reserved word again, use less invasive method of passing
ConstraintTestValue into transformExpr, fix problems with nested constraint
testing, do correct thing with NULL result from a constraint expression,
remove memory leak. Domain checks still need much more work if we are going
to allow ALTER DOMAIN, however.
>
> * Wire Protocol Changes
> o Show transaction status in psql
> o Allow binding of query parameters, support for prepared queries
> o Add optional textual message to NOTIFY
> o Remove hard-coded limits on user/db/password names
> o Remove unused elements of startup packet (unused, tty, passlength)
> o Fix COPY/fastpath protocol?
> o Replication support?
> o Error codes
> o Dynamic character set handling
> o Special passing of binary values in platform-neutral format (bytea?)
> o ecpg improvements?
> o Add decoded type, length, precision
documentation and regression test mods. It seemed small and unobtrusive enough
to not require a specific proposal on the hackers list -- but if not, let me
know and I'll make a pitch. Otherwise, if there are no objections please apply.
Joe Conway
-hackers a couple days ago.
Notes/caveats:
- added regression tests for the new functionality, all
regression tests pass on my machine
- added pg_dump support
- updated PL/PgSQL to support per-statement triggers; didn't
look at the other procedural languages.
- there's (even) more code duplication in trigger.c than there
was previously. Any suggestions on how to refactor the
ExecXXXTriggers() functions to reuse more code would be
welcome -- I took a brief look at it, but couldn't see an
easy way to do it (there are several subtly-different
versions of the code in question)
- updated the documentation. I also took the liberty of
removing a big chunk of duplicated syntax documentation in
the Programmer's Guide on triggers, and moving that
information to the CREATE TRIGGER reference page.
- I also included some spelling fixes and similar small
cleanups I noticed while making the changes. If you'd like
me to split those into a separate patch, let me know.
Neil Conway
results due to doing arithmetic on uninitialized values. Add some
documentation about the AT TIME ZONE construct. Update some other
date/time documentation that seemed out of date for 7.3.
database access outside a transaction; revert bogus performance improvement
in SIBackendInit(); improve comments; add documentation (this part courtesy
Neil Conway).
parameter to allow it to be forced off for comparison purposes.
Add ORDER BY clauses to a bunch of regression test queries that will
otherwise produce randomly-ordered output in the new regime.
- CLUSTER ALL clusters all the tables that have some index with
indisclustered set and the calling user owns.
- CLUSTER tablename clusters the named table, using the index with
indisclustered set. If no index has the bit set, throws elog(ERROR).
- The multi-relation version (CLUSTER ALL) uses a multitransaction
approach, similar to what VACUUM does.
Alvaro Herrera
before commit, not after :-( --- the original coding is not only unsafe
if an error occurs while it's processing, but it generates an invalid
sequence of WAL entries. Resurrect 7.2 logic for deleting items when
no longer needed. Use an enum instead of random macros. Editorialize
on names used for routines and constants. Teach backend/nodes routines
about new field in CreateTable struct. Add a regression test.
PL/PgSQL. Previously, it had been bundled together with the assign
statement implementation, for some reason that wasn't clear to me
(they certainly don't share any code with one another). So I separated
them and made PERFORM a statement like any other. No changes in
functionality.
Along the way, I added some regression tests for PERFORM, added a
bunch more SGML tags to the PL/PgSQL docs, and removed an obsolete
comment relating to the implementation of RETURN NEXT.
Neil Conway
"traditional" behavior, so the change should be transparent. Use the
command "\pset pager always" to turn it on. Anything else does the
normal toggle between "on" and "off"
Greg Sabino Mullane
precision for float4, float8, and geometric types. Set it in pg_dump
so that float data can be dumped/reloaded exactly (at least on platforms
where the float I/O support is properly implemented). Initial patch by
Pedro Ferreira, some additional work by Tom Lane.
the documentation and behavior of "pg_result $res -oid" when $res is not
from an INSERT. The documentation says it should return an empty
string, but in fact it returns 0. I think it used to return an empty
string around PostgreSQL-7.1.3 when PQoidStatus() was used, but now it
uses PQoidValue() which returns InvalidOid, 0 in this case.
Assuming the current behavior is desired, here is a patch to the
documentation doc/src/sgml/libpgtcl.sgml to match what really happens:
ljb
> * Add GUC variables extra_float_digits and extra_double_digits to
> control output digits
419a422
> * Research interaction of setitimer() and sleep() used by statement_timeout
< A dash (-) marks changes that will appear in the upcoming 7.3 release.
> A dash (-) marks changes that will appear in the upcoming 7.4 release.
38d37
< * -Change DEBUG startup tag to LOG (Bruce)
40,51d38
< * -Add pg_backend_pid() function to backend
< * -Allow logging of query durations
<
<
< Permissions
< ===========
<
< * -Improve control over user privileges, including table creation
< * -Allow user/group names to be specified directly in pg_hba.conf (Bruce)
< * -Add ~/.pgpass to store passwords with user/host/password combinations
< * -Allow permissions for functions (Peter E)
< * -Allow object creation to be disabled for specific users
58,60d44
< * -Make it easier to create a database owned by someone who can't createdb,
< perhaps CREATE DATABASE dbname WITH OWNER = "user" (Gavin)
< * -Make equals sign optional in CREATE DATABASE WITH param = 'val'
65,66d48
< * -Prevent SIGHUP and 'pg_ctl reload' from changing command line
< specified parameters to postgresql.conf defaults (Peter E)
69,70d50
< * -Reserve last few process slots for super-user if max_connections reached
< * -Add GUC parameter to print queries that generate errors
79d58
< * -Add domain capability (Rod Taylor)
82,84d60
< * -SELECT cash_out(2) crashes because of opaque
< * -Declare typein/out functions in pg_proc with a special "C string" data type
< * -Functions returning sets do not totally work
89d64
< * -Add GUC parameter for DATESTYLE
91,93d65
< * -Allow bytea to handle LIKE with non-TEXT patterns
< * -to_char(0,'FM999.99') returns a period, to_char(1,'FM999.99') doesn't (Karel)
< * -Add floor(float8) and other missing functions
97d68
< o -Store binary-compatible type information in the system
104d74
< o -Ensure we have array-eq operators for every built-in array type
139,140d108
< * -Remove brackets as multi-statement rule grouping, must use parens (Bruce)
< * -Prevent aggregates from being used in rule WHERE clauses
154d121
< * -Allow UPDATE/DELETE on inherited table
166d132
< * -Add deleted bit to index tuples to reduce heap access
176d141
< * -Test hash index performance and discourage usage
182d146
< * -Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
184d147
< * -Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
186,187d148
< * -Disallow TRUNCATE on tables that are involved in referential constraints
< * -Add OR REPLACE clauses to non-FUNCTION object creation
190d150
< * -Prevent create/drop scripts from allowing extra args (Bruce)
201,205d160
< o -Add ALTER TABLE DROP COLUMN feature
< o -Add ALTER TABLE DROP non-CHECK CONSTRAINT
< o -ALTER TABLE ADD PRIMARY KEY (Tom)
< o -ALTER TABLE ADD UNIQUE (Tom)
< o -ALTER TABLE ALTER COLUMN SET/DROP NOT NULL (Christopher)
210d164
< o -Have ALTER TABLE OWNER change all dependant objects like indexes
214,216d167
< o -Cluster all tables at once using pg_index.indisclustered set during
< previous CLUSTER
< o -Prevent loss of indexes, permissions, inheritance
221d171
< o -Allow specification of column names
224d173
< o -Change syntax to WITH DELIMITER, (keep old syntax around?)
228d176
< o -Generate failure on short COPY lines rather than pad NULLs
242,243d189
< o -Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
< o -Disallow missing columns in INSERT ... (col) VALUES, per ANSI
248,249d193
< o -Add command to display locks
< o -Add SET or BEGIN timeout parameter to cancel query
251d194
< o -Remove SET KSQO option now that OR processing is improved (Bruce)
254,256d196
< o -Add SHOW command to see locale
< o -Allow SHOW to output as a query result, like EXPLAIN
< o -Abort all SET changes made in an aborted transaction
264d203
< o -Fix PL/PgSQL to handle quoted mixed-case identifiers
287,291d225
< * -Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
< or multiple SELECTS to avoid bad system catalog entries
< * -Have pg_dump -C dump database location and encoding information
< * -Allow psql \d to show foreign keys
< * -Allow psql \d to show temporary table structure (Tom)
294d227
< * -Have pg_dump use ADD PRIMARY KEY after COPY, for performance (Neil)
302d234
< o -Updateable resultSet
307d238
< o -Implement cancel() method on Statement
309d239
< o -Add support for CallableStatements
311d240
< o -Compile under jdk 1.4
334d262
< * -Allow oid to act as a foreign key
337,338d264
< * -Allow user to control trigger firing order (Tom)
< * -Add ALTER TRIGGER ... RENAME
341d266
< * -Fix foreign key constraints to not error on intermediate db states (Stephan)
350,359d274
< * -Add pg_depend table for dependency recording; use sysrelid, oid,
< depend_sysrelid, depend_oid, name
< * -Auto-destroy sequence on DROP of table with SERIAL; perhaps a separate
< SERIAL type
< * -Prevent column dropping if column is used by foreign key
< * -Propagate column or table renaming to foreign key constraints
< * -Automatically drop constraints/functions when object is dropped
< * -Make foreign key constraints clearer in dump file
< * -Make other constraints clearer in dump file
< * -Make foreign keys easier to identify
367d281
< * -Allow autocommit so always in a transaction block
377d290
< * -Add SQL92 schemas (Tom)
400d312
< * -Cache most recent query plan(s) (Neil) [prepare]
439d350
< * -Cache system catalog information in per-database files (Tom)
450,451d360
< * -Reorder postgresql.conf WAL items in order of importance (Bruce)
< * -Remove wal_files postgresql.conf option because WAL files are now recycled
465,466d373
< * -Improve dynamic memory allocation by introducing tuple-context memory
< allocation (Tom)
468d374
< * -Nested FULL OUTER JOINs don't work (Tom)
470,472d375
< * -Add new pg_proc cachable settings to specify whether function can be
< evaluated only once or once per query
< * -Change FIXED_CHAR_SEL to 0.20 from 0.04 to give better selectivity (Bruce)
494,496d396
< * -Add Intimate Shared Memory(ISM) for Solaris
< * -Use faster flex flags for performance improvement (Peter E)
< * -Add BSD-licensed qsort() for Solaris
503,507d402
< * -Fix problems with libpq non-blocking/async code
< * -Make sure all block numbers are unsigned to increase maximum table size
< * -Merge LockMethodCtl and LockMethodTable into one shared structure (Bruce)
< * -HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG (Bruce)
< * -Remove LockMethodTable.prio field, not used (Bruce)
512,513d406
< * -Make one version of simple_prompt() in code (Bruce, Tom)
< * -Compile in syslog functionaility by default (Tatsuo)
517d409
< * -Report failure to find readline or zlib at end of configure run
519,520d410
< * -Increase identifier length (NAMEDATALEN) if small performance hit,
< * -Increase maximum number of function parameters if little wasted space
529,530d418
< * -Fix glibc's mktime() to handle pre-1970's dates
< * -Move /contrib/retep to gborg.postgresql.org
where it's safe to do database access. Along the way, fix core dump
for 'DEFAULT' parameters to CREATE DATABASE. initdb forced due to
change in pg_proc entry.
< * Add floor(float8) and other missing functions
> * -Add floor(float8) and other missing functions
174c174
< * Improve concurrency of hash indexes (Neil Conway)
> * Improve concurrency of hash indexes (Neil)
277c277
< o Allow array declarations and other data types in PL/PgSQl DECLARE
> o Allow array declarations and other data types in PL/PgSQL DECLARE
293c293
< * -Have pg_dump use ADD PRIMARY KEY after COPY, for performance (Neil Conway)
> * -Have pg_dump use ADD PRIMARY KEY after COPY, for performance (Neil)
474c474
< * Precompile SQL functions to avoid overhead (Neil Conway)
> * Precompile SQL functions to avoid overhead (Neil)
549c549
< * Neil is Neil Conway <nconway@klamath.dyndns.org>
> * Neil is Neil Conway <neilc@samurai.com>
rather than being reordered according to INSTEAD attribute for
implementation convenience.
Also, increase compiled-in recursion depth limit from 10 to 100 rewrite
cycles. 10 seems pretty marginal for situations where multiple rules
exist for the same query. There was a complaint about this recently,
so I'm going to bump it up. (Perhaps we should make the limit a GUC
parameter, but that's too close to being a new feature to do in beta.)
a column list. Bring its parsing of quoted names and quoted strings
somewhat up to speed --- I believe it now handles all non-error cases
the same way the backend would, but weird boundary conditions are not
necessarily done the same way.
- Wrap them in the <database class="table"> tags, since thats what they
are (no markup rules for this, so it inherits from parent -- no style
change)
- Mention that pg_database, pg_shadow, and pg_group are global, and the
rest are local to the specific DB. (I believe this is correct).
> Works for me, though I suppose we could explain what the exceptions are
> like in general terms. Perhaps something like
>
> 'Most system catalogs are copied from the template database during
> database creation, and are thereafter database-specific. A few
> catalogs are physically shared across all databases in an installation;
> these are marked in the descriptions of the individual catalogs.'
Ok, new patch.
Rod Taylor
> > > > found in the postmaster and not included from elsewhere)
> >
> > shared libs on AIX need to be able to resolve all symbols at linkage time.
> > Those two symbols are in backend/utils/SUBSYS.o but not in the postgres
> > executable.
>
> They are defined in backend/utils/mb/conv.c and declared in
> include/mb/pg_wchar.h. They're also linked into the
> postmaster. I don't see anything unusual.
Attached is a patch to fix the mb linking problems on AIX. As a nice side effect
it reduces the duplicate symbol warnings to linking libpq.so and libecpg.so
(all shlibs that are not postmaster loadable modules).
Please apply to current (only affects AIX).
The _LARGE_FILES problem is unfortunately still open, unless Peter
has fixed it per his recent idea.
Zeugswetter Andreas SB SD
discussion some weeks ago. Also, add a check that two types to be
binary-equivalenced match as to typlen, typbyval, and typalign; if
they don't then it's surely a mistake to equivalence them.
be able to do that, but the ability seems to have got lost in the
shuffle). Add a -o nextOID switch for completeness. Improve the
documentation to explain how and why to use these switches.
The error message said so :-)
In 25.3. Using PL/Python
If the trigger "when" is BEFORE, you may return None or "OK"
from the Python function to indicate the tuple is unmodified, "SKIP"
to abort the event, or "MODIFIED" to indicate you've modified the tuple.
should read
If the trigger "when" is BEFORE, you may return None or "OK"
from the Python function to indicate the tuple is unmodified, "SKIP"
to abort the event, or "MODIFY" to indicate you've modified the tuple.
elein
the SQL99 standard. (I'm not sure that the character-class features are
quite right, but that can be fixed later.) Document SQL99 and POSIX
regexps as being different features; provide variants of SUBSTRING for
each.
with OPAQUE. CREATE LANGUAGE, CREATE TRIGGER, and CREATE TYPE will all
accept references to functions declared with OPAQUE --- but they will
issue a NOTICE, and will modify the function entries in pg_proc to have
the preferred type-safe argument or result types instead of OPAQUE.
Per recent pghackers discussions.
to be flexible about assignment casts without introducing ambiguity in
operator/function resolution. Introduce a well-defined promotion hierarchy
for numeric datatypes (int2->int4->int8->numeric->float4->float8).
Change make_const to initially label numeric literals as int4, int8, or
numeric (never float8 anymore).
Explicitly mark Func and RelabelType nodes to indicate whether they came
from a function call, explicit cast, or implicit cast; use this to do
reverse-listing more accurately and without so many heuristics.
Explicit casts to char, varchar, bit, varbit will truncate or pad without
raising an error (the pre-7.2 behavior), while assigning to a column without
any explicit cast will still raise an error for wrong-length data like 7.3.
This more nearly follows the SQL spec than 7.2 behavior (we should be
reporting a 'completion condition' in the explicit-cast cases, but we have
no mechanism for that, so just do silent truncation).
Fix some problems with enforcement of typmod for array elements;
it didn't work at all in 'UPDATE ... SET array[n] = foo', for example.
Provide a generalized array_length_coerce() function to replace the
specialized per-array-type functions that used to be needed (and were
missing for NUMERIC as well as all the datetime types).
Add missing conversions int8<->float4, text<->numeric, oid<->int8.
initdb forced.
> Hannu Krosing wrote:
>
>> It seems that my last mail on this did not get through to the list
>> ;(
>>
>> Please consider renaming the new builtin function
>> split(text,text,int)
>>
>> to something else, perhaps
>>
>> split_part(text,text,int)
>>
>> (like date_part)
>>
>> The reason for this request is that 3 most popular scripting
>> languages (perl, python, php) all have also a function with similar
>> signature, but returning an array instead of single element and the
>> (optional) third argument is limit (maximum number of splits to
>> perform)
>>
>> I think that it would be good to have similar function in (some
>> future release of) postgres, but if we now let in a function with
>> same name and arguments but returning a single string instead an
>> array of them, then we will need to invent a new and not so easy to
>> recognise name for the "real" split function.
>>
>
> This is a good point, and I'm not opposed to changing the name, but
> it is too bad your original email didn't get through before beta1 was
> rolled. The change would now require an initdb, which I know we were
> trying to avoid once beta started (although we could change it
> without *requiring* an initdb I suppose).
>
> I guess if we do end up needing an initdb for other reasons, we
> should make this change too. Any other opinions? Is split_part an
> acceptable name?
>
> Also, if we add a todo to produce a "real" split function that
> returns an array, similar to those languages, I'll take it for 7.4.
No one commented on the choice of name, so the attached patch changes
the name of split(text,text,int) to split_part(text,text,int) per
Hannu's recommendation above. This can be applied without an initdb if
current beta testers are advised to run:
update pg_proc set proname = 'split_part' where proname = 'split';
in the case they want to use this function. Regression and doc fix is
also included in the patch.
Joe Conway
creation to world, but disallow temp table creation in template1. Per
latest round of pghackers discussion.
I did not force initdb, but the permissions lockdown on template1 will
not take effect unless you do one (or manually REVOKE TEMP ON DATABASE template1 FROM public).
Gerhard Hintermayer, revised and documented by Tom Lane.
This patch also fixes a 'must fix' bug: libpgtcl's LISTEN/NOTIFY
support was broken by the recent changes to the PGnotify structure.
Guess that change wasn't quite so safe as we thought.
< o -ALTER TABLE ALTER COLUMN SET/DROP NOT NULL (Christopher Kings-Lynne)
< o ALTER TABLE ADD COLUMN column SERIAL doesn't create sequence
> o -ALTER TABLE ALTER COLUMN SET/DROP NOT NULL (Christopher)
200a200,201
> o ALTER TABLE ADD COLUMN column SERIAL doesn't create sequence because
> of the item above
232c233
< o -Disallow missing columns in INSERT ... VALUES, per ANSI
> o -Disallow missing columns in INSERT ... (col) VALUES, per ANSI
335,336d335
< * Have SERIAL generate non-colliding sequence names when we have
< auto-destruction
< * Allow logging of query durations
> * -Allow logging of query durations
51,52d50
< * Make single-user local access permissions the default by limiting
< permissions on the socket file (Peter E)
72,73c70,71
< * Reserve last few process slots for super-user if max_connections reached
< * Add GUC parameter to print queries that generate errors
> * -Reserve last few process slots for super-user if max_connections reached
> * -Add GUC parameter to print queries that generate errors
82,83c80,81
< * Declare typein/out functions in pg_proc with a special "C string" data type
< * Functions returning sets do not totally work
> * -Declare typein/out functions in pg_proc with a special "C string" data type
> * -Functions returning sets do not totally work
90c88
< * Allow bytea to handle LIKE with non-TEXT patterns
> * -Allow bytea to handle LIKE with non-TEXT patterns
94c92
< o Store binary-compatible type information in the system
> o -Store binary-compatible type information in the system
97d94
< o -SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes
102c99
< o Ensure we have array-eq operators for every built-in array type
> o -Ensure we have array-eq operators for every built-in array type
119d115
< * Allow setting database character set without multibyte enabled
152d147
< * Have UPDATE/DELETE clean out indexes
198,199d192
< o ALTER TABLE ADD COLUMN to inherited table put column in wrong place
< [inheritance]
201d193
< o Add ALTER FUNCTION
203,204c195,196
< o -ALTER TABLE ADD PRIMARY KEY (Tom)
< o -ALTER TABLE ADD UNIQUE (Tom)
> o -ALTER TABLE ADD PRIMARY KEY (Christopher)
> o -ALTER TABLE ADD UNIQUE (Christopher)
248c240
< o -Remove SET KSQO option now that OR processing is improved (Tom)
> o -Remove SET KSQO option now that OR processing is improved (Bruce)
280c272
< * Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
> * -Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
287d278
< * Add config file check for $ODBCINI, $HOME/.odbc.ini, installpath/etc/odbc.ini
318,322d308
< * ODBC
< o ODBC 3.0 support
< o Unicode(UCS-2) support
< o Updatable cursors support
<
337c323
< * Fix foreign key constraints to not error on intermediate db states (Stephan)
> * -Fix foreign key constraints to not error on intermediate db states (Stephan)
352c338
< * Propagate column or table renaming to foreign key constraints
> * -Propagate column or table renaming to foreign key constraints
447c433
< * Remove wal_files postgresql.conf option because WAL files are now recycled
> * -Remove wal_files postgresql.conf option because WAL files are now recycled
460c446
< * Improve dynamic memory allocation by introducing tuple-context memory
> * -Improve dynamic memory allocation by introducing tuple-context memory
463c449
< * Nested FULL OUTER JOINs don't work (Tom)
> * -Nested FULL OUTER JOINs don't work (Tom)
> * -Add OR REPLACE clauses to non-FUNCTION object creation
> * -Allow autocommit so always in a transaction block
> * -Cache most recent query plan(s) (Neil) [prepare]
not synonymous with CHECK (xxx IS NOT NULL) -- for example, consider
ALTER TABLE ADD PRIMARY KEY, which checks for 'NOT NULL', not a check
constraint.
Neil Conway
already fixed by You. However there were a few left and attached patch
should fix the rest of them.
I used StringInfo only in 2 places and both of them are inside debug
ifdefs. Only performance penalty will come from using strlen() like all
the other code does.
I also modified some of the already patched parts by changing
snprintf(buf, 2 * BUFSIZE, ... style lines to
snprintf(buf, sizeof(buf), ... where buf is an array.
Jukka Holappa
(overlaying low byte of page size) and add HEAP_HASOID bit to t_infomask,
per earlier discussion. Simplify scheme for overlaying fields in tuple
header (no need for cmax to live in more than one place). Don't try to
clear infomask status bits in tqual.c --- not safe to do it there. Don't
try to force output table of a SELECT INTO to have OIDs, either. Get rid
of unnecessarily complex three-state scheme for TupleDesc.tdhasoids, which
has already caused one recent failure. Improve documentation.
available (else there's no way to interpret the list links). Change
pg_locks view to show transaction ID locks separately from ordinary
relation locks. Avoid showing N duplicate rows when the same lock is
held multiple times (seems unlikely that users care about exact hold
count). Improve documentation.
to false provides more SQL-spec-compliant behavior than we had before.
I am not sure that setting it false is actually a good idea yet; there
is a lot of client-side code that will probably be broken by turning
autocommit off. But it's a start.
Loosely based on a patch by David Van Wie.
column additions, deletions, and renames that would let a child table
get out of sync with its parent. Patch by Alvaro Herrera, with some
kibitzing by Tom Lane.
to the table function, thus preventing memory leakage accumulation across
calls. This means that SRFs need to be careful to distinguish permanent
and local storage; adjust code and documentation accordingly. Patch by
Joe Conway, very minor tweaks by Tom Lane.
bit on the indexes.
I also attach clusterdb and clusterdb.sgml; both of them are blatant
rips of vacuumdb and vacuumdb.sgml, but get the job done. Please review
them, as I'm probably making a lot of mistakes with SGML and I can't
compile it here.
vacuumdb itself is not very comfortable to use when the databases have
passwords, because it has to connect once for each table (I can probably
make it connect only once for each database; should I?). Because of
this I added a mention of PGPASSWORDFILE in the documentation, but I
don't know if that is the correct place for that.
Alvaro Herrera
value '-2' is used to indicate a variable-width type whose width is
computed as strlen(datum)+1. Everything that looks at typlen is updated
except for array support, which Joe Conway is working on; at the moment
it wouldn't work to try to create an array of cstring.
>>" It's also possible to select no escape character by writing ESCAPE ''.
>>In this case there is no way to turn off the special meaning of
>>underscore and percent signs in the pattern."
Joe Conway
with OPAQUE, as per recent pghackers discussion. I still want to do some
more work on the 'cstring' pseudo-type, but I'm going to commit the bulk
of the changes now before the tree starts shifting under me ...
FOUND is set whenever a SELECT INTO returns > 0 rows, *or* when an
INSERT, UPDATE, or DELETE affects > 0 rows. We implemented the first
part of this behavior, but not the second.
I also improved the documentation on the various situations in which
FOUND can be set (excluding inside FOR loops, which I still need to
think about), and added some regression tests for this behavior.
Neil Conway
> Quick system function to pull out the current database.
>
> I've used this a number of times to allow stored procedures to find out
> where they are. Especially useful for those that do logging or hit a
> remote server.
>
> It's called current_database() to match with current_user().
It's also a necessity for an informational schema. The catalog
(database) name is required in a number of places.
Rod Taylor
The -n and -N options were removed. Quoting is now smart enough to
supply quotes if and only if necessary.
Numerical types are now printed without quotes, except in cases of
special values such as NaN.
Boolean values printed as true and false.
Most string literals now do not escape whitespace characters (newlines,
etc.) for portability.
SET SESSION AUTHORIZATION argument is a string literal, to follow SQL.
Made commands output by pg_dump use consistent spacing and indentation.
This patch is an updated version of the lock listing patch. I've made
the following changes:
- write documentation
- wrap the SRF in a view called 'pg_locks': all user-level
access should be done through this view
- re-diff against latest CVS
One thing I chose not to do is adapt the SRF to use the anonymous
composite type code from Joe Conway. I'll probably do that eventually,
but I'm not really convinced it's a significantly cleaner way to
bootstrap SRF builtins than the method this patch uses (of course, it
has other uses...)
Neil Conway
sets of triggers. Also modify psql \d command to show foreign key
constraints as such and hide the triggers. pg_get_constraintdef()
function added to backend to support these. From Rod Taylor, code
review and some editorialization by Tom Lane.
<
> * Prevent mismatch of frontend/backend encodings from converting bytea
> data from being interpreted as encoded strings
512a514,515
> * Fix glibc's mktime() to handle pre-1970's dates
>
> * -Improve control over user privileges, including table creation
> * -Add PGPASSWORDFILE environment variable or ~/.pgpass to store
> o -Compile under jdk 1.4
> There's no longer a separate call to heap_storage_create in that routine
> --- the right place to make the test is now in the storage_create
> boolean parameter being passed to heap_create. A simple change, but
> it passeth patch's understanding ...
Thanks.
Attached is a patch against cvs tip as of 8:30 PM PST or so. Turned out
that even after fixing the failed hunks, there was a new spot in
bufmgr.c which needed to be fixed (related to temp relations;
RelationUpdateNumberOfBlocks). But thankfully the regression test code
caught it :-)
Joe Conway
Chapter 1. libpq - C Library
1.3. Command Execution Functions
1.3.3. Escaping binary strings for inclusion in SQL queries
I found the line
"The result string length does not include the terminating zero byte of the result."
is not right.
The result string length does indeed include the terminating zero byte.
Christoph Haller
> > This patch improves the documentation of the UPDATE and ALTER TABLE
> > commands to elaborate on the effect of specifying an "ONLY" clause.
>
> Unfortunately this is still only half the truth ... see the
> SQL_INHERITANCE configuration variable.
Okay, I've attached an updated patch with more information on
SQL_INHERITANCE and inheritance behavior in prior releases.
Neil Conway
PGPASSWORDFILE environment variable. I have modified libpq to make use
of this variable. I present the first cut here.
Currently the format for the file should be
host:port:database:user:password
Alvaro Herrera
sys = malloc(strlen(editorName) + strlen(fname) + 10 + 1);
if (!sys)
return false;
sprintf(sys, "exec '%s' '%s'", editorName, fname);
(note the added quotes to provide a little protection against spaces
and such). Then it's perfectly obvious what the calculation is doing.
I don't care about wasting 20-some bytes, but confusing readers of the
code is worth avoiding.
regards, tom lane
< * Allow temporary views
< * Require view using temporary tables to be temporary views
> * -Have views on temporary tables exist in the temporary namespace
<
> o Improve PL/PgSQL exception handling
> o Allow PL/PgSQL parameters to be specified by name and type during
> definition
> o Allow PL/PgSQL function parameters to be passed by name,
> get_employee_salary(emp_id => 12345, tax_year => 2001)
> o Add PL/PgSQL packages
> o Allow array declarations and other data types in PL/PgSQl DECLARE
> o Add PL/PgSQL PROCEDURES that can return multiple values
to make a reasonable attempt at accounting for palloc overhead, not just
the requested size of each memory chunk. Since in many scenarios this
will make for a significant reduction in the amount of space acquired,
partially compensate by doubling the default value of SORT_MEM to 1Mb.
Per discussion in pgsql-general around 9-Jun-2002..
relfilenode.
I sent the CLUSTER patch a few days ago and I think it was missed. I
append it again, this time including the regression test files. For the
committer, please note that you have to cvs add the files as they don't
exist. Maybe add to the parallel and serial schedules also, but I don't
know such stuff.
Alvaro Herrera (<alvherre[a]atentus.com>)
has_language_privilege, has_schema_privilege to let SQL queries test
all the new privilege types in 7.3. Also, add functions pg_table_is_visible,
pg_type_is_visible, pg_function_is_visible, pg_operator_is_visible,
pg_opclass_is_visible to test whether objects contained in schemas are
visible in the current search path. Do some minor cleanup to centralize
accesses to pg_database, as well.
Still needs to be filled with more information, but it gives us a
framework to have a User's Guide with complete coverage of the basic
SQL operations. Move arrays into data type chapter, inheritance into
DDL chapter (for now).
Make <comment>s show up in the output while the version number ends in
"devel".
Allow cross-book references with entities &cite-user; etc.
of functions returning domain types, update documentation for typtype,
move get_typtype to lsyscache.c (actually, resurrect the old version),
add defense against creating pseudo-typed table columns, fix some
bogus list-parsing in grammar. Issues remain with respect to alias
handling and type checking; Joe is on those.
types for Table Functions, as previously proposed on HACKERS. Here is a
brief explanation:
1. Creates a new pg_type typtype: 'p' for pseudo type (currently either
'b' for base or 'c' for catalog, i.e. a class).
2. Creates new builtin type of typtype='p' named RECORD. This is the
first of potentially several pseudo types.
3. Modify FROM clause grammer to accept:
SELECT * FROM my_func() AS m(colname1 type1, colname2 type1, ...)
where m is the table alias, colname1, etc are the column names, and
type1, etc are the column types.
4. When typtype == 'p' and the function return type is RECORD, a list
of column defs is required, and when typtype != 'p', it is
disallowed.
5. A check was added to ensure that the tupdesc provide via the parser
and the actual return tupdesc match in number and type of
attributes.
When creating a function you can do:
CREATE FUNCTION foo(text) RETURNS setof RECORD ...
When using it you can do:
SELECT * from foo(sqlstmt) AS (f1 int, f2 text, f3 timestamp)
or
SELECT * from foo(sqlstmt) AS f(f1 int, f2 text, f3 timestamp)
or
SELECT * from foo(sqlstmt) f(f1 int, f2 text, f3 timestamp)
Included in the patches are adjustments to the regression test sql and
expected files, and documentation.
p.s.
This potentially solves (or at least improves) the issue of builtin
Table Functions. They can be bootstrapped as returning RECORD, and
we can wrap system views around them with properly specified column
defs. For example:
CREATE VIEW pg_settings AS
SELECT s.name, s.setting
FROM show_all_settings()AS s(name text, setting text);
Then we can also add the UPDATE RULE that I previously posted to
pg_settings, and have pg_settings act like a virtual table, allowing
settings to be queried and set.
Joe Conway
functionality of the command is basically identical to that of
BEGIN; it just accepts a few extra options (only one of which
PostgreSQL currently implements), and is standards-compliant.
The patch includes a simple regression test and documentation.
[ Regression tests removed, per Peter.]
Neil Conway
code review by Tom Lane. Remaining issues: functions that take or
return tuple types are likely to break if one drops (or adds!)
a column in the table defining the type. Need to think about what
to do here.
Along the way: some code review for recent COPY changes; mark system
columns attnotnull = true where appropriate, per discussion a month ago.
attstattarget to indicate 'use the default'. The default is now a GUC
variable default_statistics_target, and so may be changed on the fly. Along
the way we gain the ability to have pg_dump dump the per-column statistics
target when it's not the default. Patch by Neil Conway, with some kibitzing
from Tom Lane.
All of the internal tags are of the latter.
The other thing I noticed is that most of the quick examples in the file
use a para and synopsis. Is there a reason we're not using <example/> ?
Rod Taylor
The attached patch completes the following TODO item:
* Generate failure on short COPY lines rather than pad NULLs
I also restructed a lot of the existing COPY code, did some code
review on the column list patch sent in by Brent Verner a little
while ago, and added some regression tests. I also added an
explicit check (and resultant error) for extra data before
the end-of-line.
Neil Conway
changes mentioned above, and also adds a new function to the tablefunc
API. The tablefunc API change adds the following function:
* Oid foidGetTypeId(Oid foid) - Get a function's typeid given the
* function Oid. Use this together with TypeGetTupleDesc() to get a
* TupleDesc which is derived from the function's declared return type.
In the next post I'll send the contrib/tablefunc patch, which
illustrates the usage of this new function. Also attached is a doc patch
for this change. The doc patch also adds a function that I failed to
document previously.
Joe Conway
documentation (xindex.sgml should be rewritten), need to teach pg_dump
about it, need to update contrib modules that currently build pg_opclass
entries by hand. Original patch by Bill Studenmund, grammar adjustments
and general update for 7.3 by Tom Lane.
pg_language.lancompiler
pg_operator.oprprec
pg_operator.oprisleft
pg_proc.proimplicit
pg_proc.probyte_pct
pg_proc.properbyte_cpu
pg_proc.propercall_cpu
pg_proc.prooutin_ratio
pg_shadow.usetrace
pg_type.typprtlen
pg_type.typreceive
pg_type.typsend
Attempts to use the obsoleted attributes of pg_operator or pg_proc
in the CREATE commands will be greeted by a warning. For pg_type,
there is no warning (yet) because pg_dump scripts still contain these
attributes.
Also remove new but already obsolete spellings
isVolatile, isStable, isImmutable in WITH clause. (Use new syntax
instead.)
> * -Add GUC parameter for DATESTYLE
> o -Allow specification of column names
> o -Change syntax to WITH DELIMITER, (keep old syntax around?)
> o -Remove SET KSQO option now that OR processing is improved (Tom)
> o -Allow SHOW to output as a query result, like EXPLAIN
> * -Add SQL92 schemas (Tom)
extension to create binary compatible casts. Includes dependency tracking
as well.
pg_proc.proimplicit is now defunct, but will be removed in a separate
commit.
pg_dump provides a migration path from the previous scheme to declare
casts. Dumping binary compatible casts is currently impossible, though.
reflects the changes in the tablefunc-fix patch that I sent in the other
day. It also refers to "see contrib/tablefunc for more examples", which
is next on my list of things to finish and submit.
Joe Conway
COPY x (a,d,c,b) from stdin;
COPY x (a,c) to stdout;
as well as the corresponding changes to pg_dump to use the new
functionality. This functionality is not available when using
the BINARY option. If a column is not specified in the COPY FROM
statement, its default values will be used.
In addition to this functionality, I tweaked a couple of the
error messages emitted by the new COPY <options> checks.
Brent Verner
> > David Clark (dclarknospam@opsi.co.za) reports a bug with a severity
> > Table 3-7 SQL Literal escaped octets shows the input escape
> > representation for a single quote as '\\'' , but the third paragraph
> > below table 3-8 SQL Output Escaped Octets says that the single quote
> > must be input as '\''
>
> Nice catch. '\'' is correct as shown in the example in Table 3-7.
>
> >
> > Also in the same paragraph mentioned above it says input for the
> > single quote must be '\'' (or '\\134') shouldn't this be (or '\\047')
>
> Also a bug. Should be '\\047', as you pointed out.
>
Here's a patch to fix the binary string doc errors.
Joe Conway
UNIQUE and DISTINCT predicates are both listed as implemented -- AFAIK,
neither is.
I also included another trivial patch which adds the default location
of the DSSSL stylesheets on my system (Debian unstable, docbook-dsssl
1.76) to the list of paths that configure looks for.
Neil Conway
> o -Add ALTER TABLE DROP non-CHECK CONSTRAINT
> * -Allow psql \d to show foreign keys
> * -Auto-destroy sequence on DROP of table with SERIAL; perhaps a separate
> * -Prevent column dropping if column is used by foreign key
> * -Automatically drop constraints/functions when object is dropped
> * -Make foreign key constraints clearer in dump file
> * -Make foreign keys easier to identify
pg_relcheck is gone; CHECK, UNIQUE, PRIMARY KEY, and FOREIGN KEY
constraints all have real live entries in pg_constraint. pg_depend
exists, and RESTRICT/CASCADE options work on most kinds of DROP;
however, pg_depend is not yet very well populated with dependencies.
(Most of the ones that are present at this point just replace formerly
hardwired associations, such as the implicit drop of a relation's pg_type
entry when the relation is dropped.) Need to add more logic to create
dependency entries, improve pg_dump to dump constraints in place of
indexes and triggers, and add some regression tests.
Fix pg_dump to not quote the function name in the storage tag.
Fix pg_dump so GRANT/REVOKE(ACL) tag entries are not quoted, for
consistency.
Fix pg_restore to properly handle quotes and some spaces in -P.
Also implement alternative forms to expose the PostgreSQL CREATE FUNCTION
features.
Implement syntax for READ ONLY and READ WRITE clauses in SET TRANSACTION.
READ WRITE is already implemented (of course).
Implement syntax for "LIKE table" clause in CREATE TABLE. Should be fairly
easy to complete since it resembles SELECT INTO.
Implement MATCH SIMPLE clause for foreign key definitions. This is explicit
SQL99 syntax for the default behavior, so we now support it :)
Start implementation of shorthand for national character literals in
scanner. For now, just swallow the leading "N", but sometime soon let's
figure out how to pass leading type info from the scanner to the parser.
We should use the same technique for binary and hex bit string literals,
though it might be unusual to have two apparently independent literal
types fold into the same storage type.
> information and SQL language specific info wrt SRFs. I've taken to
> calling this feature "Table Fuctions" to be consistent with (at least)
> one well known RDBMS.
Joe Conway
Second cut attached. This one just adds a boolean option to the existing
function to indicate that implicit schemas are to be included (or not).
I remembered the docs as well this time :-)
Dave Page
but occasionally I may need to shut down the server and restart it
w/o tcpip sockets. Postmaster has the -i option to turn on tcpip
connections, but it wasn't immediately clear how to easily or
temporarily turn it off (when it's been enabled in postgresql.conf).
In fact, it wasn't clear to me until digging in to postmaster.c that
I could pass '-c tcpip_socket=false' or '--tcpip_socket=false'.
(And then of course when I looked more closely at the man page I
realized I'd missed the proper part of the documentation.) What I'd
been looking for is a flag that would have the opposite effect of
'-i', and it's conceivable that others will be looking for specific
flags to do the opposite of '-F' and '-S'.
I was preparing to add options to postmaster until I realized that
maybe the solution is just to add some documentation.
If you'd rather have 1 character options to accomplish this, I'd be
happy to do that-- adding those 9 lines of code is definitely within
my ability. :) (Although, the "right" letter to be the opposite of -S
isn't clear to me, since -s is already taken.)
Ron Snyder.
>
> > Is it a good idea to provide an example (such as the above), or should I
> > just try and describe the behaviour?
>
> Examples are generally good things ...
OK, the attached documentation patch provides some simple examples of
use of tablename as a parameter, %ROWTYPE and %TYPE.
In the end I decided that the documentation is literally correct, but
hard to follow without any examples explicitly showing the use of a
table name as a parameter.
Andrew McMillan
Remove ODBC-compatible empty parentheses from calls to SQL99 functions
for which these parentheses do not match the standard.
Update the ODBC driver to ensure compatibility with the ODBC standard
for these functions (e.g. CURRENT_TIMESTAMP, CURRENT_USER, etc).
Include a new appendix in the User's Guide which lists the labeled features
for SQL99 (the labeled features replaced the "basic", "intermediate",
and "advanced" categories from SQL92). features.sgml does not yet split
this list into "supported" and "unsupported" lists.
Implement SQL99 SIMILAR TO as a synonym for our existing operator "~".
Implement SQL99 regular expression SUBSTRING(string FROM pat FOR escape).
Extend the definition to make the FOR clause optional.
Define textregexsubstr() to actually implement this feature.
Update the regression test to include these new string features.
All tests pass.
Rename the regular expression support routines from "pg95_xxx" to "pg_xxx".
Define CREATE CHARACTER SET in the parser per SQL99. No implementation yet.
Implement SQL99 SIMILAR TO as a synonym for our existing operator "~".
Implement SQL99 regular expression SUBSTRING(string FROM pat FOR escape).
Extend the definition to make the FOR clause optional.
Define textregexsubstr() to actually implement this feature.
Update the regression test to include these new string features.
All tests pass.
Rename the regular expression support routines from "pg95_xxx" to "pg_xxx".
Define CREATE CHARACTER SET in the parser per SQL99. No implementation yet.
function body (and other properties) as a function in the language
is created. This generalizes ad hoc code that already existed for
the built-in languages.
The validation now happens after the pg_proc tuple of the new function
is created, so it is possible to define recursive SQL functions.
Add some regression test cases that cover bogus function definition
attempts.
GUC support. It's now possible to set datestyle, timezone, and
client_encoding from postgresql.conf and per-database or per-user
settings. Also, implement rollback of SET commands that occur in a
transaction that later fails. Create a SET LOCAL var = value syntax
that sets the variable only for the duration of the current transaction.
All per previous discussions in pghackers.
underlying function; but cause psql's \do to show the underlying
function's comment if the operator has no comment of its own, to preserve
the useful functionality of the original behavior. Also, implement
COMMENT ON SCHEMA. Patch from Rod Taylor.
to reset session userid to the originally-authenticated name. Also,
relax SET SESSION AUTHORIZATION to allow specifying one's own username
even if one is not superuser, so as to avoid unnecessary error messages
when loading a pg_dump file that uses this command. Per discussion from
several months ago.
per pghackers discussion. Add some more typsanity tests, and clean
up some problems exposed thereby (broken or missing array types for
some built-in types). Also, clean up loose ends from unknownin/out
patch.
The attached patch allows views to have default values. You can't
specify a default value within a CREATE VIEW statement, it must be
done using ALTER TABLE ... ALTER COLUMN ... SET DEFAULT after the
view has already been created. Most of the hard work was done by
Tom Lane, I just patched pg_dump and updated the documentation.
Neil Conway <neilconway@rogers.com>
capabilities of specifying time zones as intervals per SQL9x.
Put refentrytitle contents on the same line as the tag.
Otherwise, leading whitespace is propagated into the product, which
(at least) messes up the ToC layout.
Remove (some) docinfo tags containing dates. Best to omit if the dates
are not accurate; maybe use CVS dates instead or leave them out.
different privilege bits (might as well make use of the space we were
wasting on padding). EXECUTE and USAGE bits for procedures, languages
now are separate privileges instead of being overlaid on SELECT. Add
privileges for namespaces and databases. The GRANT and REVOKE commands
work for these object types, but we don't actually enforce the privileges
yet...
(tgrelid, tgname). This provides an additional check on trigger name
uniqueness per-table (which was already enforced by the code anyway).
With this change, RelationBuildTriggers will read the triggers in
order by tgname, since it's scanning using this index. Since a
predictable trigger ordering has been requested for some time, document
this behavior as a feature. Also document that rules fire in name
order, since yesterday's changes to pg_rewrite indexing cause that too.
DROP RULE and COMMENT ON RULE syntax adds an 'ON tablename' clause,
similar to TRIGGER syntaxes. To allow loading of existing pg_dump
files containing COMMENT ON RULE, the COMMENT code will still accept
the old syntax --- but only if the target rulename is unique across
the whole database.
an 'opclass owner' column in pg_opclass. Nothing is done with it at
present, but since there are plans to invent a CREATE OPERATOR CLASS
command soon, we'll probably want DROP OPERATOR CLASS too, which
suggests that a notion of ownership would be a good idea.
qualified operator names directly, for example CREATE OPERATOR myschema.+
( ... ). To qualify an operator name in an expression you need to write
OPERATOR(myschema.+) (thanks to Peter for suggesting an escape hatch).
I also took advantage of having to reformat pg_operator to fix something
that'd been bugging me for a while: mergejoinable operators should have
explicit links to the associated cross-data-type comparison operators,
rather than hardwiring an assumption that they are named < and >.
selected as the creation target namespace; to make that happen, you
must explicitly set search_path that way. This makes initdb a hair
more complex but seems like a good safety feature.
which covers some recent installation schemes.
Add Mandrake installation layout to directories to check for stylesheets.
Allow documentation build to proceed if stylesheets were not found, in case
the stylesheets might be found through the SGML catalog mechanism.
the libpgtcl "pg_execute" command. This was mentioned on
pgsql-interfaces on Mar 3. I am posting it here in the hope that someone
will check to see if it makes sense and is correct SGML-wise. I did run
it through jade, but this is my first try at this sort of thing.
ljb
entries, per pghackers discussion. This fixes aggregates to live in
namespaces, and also simplifies/speeds up lookup in parse_func.c.
Also, add a 'proimplicit' flag to pg_proc that controls whether a type
coercion function may be invoked implicitly, or only explicitly. The
current settings of these flags are more permissive than I would like,
but we will need to debate and refine the behavior; for now, I avoided
breaking regression tests as much as I could.
volatile), rather than the old cachable/noncachable distinction. This
allows indexscan optimizations in many places where we formerly didn't.
Also, add a pronamespace column to pg_proc (it doesn't do anything yet,
however).
A new pg_hba.conf column, USER
Allow specifiction of lists of users separated by commas
Allow group names specified by +
Allow include files containing lists of users specified by @
Allow lists of databases, and database files
Allow samegroup in database column to match group name matching dbname
Removal of secondary password files
Remove pg_passwd utility
Lots of code cleanup in user.c and hba.c
New data/global/pg_pwd format
New data/global/pg_group file
depend on this rather than the trigger argument strings to locate the
other relation to test. This makes RI triggers function properly in
the presence of schemas and temp tables. Along the way, fix bogus lack
of locking in RI triggers, handle quoting of names fully correctly,
compute required sizes of query buffers with some semblance of accuracy.
path. The default behavior if no per-user schemas are created is that
all users share a 'public' namespace, thus providing behavior backwards
compatible with 7.2 and earlier releases. Probably the semantics and
default setting will need to be fine-tuned, but this is a start.
in schemas other than the system namespace; however, there's no search
path yet, and not all operations work yet on tables outside the system
namespace.
the parsetree representation. As yet we don't *do* anything with schema
names, just drop 'em on the floor; but you can enter schema-compatible
command syntax, and there's even a primitive CREATE SCHEMA command.
No doc updates yet, except to note that you can now extract a field
from a function-returning-row's result with (foo(...)).fieldname.
> > to perform sql command:
> > update pg_amop set amopreqcheck = true where amopclaid =
> > (select oid from pg_opclass where opcname = 'gist_txtidx_ops');
>
> Oleg, sorry, I don't understand where this should appear. In the README
> file, and if so, where? Is this something only for people upgrading
> from 7.2?
Sorry Bruce, I was unclear. I have attached patch to Readme.tsearch
Also, It'd be worth to mention in Changes to point users of tsearch
about importang upgrade notices.
Oleg Bartunov
! DIFFERENCE (− or ∖): builds the set difference of
two tables. Let <classname>R</classname> and
<classname>S</classname>
again be two tables with the same
arity. <classname>R</classname> - <classname>S</classname>
--- 488,494 ----
<listitem>
<para>
! EXCEPT (− or ∖): builds the set difference of
< * Remove brackets as multi-statement rule grouping, must use parens (Bruce)
> * -Remove brackets as multi-statement rule grouping, must use parens (Bruce)
458d457
< * Remove USING clause from pg_get_indexdef() if index is btree (Bruce)
- domain.patch -> source patch against pgsql in cvs
- drop_domain.sgml and create_domain.sgml -> New doc/src/sgml/ref docs
- dominfo.txt -> basic domain related queries I used for testing
[ ADDED TO /doc]
Enables domains of array elements -> CREATE DOMAIN dom int4[3][2];
Uses a typbasetype column to describe the origin of the domain.
Copies data to attnotnull rather than processing in execMain().
Some documentation differences from earlier.
If this is approved, I'll start working on pg_dump, and a \dD <domain>
option in psql, and regression tests. I don't really feel like doing
those until the system table structure settles for pg_type.
CHECKS when added, will also be copied to to the table attributes. FK
Constraints (if I ever figure out how) will be done similarly. Both
will lbe handled by MergeDomainAttributes() which is called shortly
before MergeAttributes().
Rod Taylor
> > > > It was made to cope with encoding such as an Asian bloc in 7.2Beta2.
> > > >
> > > > Added ServerEncoding
> > > > Korean (JOHAB), Thai (WIN874),
> > > > Vietnamese (TCVN), Arabic (WIN1256)
> > > >
> > > > Added ClientEncoding
> > > > Simplified Chinese (GBK), Korean (UHC)
> > > >
> > > >
> > > >
> http://www.sankyo-unyu.co.jp/Pool/postgresql-7.2b2.newencoding.diff.tar.gz
> > > > (608K)
> > >
> > > Looks good. I need some people to review this for me.
> >
> > For me they look good too. The only missing part is a
> > documentation. I will ask him to write it up. If he couldn't, I will
> > do it for him.
> > > The diff is 3mb
> > > but appears to address only additions to multibyte. I have attached a
> > > list of files it modifies. Also, look at the sizes of the mb/
> > > directory. It is getting large:
> > >
> > > 4 ./CVS
> > > 6 ./Unicode/CVS
> > > 3433 ./Unicode
> > > 6197 .
> >
> > Yes. We definitely need the on-the-fly encoding addition capability:
> > i.e. CREATE CHRACTER SET in the future...
> > --
> > Tatsuo Ishii
> >
> >
Address chainge.
http://www.sankyo-unyu.co.jp/Pool/postgresql-7.2.newencoding.diff.gz
Add PsqlODBC and document ...etc patch.
Eiji Tokuya
(current as of a few hours ago.)
This patch:
1. Adds PG_GETARG_xxx_P_SLICE() macros and associated support routines.
2. Adds routines in src/backend/access/tuptoaster.c for fetching only
necessary chunks of a toasted value. (Modelled on latest changes to
assume chunks are returned in order).
3. Amends text_substr and bytea_substr to use new methods. It now
handles multibyte cases -and should still lead to a performance
improvement in the multibyte case where the substring is near the
beginning of the string.
4. Added new command: ALTER TABLE tabname ALTER COLUMN colname SET
STORAGE {PLAIN | EXTERNAL | EXTENDED | MAIN} to parser and documented in
alter-table.sgml. (NB I used ColId as the item type for the storage
mode string, rather than a new production - I hope this makes sense!).
All this does is sets attstorage for the specified column.
4. AlterTableAlterColumnStatistics is now AlterTableAlterColumnFlags and
handles both statistics and storage (it uses the subtype code to
distinguish). The previous version of my patch also re-arranged other
code in backend/commands/command.c but I have dropped that from this
patch.(I plan to return to it separately).
5. Documented new macros (and also the PG_GETARG_xxx_P_COPY macros) in
xfunc.sgml. ref/alter_table.sgml also contains documentation for ALTER
COLUMN SET STORAGE.
John Gray
now just below FATAL in server_min_messages. Added more text to
highlight ordering difference between it and client_min_messages.
---------------------------------------------------------------------------
REALLYFATAL => PANIC
STOP => PANIC
New INFO level the prints to client by default
New LOG level the prints to server log by default
Cause VACUUM information to print only to the client
NOTICE => INFO where purely information messages are sent
DEBUG => LOG for purely server status messages
DEBUG removed, kept as backward compatible
DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1 added
DebugLvl removed in favor of new DEBUG[1-5] symbols
New server_min_messages GUC parameter with values:
DEBUG[5-1], INFO, NOTICE, ERROR, LOG, FATAL, PANIC
New client_min_messages GUC parameter with values:
DEBUG[5-1], LOG, INFO, NOTICE, ERROR, FATAL, PANIC
Server startup now logged with LOG instead of DEBUG
Remove debug_level GUC parameter
elog() numbers now start at 10
Add test to print error message if older elog() values are passed to elog()
Bootstrap mode now has a -d that requires an argument, like postmaster
> o Add LISTEN/NOTIFY support to the JDBC driver (Barry)
479a481
> * Barry is Barry Lind <barry@xythos.com>
482a485
> * Dave is Dave Cramer <dave@fastcrypt.com>
> * -Prevent SIGHUP and 'pg_ctl reload' from changing command line
> * -Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
> * -Prevent create/drop scripts from allowing extra args (Bruce)
> * -Have pg_dump -C dump database location and encoding information
primary keys after the fact!
Also, we need to add regression tests for alter table / add primary key
and alter table / drop constraint. These shouldn't be added until 7.3
tho
methinks...
Chris
(backslash-r, backslash-n) for protection against newline-conversion
munging. In future we will also tweak COPY FROM, but this part of the
change should be backwards-compatible. Per pghackers discussion.
Also, update COPY reference page to describe the backslash conversions
more completely and accurately.
> * Increase identifier length (NAMEDATALEN) if small performance hit,
> perhaps to standard length of 128; change struct pgNotify to use pid
> first, breaks notify API;
> * Reorder postgresql.conf WAL items in order of importance
> * Remove wal_files postgresql.conf option because WAL files are now recycled
> * Find proper defaults for postgresql.conf WAL entries
> * Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
> that are too frequent
> Looking at this I also found an ecpg TODO list in the docs:
>
>
http://candle.pha.pa.us/main/writings/pgsql/sgml/ecpg-develop.html
>
> Seems that TODO section should be removed. Some items are done,
others
> are on the main TODO list.
That's correct. I did not fix the docs for quite some time.
Michael
--
Michael Meskes
> * Consider use of open/fctl(O_DIRECT) to minimize OS caching
> * Make blind writes go through the file descriptor cache
391d392
< * Make blind writes go through the file descriptor cache
409d409
< * Consider use of open/fctl(O_DIRECT) to minimize OS caching
---------------------------------------------------------------------------
When you run 'ecpg --help' you get the following:
-t turn on autocommit of transactions
amongst the other options... Shouldn't this be OFF as per the
documentation?
Best regards, Lee.
--
Lee Kindness, Senior Software Engineer, lkindness@csl.co.uk
Update the list of recognized time zones.
Document the range of arguments allowed for SET TIME ZONE.
Still need to add info on other date/time symbols (e.g. "AM", "T")
and to freshen the docs on the date/time parsing rules.
> * Change DEBUG startup tag to NOTICE; change NOTICE to output to client
> only if client exists (Bruce)
This item is not done:
< * -Make elog(LOG) in WAL its own output type, distinct from DEBUG (Peter E)
---
> * Make elog(LOG) in WAL its own output type, distinct from DEBUG
< o Allow SELECT of array of strings into a auto-sized variable
---
> o -Allow SELECT of array of strings into a auto-sized variable
> o auto allocation for indicator variable arrays (int *ind_p=NULL)
> o auto allocation for string arrays (char **foo_pp=NULL)
> o ECPGfree_auto_mem fixed
> o all function names with external linkage are now prefixed by ECPG
> * -Allow secure single-user access without passwords using Unix socket permissions
> * Make single-user local socket access permissions the default (Peter E)
Mention SQL9x precision syntax for date/time types.
Use PostgreSQL consistantly throughout docs. Before, usage was split evenly
between Postgres and PostgreSQL.
remove brain-dead rule that double quotes are needed if and only if the
datatype is pass-by-reference; neither direction of the implication holds
water. Instead, examine the actual data string to see if it contains
any characters that force us to quote it.
Add some documentation about quoting of array values, which was previously
explained nowhere AFAICT.
Editing pass over entire chapter
Rewrote section dealing with Large Objects to also talk about bytea support
Removed secion on Serialize functionality a we intend to remove it in the
next release
> So I would base this discussion on the premise "bytea stores binary data"
> (insert examples).
>
> Some stylistic issues:
>
> bytea => <type>bytea</type>
>
> NULLs => zero bytes/bytes of value zero ("NULL" is too overloaded)
>
> 'non-printable' => <quote>nonprintable</quote>
>
> MUST => <emphasis>must</emphasis>
>
Here's a patch against *CVS tip* to address Peter's comments. Please let
me know what you think!
Joe Conway
libpq.sgml
I was trying (but gave up) to cross-reference back to the input escape
table in the User's Guide, but could not get the documentation to
compile with a cross-book xref (missing IDREF error). Can a cross-book
xref be done?
Joe Conway
Operators", plagiarized shamelessly from the "String Functions and
Operators" section. There were enough differences that it made sense (at
least to me) to give this its own section instead of cramming it in with
normal string functions. This way I could also make the examples
relevant, which is particularly important for bytea.
One thing I think worth mentioning: while documenting the trim()
function I realized that I never implemented the bytea equivalent of
rtrim and ltrim. Therefore, the 'leading' and 'trailing' forms of trim,
available with text, are not available with bytea (I'd be happy to
correct this, but since it would require an initdb, I guess not until
7.3) -- the submitted doc accurately reflects this.
I will look for other areas of the docs that need mention of bytea, but
any guidance would be much appreciated.
--
Here's a second bytea documentation patch. This one significantly
expands the "Binary Data" section added by Bruce recently.
Joe Conway
Admin Guide. Move discussion of template databases out of footnotes
in CREATE DATABASE ref page and into a section of the Admin Guide.
Clean up various obsolete claims, do some copy-editing.
bpchar, bit, numeric with typmod -1. Alter format_type so that this
representation is printed when the typmod is -1. This ensures that
tables having such columns can be pg_dump'd and reloaded correctly.
Also, remove the rather useless and non-SQL-compliant default
precision and scale for type NUMERIC. A numeric column declared as
such (with no precision/scale) will now have typmod -1 which means
that numeric values of any precision/scale can be stored in it,
without conversion to a uniform scale. This seems significantly
more useful than the former behavior. Part of response to bug #513.
postmaster children before client auth step. Postmaster now rereads
pg_pwd on receipt of SIGHUP, the same way that pg_hba.conf is handled.
No cycles need be expended to validate password cache validity during
connection startup.
information about nulls and sort order.
This is based on information obtained from Peter Eisentraut and
Tom Lane on pgsql-hackers.
Please check my English and Docbook markup, as both are a second
language to me.
Rene Pijlman
Enabling this feature adds very light overhead of 1 select from pg_class on
first using of pl/tcl in backend if unknown suppport is really unused.
But pl/tcl with this support has very improved functionality.
Patch includes changes to documentation.
side encoding name. This is necessary for client API's such as JDBC
to perform correct encoding conversions. See my email "[HACKERS]
pg_client_encoding" 10 Sep 2001.
transformAlterStmt() use these routines, instead of having lots of
duplicate (not to mention should-have-been-duplicate) code.
Adding a column with a CHECK constraint actually works now,
and the tests to reject unsupported DEFAULT and NOT NULL clauses
actually fire now. ALTER TABLE ADD PRIMARY KEY works, modulo
having to have created the column(s) NOT NULL already.
current_timestamp, current_date for ODBC compatibility.
Add more functions to odbc.sql catalog extension, use new CREATE OR
REPLACE FUNCTION.
Document iODBC/unixODBC build options.
rather than having its own somewhat half-baked notion of what a type
declaration looks like. This is necessary now to ensure that plpgsql
will think a 'timestamp' variable has the same semantics as 'timestamp'
does in the main SQL grammar; and it should avoid divergences in future.
type coercion after failing to find an exact match in pg_proc, but before
considering interpretations that involve a function call with one or
more argument type coercions. This avoids surprises wherein what looks
like a type coercion is interpreted as coercing to some third type and
then to the destination type, as in Dave Blasby's bug report of 3-Oct-01.
See subsequent discussion in pghackers.
'aggname (aggtype)'. The old syntax 'aggname aggtype' is still accepted
for backwards compatibility. Fix pg_dump, which was actually broken for
most cases of user-defined aggregates. Clean up error messages associated
with these commands.
> > > > > and --enable-unicode-convertion if it ought to work correctly
> > > > > with Tcl/Tk >= 8.1 (client or server side).
> > > > >
> > > > > - PL/Tcl needs to be changed to use pg_do_encoding_conversion
> > > > > if it runs on a Tcl version >= 8.1 .
> > >
> > > > I'll do pl/tcl part in the next version of patch. Using this approach we
> > > > can eliminate overhead for databases in UNICODE.
> > >
> > > Any progress on this? I'd prefer to get rid of this --enable-pltcl-utf
> > > option before release.
> >
> > Done
> >
> > Next version removes --enable-pltcl-utf switch and enables embedded
> > utf conversion of pgsql if tcl version >=8.1 and --enable-unicode-conversion
from the config file, so that these changes will propagate to backends
started later. Already-started backends continue to ignore changes
in these variables.
upper limit on what we will believe from sysconf(_SC_OPEN_MAX). The
default value is 1000, so that under ordinary conditions it won't
affect the behavior. But on platforms where the kernel promises far
more than it can deliver, this can be used to prevent running out of
file descriptors. See numerous past discussions, eg, pgsql-hackers
around 23-Dec-2000.
existing lock manager and spinlocks: it understands exclusive vs shared
lock but has few other fancy features. Replace most uses of spinlocks
with lightweight locks. All remaining uses of spinlocks have very short
lock hold times (a few dozen instructions), so tweak spinlock backoff
code to work efficiently given this assumption. All per my proposal on
pghackers 26-Sep-01.
a hung client or lost connection can't indefinitely block a postmaster
child (not to mention the possibility of deliberate DoS attacks).
Timeout is controlled by new authentication_timeout GUC variable,
which I set to 60 seconds by default ... does that seem reasonable?
rather than making index.html a symlink to the autogenerated name.
Fixes fatal problems with tar programs that don't handle symlinks
very well (MacOS X).
(The names user.html, admin.html, etc. are still available as make
targets, but they aren't packaged anymore.)
Use the manifest file that the stylesheets generate as the file list
for packaging. Put graphics in the right place while building, not
while packaging, so you can actually look at them after building.
under libdir, for a cleaner separation in the installation layout
and compatibility with binary packaging standards. Point backend's
default search location there. The contrib modules are also
installed in the said location, giving them the benefit of the
default search path as well. No changes in user interface
nevertheless.
CREATE RULE bad_rule_combination_1 AS
ON SELECT TO emp
DO INSTEAD
SELECT * FROM toyemp;
CREATE RULE bad_rule_combination_2 AS
ON SELECT TO toyemp
DO INSTEAD
SELECT * FROM emp;
Tatsuo Ishii
undocumented items in TD.
Should doc patches alse be sent to pgsql-patches, or do I
have to subscribe to pgsql-docs?
The archive link for pgsql-patches is broken, and I don't
see any patches in spot checking the archive for pgsql-docs.
-Brad McLean.
Assign the fixed user id 1 to the user created by initdb.
A stand-alone backend will always set the user id to 1.
(Consequently, the name of that user is no longer important.)
In stand-alone mode, the user id 1 will have implicit superuser
status, to allow repairs even if there are no users defined.
Print a warning message when starting in stand-alone mode when no
users are defined.
Disallow dropping the current user and session user.
Granting/revoking superuser status also grants/revokes usecatupd.
(Previously, it would never grant it back. This could lead to "deadlocks".)
CREATE USER and CREATE GROUP will start allocating user ids at 100
(unless explicitly specified), to prevent accidental creation of a
superuser (plus some room for future extensions).
discussion on pgsql-hackers (especially the frightening memory dump in
<12273.999562219@sss.pgh.pa.us>), we decided that it is best not to
use identifiers from an untrusted source at all. Therefore, all
claims of the suitability of PQescapeString() for identifiers have
been removed.
Florian Weimer
table creation time. Big deal you say - but this patch is the basis of the
next thing which is adding PRIMARY KEYs after table creation time. (Which
is currently impossible without twiddling catalogs)
Rundown
-------
* I have made the makeObjectName function of analyze.c non-static, and
exported it in analyze.h
* I have included analyze.h and defrem.h into command.c, to support
makingObjectNames and creating indices
* I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
says you can't add primary keys, rather than just doing nothing and
reporting nothing!!!
* I have modified the docs.
Algorithm
---------
* If name specified is null, search for a new valid constraint name. I'm
not sure if I should "lock" my generated name somehow tho - should I open
the relation before doing this step?
* Open relation in access exclusive mode
* Check that the constraint does not already exist
* Define the new index
* Warn if they're doubling up on an existing index
Christopher Kings-Lynne
occur unconditionally, even if the rule should otherwise execute
conditionally. This is more useful than giving an error, even though it's
not truly the correct behavior. Per today's pghackers discussion.
> pam_strerror() should be used a few more times, rather than just saying
> "Error!". Also, the configure.in snippet seems wrong. You add
> -I$pam_prefix/include/security to $INCLUDES and then you #include
> <security/pam_appl.h>. This whole thing is probably unnecessary, since
> PAM is a system library on the systems where it exists, so the headers
> and libraries are found automatically, unlike OpenSSL and
> Kerberos.
See attached revised patch. (I'm sure the configure.in stuff can be done
right/better, I'm just not enough of a autoconf guru to know what to
change it to.)
Dominic J. Eidson
- new millisecond (ms) and microsecond (us) support
- more robus parsing from string - used is separator checking for
non-exact formats like to_date('2001-9-1', 'YYYY-MM-DD')
- SGML docs are included
Karel Zak
Now with documentation update and disabling of UTF conversion for Tcl <=8.0
On Fri, 24 Aug 2001, Vsevolod Lobko wrote:
> On Thu, 23 Aug 2001, Tom Lane wrote:
>
> > > Is this looks better?
> >
> > It does, but one small gripe: the lack of semicolons will probably cause
> > pg_indent to mess up the indentation. (I know emacs' autoindent mode
> > will not work nicely with it, either.) Please set up the macros so that
> > you write
> >
> > UTF_BEGIN;
> > Tcl_DStringAppend(&unknown_src, UTF_E2U(part), -1);
> > UTF_END;
> >
> > and then I'll be happy.
>
> Attached revised patch
>
> > Your point about overhead is a good one, so I retract the gripe about
> > using a configure switch. But please include documentation patches to
> > describe the configure option in the administrator's guide (installation
> > section).
>
> This patch still uses configure switch for enabling feature.
>
> For enabling based on tcl version we have 2 posibilites:
> 1) having feature enabled by default, but in pltcl.c check for tcl
> version and disable it for old versions
> 2) enable or disable at configure time based on tcl version, but there
> are problem - current configure don't checks for tcl version at all
> and my configure skills not enought for adding this
>
Vsevolod Lobko
If there's anyone out there who's actually using datatype-defined
default values, this will be an incompatible change in behavior ...
but the old behavior was so broken that I doubt anyone was using it.
system. Some systems did not understand the 'l' section, and in general
it wasn't entirely appropriate.
On SCO OpenServer, the man pages won't be installed at all until someone
figures out their man system.
Client headers are no longer in a subdirectory, since they have been made
namespace-clean.
Internal libpq headers are in a private subdirectory.
Server headers are in a private subdirectory. pg_config has a new option
to point there.
the Admin Guide about routine maintenance tasks. Currently this only
discusses the various reasons for doing VACUUM, but perhaps it could be
fleshed out with topics like log rotation.
buffer manager with 'pg_clog', a specialized access method modeled
on pg_xlog. This simplifies startup (don't need to play games to
open pg_log; among other things, OverrideTransactionSystem goes away),
should improve performance a little, and opens the door to recycling
commit log space by removing no-longer-needed segments of the commit
log. Actual recycling is not there yet, but I felt I should commit
this part separately since it'd still be useful if we chose not to
do transaction ID wraparound.
pgsql-hackers. pg_opclass now has a row for each opclass supported by each
index AM, not a row for each opclass name. This allows pg_opclass to show
directly whether an AM supports an opclass, and furthermore makes it possible
to store additional information about an opclass that might be AM-dependent.
pg_opclass and pg_amop now store "lossy" and "haskeytype" information that we
previously expected the user to remember to provide in CREATE INDEX commands.
Lossiness is no longer an index-level property, but is associated with the
use of a particular operator in a particular index opclass.
Along the way, IndexSupportInitialize now uses the syscaches to retrieve
pg_amop and pg_amproc entries. I find this reduces backend launch time by
about ten percent, at the cost of a couple more special cases in catcache.c's
IndexScanOK.
Initial work by Oleg Bartunov and Teodor Sigaev, further hacking by Tom Lane.
initdb forced.
has an alias SERIAL4 and a sister SERIAL8. SERIAL8 is just the same
except the created column is type int8 not int4.
initdb forced. Note this also breaks any chance of pg_upgrade from 7.1,
unless we hack up pg_upgrade to drop and recreate sequences. (Which is
not out of the question, but I don't wanna do it.)
Allow pg_shadow to be MD5 encrypted.
Add ENCRYPTED/UNENCRYPTED option to CREATE/ALTER user.
Add password_encryption postgresql.conf option.
Update wire protocol version to 2.1.
for speed reasons; its result type also changes to int8. avg() on these
datatypes now accumulates the running sum in int8 for speed; but we still
deliver the final result as numeric, so that fractional accuracy is
preserved.
count() now counts and returns in int8, not int4. I am a little nervous
about this possibly breaking users' code, but there didn't seem to be
a strong sentiment for avoiding the problem. If we get complaints during
beta, we can change count back to int4 and add a "count8" aggregate.
For that matter, users can do it for themselves with a simple CREATE
AGGREGATE command; the int4inc function is still present, so no C hacking
is needed.
Also added max() and min() aggregates for OID that do proper unsigned
comparison, instead of piggybacking on int4 aggregates.
initdb forced.
syntax for language names (instead of 'string').
createlang now handles the case where a second language uses the same call
handler as an already installed language (e.g., plperl/plperlu).
droplang now handles the reverse case, i.e., dropping a language where
the call handler is still used by another language. Moreover, droplang
can now be used to drop any user-defined language, not just the supplied
ones.
Don't hardcode the maximum accepted server version, use PG_VERSION instead.
Install a notice processor so notices are handled like error messages.
Word smithing.
default, but OIDS are removed from many system catalogs that don't need them.
Some interesting side effects: TOAST pointers are 20 bytes not 32 now;
pg_description has a three-column key instead of one.
Bugs fixed in passing: BINARY cursors work again; pg_class.relhaspkey
has some usefulness; pg_dump dumps comments on indexes, rules, and
triggers in a valid order.
initdb forced.
clauses are equal(), before trying to match them up using btree opclass
inference rules. This allows it to recognize many simple cases involving
non-btree operations, for example 'x IS NULL'. Clean up code a little.
Sorry I don't have the original around to make a quick diff, but its a very small change... I think this should be in the next release, there's no reason not to have it.
its a function with no expected arguments, so you can use it like:
spi_exec "INSERT INTO mytable(columns...) VALUES(values..)"
set oid [spi_lastoid]
spi_exec "SELECT mytable_id from mytable WHERE oid=$oid"
It just didn't make sense for me to use plpgsql and pltcl, or just screw
them both and use SPI from C.
bob@redivi.com
system supports SO_PEERCRED requests for Unix sockets. This is an
amalgamation of patches submitted by Helge Bahmann and Oliver Elphick,
with some editorializing by yours truly.
Note: I didn't force an initdb, figuring that one today was enough.
However, there is a new function in pg_proc.h, and pg_dump won't be
able to dump partial indexes until you add that function.
per previous discussion on pghackers. Most of the duplicate code in
different AMs' ambuild routines has been moved out to a common routine
in index.c; this means that all index types now do the right things about
inserting recently-dead tuples, etc. (I also removed support for EXTEND
INDEX in the ambuild routines, since that's about to go away anyway, and
it cluttered the code a lot.) The retail indextuple deletion routines have
been replaced by a "bulk delete" routine in which the indexscan is inside
the access method. I haven't pushed this change as far as it should go yet,
but it should allow considerable simplification of the internal bookkeeping
for deletions. Also, add flag columns to pg_am to eliminate various
hardcoded tests on AM OIDs, and remove unused pg_am columns.
Fix rtree and gist index types to not attempt to store NULLs; before this,
gist usually crashed, while rtree managed not to crash but computed wacko
bounding boxes for NULL entries (which might have had something to do with
the performance problems we've heard about occasionally).
Add AtEOXact routines to hash, rtree, and gist, all of which have static
state that needs to be reset after an error. We discovered this need long
ago for btree, but missed the other guys.
Oh, one more thing: concurrent VACUUM is now the default.
USER and ALTER USER to appear in any order, not only the fixed order
they used to be required to appear in.
Also, some changes from Tom Lane to create a FULL option for VACUUM;
it doesn't do anything yet, but I needed to change many of the same
files to make that happen, so now seemed like a good time.
in cases of qualified rules as well as unqualified ones. Tweak rules
test to avoid cluttering output with dummy SELECT results. Update
documentation to match code.
do anything yet, but it has the necessary connections to initialization
and so forth. Make some gestures towards allowing number of blocks in
a relation to be BlockNumber, ie, unsigned int, rather than signed int.
(I doubt I got all the places that are sloppy about it, yet.) On the
way, replace the hardwired NLOCKS_PER_XACT fudge factor with a GUC
variable.
tests to return the correct results per SQL9x when given NULL inputs.
Reimplement these tests as well as IS [NOT] NULL to have their own
expression node types, instead of depending on special functions.
From Joe Conway, with a little help from Tom Lane.
pg_database now has unique indexes on oid and on datname.
pg_shadow now has unique indexes on usename and on usesysid.
pg_am now has unique index on oid.
pg_opclass now has unique index on oid.
pg_amproc now has unique index on amid+amopclaid+amprocnum.
Remove pg_rewrite's unnecessary index on oid, delete unused RULEOID syscache.
Remove index on pg_listener and associated syscache for performance reasons
(caching rows that are certain to change before you need 'em again is
rather pointless).
Change pg_attrdef's nonunique index on adrelid into a unique index on
adrelid+adnum.
Fix various incorrect settings of pg_class.relisshared, make that the
primary reference point for whether a relation is shared or not.
IsSharedSystemRelationName() is now only consulted to initialize relisshared
during initial creation of tables and indexes. In theory we might now
support shared user relations, though it's not clear how one would get
entries for them into pg_class &etc of multiple databases.
Fix recently reported bug that pg_attribute rows created for an index all have
the same OID. (Proof that non-unique OID doesn't matter unless it's
actually used to do lookups ;-))
There's no need to treat pg_trigger, pg_attrdef, pg_relcheck as bootstrap
relations. Convert them into plain system catalogs without hardwired
entries in pg_class and friends.
Unify global.bki and template1.bki into a single init script postgres.bki,
since the alleged distinction between them was misleading and pointless.
Not to mention that it didn't work for setting up indexes on shared
system relations.
Rationalize locking of pg_shadow, pg_group, pg_attrdef (no need to use
AccessExclusiveLock where ExclusiveLock or even RowExclusiveLock will do).
Also, hold locks until transaction commit where necessary.
for GRANT/REVOKE is now just that, not "CHANGE".
On the way, migrate some of the aclitem internal representation away from
the parser and build a real parse tree instead. Also add some 'const'
qualifiers.
Use --enable-nls to turn it on; see installation instructions for details.
See developer's guide how to make use of it in programs and how to add
translations.
psql sources have been almost fully prepared and an incomplete German
translation has been provided. In the backend, only elog() calls are
currently translatable, and the provided German translation file is more
of a placeholder.
report on old-style functions invoked by RI triggers. We had a number of
other places that were being sloppy about which memory context FmgrInfo
subsidiary data will be allocated in. Turns out none of them actually
cause a problem in 7.1, but this is for arcane reasons such as the fact
that old-style triggers aren't supported anyway. To avoid getting burnt
later, I've restructured the trigger support so that we don't keep trigger
FmgrInfo structs in relcache memory. Some other related cleanups too:
it's not really necessary to call fmgr_info at all while setting up
the index support info in relcache entries, because those ScanKeyEntry
structs are never used to invoke the functions. This should speed up
relcache initialization a tiny bit.
7.7. Keys
you have
However, my application requires that each collection will also have a
unique name. Why? So that a human being who wants to modify a collection
will be able to identify it. It's much harder to know, if you have two
collections named "Life Science", the the one tagged 24433 is the one
you
need, and the one tagged 29882 is not
I think 'the the' shouldn't be repeated twice. Although taken from an
email it would be cool to fix.
Cheers,
Maxim Maletsky
which says that PERFORM will execute any SELECT query and discard the
result. The former implementation would in fact raise an error if the
result contained more than one row or more than one column.
Also, change plpgsql's error-logging mechanism to emit the additional
messages about error location at NOTICE rather than DEBUG level. This
allows them to be seen by the client without having to dig into the
postmaster log file (which may be nonexistent or inaccessible by the
client).
Indicies: palm_buy_date_idx
palm_user_date_idx
Primary Key: palm_buyers_pkey
Unique Key: palm_buyers_username
Constraint: "$1" ((sex = 'M'::bpchar) OR (sex = 'F'::bpchar))
Note that check constraint name now shown as well. (Makes it a lot easier
to test inheritance support in ADD/DROP constraint :) )
Attached is a docs change for psql.
Christopher Kings
Python) to support shared extension modules, I have learned that Guido
prefers the style of the attached patch to solve the above problem.
I feel that this solution is particularly appropriate in this case
because the following:
PglargeType
PgType
PgQueryType
are already being handled in the way that I am proposing for PgSourceType.
Jason Tishler
it does not support 64bit integers. AFAIK that's the default data type for
OIDs, so I am not surprised that this does not work. Use gcc instead.
BTW., 7.1 does not compile as is with gcc either, I believed the
required patches made it into the 7.1.1 release but obviously I missed
the deadline.
Since the ports mailing list does not seem to be archived I have attached
a copy of the patch (for 7.1 and 7.1.1).
I've just performed a build of a Watcom compiled version and found a couple
of bugs in the watcom specific part of that patch. Please use the attached
version instead.
Tegge, Bernd
to do that, but inconsistently.) Make bit type reject too short input,
too, per SQL. Since it no longer zero pads, 'zpbit*' has been renamed to
'bit*' in the source, hence initdb.
enables pltcl unknown support.
Also it adds substituting of tclsh with tclsh that was by configure in
pltcl_*mod scripts. For example, On freebsd, tclsh can be called
tclsh8.2 or
tclsh8.3 depending on installed version of Tcl.
After patching files
src/pl/tcl/modules/pltcl_listmod
src/pl/tcl/modules/pltcl_loadmod
src/pl/tcl/modules/pltcl_delmod
must be renamed(copied,repocopied) to
src/pl/tcl/modules/pltcl_listmod.in
src/pl/tcl/modules/pltcl_loadmod.in
src/pl/tcl/modules/pltcl_delmod.in
seva@sevasoft.kiev.ua
still looking at the best way to integrate Tom Vijlbrief's fixes
(insofar as they're still needed); would 7.2 be a suitable time for
incompatible API changes?
Jeroen
Changes:
(*) Introduced bool, true, false (replacing some int, 1, 0)
(*) Made some member functions const
(*) Documented GetIsNull()
(*) Marked DisplayTuples() and PrintTuples() as obsolescent; fixed possible
portability problem (assumed that NULL pointer equals all-zero bit pattern)
(*) PrintTuples(): renamed width parameter to fillAlign to conform with other
usage; fixed memory leak and compile issue w.r.t. field separator (should
also slightly improve performance)
(*) Fixed some minor compilation issues
(*) Moved "using namespace std;" out of headers, where they didn't belong; used
new (temporary) preprocessor macro PGSTD to do this
(*) Made ToString() static, removed unneeded memset(), made buffer size adapt
to sizeof(int)
(*) Made some constructors explicit
(*) Changed some const std::string & parameters to plain std::string
(*) Marked PgCursor::Cursor(std::string) as obsolescent (setter with same name
as getter--bad style)
(*) Renamed some paramaters previously named "string"
(*) Introduced size_type typedef for number of tuples in result set
(*) PgTransaction now supports re-opening after closing, and aborts if not
explicitly committed prior to destruction
J. T. Vermeulen
collected by ANALYZE. Also, add some modest amount of intelligence to
guesses that are used for varlena columns in the absence of any ANALYZE
statistics. The 'width' reported by EXPLAIN is finally something less
than totally bogus for varlena columns ... and, in consequence, hashjoin
estimating should be a little better ...
===================
In Notes:
Refer to CREATE FUNCTION for information on creating aggregate functions.
^^^^^^^^^^^^^^^^^^^
I assume it must read C function instead.
In Compatibility SQL/PSM:
SQL/PSM is a proposed standard.
We had that before: remove proposed.
drop_index.sgml:
================
<REFNAME>: Removes existing indexes from a database
as far as I can see index should be singular. The command description is
written as if only one index can be removed at a time. Interestingly
enough, in v7.0.2 it was in fact singular. Am I mistaken here?
drop_operator.sgml:
===================
In Outputs the arguments are referred to as type and type2, but the synopsis
and Inputs section these are left_type and right_type, respectively. Also,
oper is used in Outputs versus id in Inputs/Synopsis. In the translation I
follow the replaceables used in the Inputs/Synopsis part.
Frank Wegmann
===================
In Notes:
Refer to CREATE FUNCTION for information on creating aggregate functions.
^^^^^^^^^^^^^^^^^^^
I assume it must read C function instead.
Frank Wegmann
a separate statement (though it can still be invoked as part of VACUUM, too).
pg_statistic redesigned to be more flexible about what statistics are
stored. ANALYZE now collects a list of several of the most common values,
not just one, plus a histogram (not just the min and max values). Random
sampling is used to make the process reasonably fast even on very large
tables. The number of values and histogram bins collected is now
user-settable via an ALTER TABLE command.
There is more still to do; the new stats are not being used everywhere
they could be in the planner. But the remaining changes for this project
should be localized, and the behavior is already better than before.
A not-very-related change is that sorting now makes use of btree comparison
routines if it can find one, rather than invoking '<' twice.
being ratified as yet. This is certainly no longer true, it wasn't
even true in Q2/1998 when I did a little research for Date's book.
SQL/PSM had been published on 1996-12-15 as ISO/IEC 9075:4. So you
might want to update that section.
Frank Wegmann
adjustments. Note that many tables are being abused with *really* long
description columns. Should probably shrink those columns to be more
concise, and move some of the info to follow-on reference notes.
\keep (keep current paragraph together). This fixes most troubles with
reference pages marked up with <refentry> tags.
Use on reference.rtf, generated by "make reference.rtf".
more recent versions of the IBM C++ compiler (now called VisualAge C++).
The C++ part was previously broken (g++ and xlC), thus this is zero risk.
Only AIX specific parts are touched (1 Makefile.shlib line (link with $(COMPILER
) instead
of $(CC) and one shell script line (parameter -C to nm to not demangle C++ symbo
ls for
.exp file)).
I thus ask you to please apply this patch before release.
With or without this patch RC1 on AIX 4.3.2 RS6000 passes "gmake check" for both
the native
compiler vac.C 5.0.1 and gcc 2.95.2 :-)
Andreas
at the beginning and end of the input string, not the beginning and end
of "a line", since Postgres does not allow them to match at newline
characters in the data.
O_SYNC, or O_DSYNC (as available on a given platform). Add GUC parameter
to control sync method.
Also, add defense to XLogWrite to prevent it from going nuts if passed
a target write position that's past the end of the buffers so far filled
by XLogInsert.
* Store two past checkpoint locations, not just one, in pg_control.
On startup, we fall back to the older checkpoint if the newer one
is unreadable. Also, a physical copy of the newest checkpoint record
is kept in pg_control for possible use in disaster recovery (ie,
complete loss of pg_xlog). Also add a version number for pg_control
itself. Remove archdir from pg_control; it ought to be a GUC
parameter, not a special case (not that it's implemented yet anyway).
* Suppress successive checkpoint records when nothing has been entered
in the WAL log since the last one. This is not so much to avoid I/O
as to make it actually useful to keep track of the last two
checkpoints. If the things are right next to each other then there's
not a lot of redundancy gained...
* Change CRC scheme to a true 64-bit CRC, not a pair of 32-bit CRCs
on alternate bytes. Polynomial borrowed from ECMA DLT1 standard.
* Fix XLOG record length handling so that it will work at BLCKSZ = 32k.
* Change XID allocation to work more like OID allocation. (This is of
dubious necessity, but I think it's a good idea anyway.)
* Fix a number of minor bugs, such as off-by-one logic for XLOG file
wraparound at the 4 gig mark.
* Add documentation and clean up some coding infelicities; move file
format declarations out to include files where planned contrib
utilities can get at them.
* Checkpoint will now occur every CHECKPOINT_SEGMENTS log segments or
every CHECKPOINT_TIMEOUT seconds, whichever comes first. It is also
possible to force a checkpoint by sending SIGUSR1 to the postmaster
(undocumented feature...)
* Defend against kill -9 postmaster by storing shmem block's key and ID
in postmaster.pid lockfile, and checking at startup to ensure that no
processes are still connected to old shmem block (if it still exists).
* Switch backends to accept SIGQUIT rather than SIGUSR1 for emergency
stop, for symmetry with postmaster and xlog utilities. Clean up signal
handling in bootstrap.c so that xlog utilities launched by postmaster
will react to signals better.
* Standalone bootstrap now grabs lockfile in target directory, as added
insurance against running it in parallel with live postmaster.
not all of them attached properly in the post I made a few minutes
ago. Please disregard those earlier files. The diffs in the tar file
replace them.
Pierce Tyler
only if at least N other backends currently have open transactions. This
is not a great deal of intelligence about whether a delay might be
profitable ... but it beats no intelligence at all. Note that the default
COMMIT_DELAY is still zero --- this new code does nothing unless that
setting is changed.
Also, mark ENABLEFSYNC as a system-wide setting. It's no longer safe to
allow that to be set per-backend, since we may be relying on some other
backend's fsync to have synced the WAL log.
option of CREATE DATABASE. In pg_regress, create regression database
from template0 to ensure that any installation-local cruft in template1
will not mess up the tests.
HTML:
* make .html the default extension
* allow use of CSS stylesheet ("stylesheet.css", not included)
* make <set> TOC two levels deep
* put time of creation into meta header
Print:
* make print output justified by default
* footnotes at bottom of each page
* allow TeX to hyphenate
Chapter 4
String Operators
Table 4.7: Other String Functions
strpos is missing the result in the result column, it should be 2
Also to_ascii might need a result but maybe not.
Appendix A
In the Time Zone Table
Greenwich is spelled Greenwish
David Aldrich
are now separate files "postgres.h" and "postgres_fe.h", which are meant
to be the primary include files for backend .c files and frontend .c files
respectively. By default, only include files meant for frontend use are
installed into the installation include directory. There is a new make
target 'make install-all-headers' that adds the whole content of the
src/include tree to the installed fileset, for use by people who want to
develop server-side code without keeping the complete source tree on hand.
Cleaned up a whole lot of crufty and inconsistent header inclusions.
Add -l option to name log file. Set umask to 077.
Proper file descriptor redirection to allow postmaster to detach from
shell's process group.
Add -s option to turn off informational messages.
(sql490.htm), there is
"set of all k-tuples v1, v2, ... vk, such that v1 [isin] D1, v1 [isin] D1"
i assume it should be
"set of all k-tuples v1, v2, ... vk, such that v1 [isin] D1, v2 [isin] D2"
Divide by Zero
privkey.pem cert.pem.pw" if you just use "privkey.pem" in the following
openssl command (e.g. openssl rsa -in privkey.pem -out cert.pem".
But there is nothing wrong with it as it is now, as far as I can see.
//Magnus
* doc/FAQ_MSWIN: Update to be consistent with software -- mainly change
comment from lack of Cygwin UNIX domain socket support and to list of
current Cygwin UNIX domain socket issues.
* src/include/config.h.in: Enable UNIX domain sockets for Cygwin.
* src/include/port/win.h: Disable UNIX domain sockets for Cygwin b20.1.
* src/test/regress/pg_regress.sh: Use UNIX domain sockets for Cygwin
instead of TCP/IP.
Chapter 10. PL/pgSQL - SQL Procedural Language (c40914117.htm)
Statements
...
(resulting in a PL/pgSQL internal SELECT).
But there are cases where someone isn't interested int
-----------------------------------------(have to be)-->
But there are cases where someone isn't interested in
the functions result.
RAISE level format''
--(have to be)-->
RAISE level 'format'
find it ambiguous. I propose something along the lines of the
following patch to clarify it. Thanks.
(Alternatively, perhaps the code could maintain a count of nested
calls to SPI_connect/SPI_finish. But I didn't try to write that
patch.)
Ian Lance Taylor
and revert documentation to describe the existing INHERITS clause
instead, per recent discussion in pghackers. Also fix implementation
of SQL_inheritance SET variable: it is not cool to look at this var
during the initial parsing phase, only during parse_analyze(). See
recent bug report concerning misinterpretation of date constants just
after a SET TIMEZONE command. gram.y really has to be an invariant
transformation of the query string to a raw parsetree; anything that
can vary with time must be done during parse analysis.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.311
diff -r1.311 TODO
3c3
< Last updated: Tue Jan 2 21:23:11 EST 2001
---
> Last updated: Wed Jan 3 01:56:41 EST 2001
10c10
< A dash(-) marks changes that will appear in the upcoming 7.1 release.
---
> A dash (-) marks changes that will appear in the upcoming 7.1 release.
23c23
< * -Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
---
> * -Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME (Thomas)
35c35
< * -Views containing aggregates sometimes fail(Jan)
---
> * -Views containing aggregates sometimes fail (Jan)
37,38c37,38
< duplicates(inherit)
< * -Disallow LOCK on view(Mark Hollomon)
---
> duplicates (inherit)
> * -Disallow LOCK on view (Mark Hollomon)
58,60c58,60
< * -Add OUTER joins, left and right[outer](Tom, Thomas)
< * -Allow long tuples by chaining or auto-storing outside db (TOAST)(Jan)
< * Fix memory leak for expressions[memory](Tom?)
---
> * -Add OUTER joins, left and right[outer] (Tom, Thomas)
> * -Allow long tuples by chaining or auto-storing outside db (TOAST) (Jan)
> * Fix memory leak for expressions[memory] (Tom?)
70c70
< * Allow row re-use without vacuum(Vadim)
---
> * Allow row re-use without vacuum (Vadim)
74c74
< * More access control over who can create tables and use locks(Karel)
---
> * More access control over who can create tables and use locks (Karel)
92c92
< o -Fix large object mapping scheme, own typeid or reltype(Peter)
---
> o -Fix large object mapping scheme, own typeid or reltype (Peter)
97c97
< * Fix improper masking of some inet/cidr types [cidr]
---
> * -Fix improper masking of some inet/cidr types [cidr]
113c113
< * Get BIT type working
---
> * -Get BIT type working
119c119
< * Update macaddr manufacturer numbers, or remove the function macaddr_manuf()
---
> * -Update macaddr manufacturer numbers, or remove the function macaddr_manuf()
147c147
< * -Add ALTER TABLE ALTER COLUMN feature(Peter E)
---
> * -Add ALTER TABLE ALTER COLUMN feature (Peter E)
157c157
< * Auto-destroy sequence on DROP of table with SERIAL(Ryan)
---
> * Auto-destroy sequence on DROP of table with SERIAL (Ryan)
166a167
> * Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
172d172
< * Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
176c176
< * Make NULL's come out at the beginning or end depending on the
---
> * Make NULL's come out at the beginning or end depending on the
220c220
< * Certain indexes will not shrink, i.e. oid indexes with many inserts(Vadim)
---
> * Certain indexes will not shrink, i.e. oid indexes with many inserts (Vadim)
226c226
< with after-row images(Vadim) [logging](Vadim)
---
> with after-row images (Vadim) [logging]
232c232
< * -Redesign the function call interface to handle NULLs better[function](Tom)
---
> * -Redesign the function call interface to handle NULLs better[function] (Tom)
239c239
< * Encrpyt passwords in pg_shadow table using MD5(Vince)
---
> * Encrpyt passwords in pg_shadow table using MD5 (Vince)
298a299,300
> * Create a transaction processor to aid in persistent connections and
> connection pooling
307c309
< * Remove SET KSQO option now that OR processing is improved(Tom)
---
> * Remove SET KSQO option now that OR processing is improved (Tom)
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.310
diff -r1.310 TODO
3c3
< Last updated: Wed Dec 27 00:44:44 EST 2000
---
> Last updated: Tue Jan 2 21:23:11 EST 2001
310a311
> * Allow libedit to be used in place of libreadline
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.309
diff -r1.309 TODO
3c3
< Last updated: Sat Dec 23 09:48:47 EST 2000
---
> Last updated: Wed Dec 27 00:44:44 EST 2000
60a61,70
> * Add replication of distributed databases [replication]
> o automatic fallover
> o load balancing
> o master/slave replication
> o multi-master replication
> o partition data across servers
> o sample implementation in contrib/rserv
> o queries across databases or servers (two-phase commit)
> * Point-in-time data recovery using backup and write-ahead log
> * Allow row re-use without vacuum(Vadim)
112c122
< * Make file in/out interface to TOAST columns
---
> * Make binary/file in/out interface for TOAST columns
122a133
> * Automatically create rules on views so they are updateable, per SQL92
173c184
< * allow psql \d to show temporary table schema
---
> * allow psql \d to show temporary table structure
195d205
< * Add replication of distributed databases [replication]
200a211,212
> * Incremental backups
> * Allow SQL92 schemas
205d216
< * Allow row re-use without vacuum(Vadim)
229a241
> * Allow Java server-side programming
278a291
> * Automatically keep clustering on a table
329d341
< 5~
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.308
diff -r1.308 TODO
3c3
< Last updated: Thu Dec 21 14:45:00 EST 2000
---
> Last updated: Sat Dec 23 09:48:47 EST 2000
72a73
> * Remove unused files during database vacuum or postmaster startup
recommendation from Paul Vixie. Add a new abbrev() function to produce
abbreviated format as text. No forced initdb, but new function is not
available unless you do an initdb or add the pg_proc row manually.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.307
diff -r1.307 TODO
3c3
< Last updated: Thu Dec 21 14:12:04 EST 2000
---
> Last updated: Thu Dec 21 14:45:00 EST 2000
32d31
< * Prevent BETWEEN from using duplicate nodes
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.306
diff -r1.306 TODO
3c3
< Last updated: Fri Dec 15 17:44:57 EST 2000
---
> Last updated: Thu Dec 21 14:12:04 EST 2000
31a32
> * Prevent BETWEEN from using duplicate nodes
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.305
diff -r1.305 TODO
3c3
< Last updated: Fri Dec 15 17:40:22 EST 2000
---
> Last updated: Fri Dec 15 17:44:57 EST 2000
312a313
> * Mark is Mark Hollomon <mhh@mindspring.com>
326a328
> 5~
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.304
diff -r1.304 TODO
3c3
< Last updated: Fri Dec 15 17:03:28 EST 2000
---
> Last updated: Fri Dec 15 17:40:22 EST 2000
318a319
> * Ross is Ross J. Reedstrom <reedstrm@wallace.ece.rice.edu>
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.303
diff -r1.303 TODO
3c3
< Last updated: Fri Dec 15 16:46:43 EST 2000
---
> Last updated: Fri Dec 15 17:03:28 EST 2000
319a320
> * Stephan is Stephan Szabo <sszabo@megazone23.bigpanda.com>
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.302
diff -r1.302 TODO
3c3
< Last updated: Tue Dec 12 23:01:53 EST 2000
---
> Last updated: Fri Dec 15 16:46:43 EST 2000
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.301
diff -r1.301 TODO
306d305
< * Bryan is Bryan Henderson<bryanh@giraffe.netgate.net>
308d306
< * David is David Hartwig <daveh@insightdist.com>
311c309,310
< * Hiroshi is Hiroshi Inoue<Inoue@tpf.co.jp>
---
> * Hiroshi is Hiroshi Inoue <Inoue@tpf.co.jp>
> * Karel is Karel Zak <zakkr@zf.jcu.cz>
314c313
< * Massimo Dal Zotto <dz@cs.unitn.it>
---
> * Massimo is Massimo Dal Zotto <dz@cs.unitn.it>
318c317
< * Philip Warner <pjw@rhyme.com.au>
---
> * Philip is Philip Warner <pjw@rhyme.com.au>
321d319
< * Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at>
326c324
< * Vadim is "Vadim B. Mikheev" <vadim4o@email.com>
---
> * Vadim is Vadim B. Mikheev <vadim4o@email.com>
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.300
diff -r1.300 TODO
3c3
< Last updated: Tue Dec 12 23:01:04 EST 2000
---
> Last updated: Tue Dec 12 23:01:53 EST 2000
21d20
< * test to show diffs for TODO changes
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.299
diff -r1.299 TODO
3c3
< Last updated: Tue Dec 12 15:27:50 EST 2000
---
> Last updated: Tue Dec 12 23:01:04 EST 2000
20a21
> * test to show diffs for TODO changes
the first paragraph:
As an example, say we wish to find all the records that
are in the temperature range of other records. In
effect, we need to compare the temp_lo and temp_hi
attributes of each EMP instance to the temp_lo and
temp_hi attributes of all other EMP instances.
I believe that EMP should read WEATHER, as the example query that
follows joins WEATHER to itself.
EMP is often used in Oracle examples.
Regards,
Graham
Other RULE cleanups
ISO-compliant UNION/INTERSECT/EXCEPT. Revise discussion of rule
rewriter to reflect new subselect-in-FROM implementation of views.
Miscellaneous other cleanups.
line 1324:
"left-hand" should be "right-hand"
BTW: new document looks very good!
And the new configure/build process seems much better then before!
Thanks!
Laser
value greater than one. The behavior this sought to disallow doesn't
seem any less confusing than the other behaviors of cached sequences.
Improve wording of some error messages, too.
Update documentation accordingly. Also add an explanation that
aborted transactions do not roll back their nextval() calls; this
seems to be a FAQ, so it ought to be mentioned here...
IPC key assignment will now work correctly even when multiple postmasters
are using same logical port number (which is possible given -k switch).
There is only one shared-mem segment per postmaster now, not 3.
Rip out broken code for non-TAS case in bufmgr and xlog, substitute a
complete S_LOCK emulation using semaphores in spin.c. TAS and non-TAS
logic is now exactly the same.
When deadlock is detected, "Deadlock detected" is now the elog(ERROR)
message, rather than a NOTICE that comes out before an unhelpful ERROR.
re-adopt these settings at every postmaster or standalone-backend startup.
This should fix problems with indexes becoming corrupt due to failure to
provide consistent locale environment for postmaster at all times. Also,
refuse to start up a non-locale-enabled compilation in a database originally
initdb'd with a non-C locale. Suppress LIKE index optimization if locale
is not "C" or "POSIX" (are there any other locales where it's safe?).
Issue NOTICE during initdb if selected locale disables LIKE optimization.
it fixing Y,YY,YYY,YYYY conversion, the docs and regress tests update
are included too.
During the patch testing I found small bug in miscadmin.h in
convertstr() declaration. Here it's fixed too.
Thanks
Karel
Make version.sgml the central place for updating version numbers in the
documentation. Document titles now contain the version number of the
release they belong to.
filelist.sgml is the central (and only) place to declare system entities
(i.e., sgml files). No longer a need to declare them in each document
header.
There is no longer any need to maintain duplicate chapter lists in
postgres.sgml and user/admin/etc.sgml, everything is build from the same
sources. Some parameter entities allow for different text to be included
when the integrated or a single doc set is generated, which eliminates the
problems that had caused this to fail in the past.
in pghackers list. Support for oldstyle internal functions is gone
(no longer needed, since conversion is complete) and pg_language entry
'internal' now implies newstyle call convention. pg_language entry
'newC' is gone; both old and newstyle dynamically loaded C functions
are now called language 'C'. A newstyle function must be identified
by an associated info routine. See src/backend/utils/fmgr/README.
maintained for each cache entry. A cache entry will not be freed until
the matching ReleaseSysCache call has been executed. This eliminates
worries about cache entries getting dropped while still in use. See
my posting to pg-hackers of even date for more info.
<entry>varchar(n)</entry>
<entry>(4+x) bytes</entry>
should be
<entry>varchar(n)</entry>
<entry>(4+n) bytes</entry>
or
<entry>varchar(x)</entry>
<entry>(4+x) bytes</entry>
Regards
Laser Henry
cloned, rather than always cloning template1. Modify initdb to generate
two identical databases rather than one, template0 and template1.
Connections to template0 are disallowed, so that it will always remain
in its virgin as-initdb'd state. pg_dumpall now dumps databases with
restore commands that say CREATE DATABASE foo WITH TEMPLATE = template0.
This allows proper behavior when there is user-added data in template1.
initdb forced!
adds the facility to set the program name used in syslog.
(this includes the other ones).
One gotcha, the parser doesn't like special characters in strings.
For example, i tried to use pg-test, and if failed the parse coming
from the postgresql.conf file.
I don't think it's a showstopper..
Larry Rosenman
hosting product, on both shared and dedicated machines. We currently
offer Oracle and MySQL, and it would be a nice middle-ground.
However, as shipped, PostgreSQL lacks the following features we need
that MySQL has:
1. The ability to listen only on a particular IP address. Each
hosting customer has their own IP address, on which all of their
servers (http, ftp, real media, etc.) run.
2. The ability to place the Unix-domain socket in a mode 700 directory.
This allows us to automatically create an empty database, with an
empty DBA password, for new or upgrading customers without having
to interactively set a DBA password and communicate it to (or from)
the customer. This in turn cuts down our install and upgrade times.
3. The ability to connect to the Unix-domain socket from within a
change-rooted environment. We run CGI programs chrooted to the
user's home directory, which is another reason why we need to be
able to specify where the Unix-domain socket is, instead of /tmp.
4. The ability to, if run as root, open a pid file in /var/run as
root, and then setuid to the desired user. (mysqld -u can almost
do this; I had to patch it, too).
The patch below fixes problem 1-3. I plan to address #4, also, but
haven't done so yet. These diffs are big enough that they should give
the PG development team something to think about in the meantime :-)
Also, I'm about to leave for 2 weeks' vacation, so I thought I'd get
out what I have, which works (for the problems it tackles), now.
With these changes, we can set up and run PostgreSQL with scripts the
same way we can with apache or proftpd or mysql.
In summary, this patch makes the following enhancements:
1. Adds an environment variable PGUNIXSOCKET, analogous to MYSQL_UNIX_PORT,
and command line options -k --unix-socket to the relevant programs.
2. Adds a -h option to postmaster to set the hostname or IP address to
listen on instead of the default INADDR_ANY.
3. Extends some library interfaces to support the above.
4. Fixes a few memory leaks in PQconnectdb().
The default behavior is unchanged from stock 7.0.2; if you don't use
any of these new features, they don't change the operation.
David J. MacKenzie
functions, per recent discussions on pghackers. For now, I have called
the verbose-display formatting function text(), but will reconsider if
enough people object.
initdb forced.
that installs into a different path than is configured.
With this applied both postmaster and the shared libs are location
independent
for AIX 4.2 and up.
Thanks
Andreas
kibitzing from Tom Lane. Large objects are now all stored in a single
system relation "pg_largeobject" --- no more xinv or xinx files, no more
relkind 'l'. This should offer substantial performance improvement for
large numbers of LOs, since there won't be directory bloat anymore.
It'll also fix problems like running out of locktable space when you
access thousands of LOs in one transaction.
Also clean up cruft in read/write routines. LOs with "holes" in them
(never-written byte ranges) now work just like Unix files with holes do:
a hole reads as zeroes but doesn't occupy storage space.
INITDB forced!
as well allow DROP multiple INDEX, RULE, TYPE as well. Add missing
CommandCounterIncrement to DROP loop, which could cause trouble otherwise
with multiple DROP of items affecting same catalog entries. Try to
bring a little consistency to various error messages using 'does not exist',
'nonexistent', etc --- I standardized on 'does not exist' since that's
what the vast majority of the existing uses seem to be.
time zones with embedded numerals (parsing to a meaninless "ZP 4"
instead).
Support "SAT" as an Australian time zone if USE_AUSTRALIAN_RULES
is defined.
Fix units in exposition on Julian calendar (from Lazer Henry I think...)
This patch forces the use of 'DROP VIEW' to destroy views.
It also changes the syntax of DROP VIEW to
DROP VIEW v1, v2, ...
to match the syntax of DROP TABLE.
Some error messages were changed so this patch also includes changes to the
appropriate expected/*.out files.
Doc changes for 'DROP TABLE" and 'DROP VIEW' are included.
--
Mark Hollomon
* doc/src/sgml/installation.sgml: ditto.
* src/test/regress/README: Regenerate.
* doc/src/sgml/docguide.sgml: Explain how it was done. Explain how
INSTALL and HISTORY are (now) generated.
* doc/src/sgml/Makefile: Implement HISTORY generation to be analoguous
to INSTALL.
I hope I didn't mess the SGML up too bad, but somebody should definitly
look that over. I tried to steal as much as I could from around :-)
This patch updates:
* Installation instructions (paragraph on how to compile with openssl)
* Documentation of pg_hba.conf (added "hostssl" record docs)
* Libpq documentation (added connection option, documentation of
PQgetssl() function)
* Add section on SSL to "Server Runtime Environment"
If you beleive any particular area needs more attention, please let me know.
//Magnus
have already modified "next_insert()" in 7.0-ecpglib. However
in the meaning of speed-up, the patch will be needed.
--
Regards,
SAKAIDA Masaaki -- Osaka, Japan
Update the installation instructions (formerly misnamed "FAQ"), add configure
checks for some headers rather than having users copy stubs manually (ugh!).
Use Autoconf check for exe extension. This also avoids inheriting the value
of $(X) from the environment.
- rename ichar() to chr() (discussed with Tom)
- add docs for oracle compatible routines:
btrim()
ascii()
chr()
repeat()
- fix bug with timezone in to_char()
- all to_char() variants return NULL instead textin("")
if it's needful.
The contrib/odbc is without changes and contains same routines as main
tree ... because I not sure how plans are Thomas with this :-)
Karel
---------------------------------------------------------------------------
This effectively one line patch should fix the fact that
foreign key definitions in create table were erroring if
a primary key was defined. I was using the columns
list to get the columns of the table for comparison, but
it got reused as a temporary list inside the primary key
stuff.
Stephan Szabo
There is still no effective difference but it will kick in once setuid
functions exist (not included here). Make old getpgusername() alias for
current_user.
DESTDIR=/else/where' and prepends the value of DESTDIR to the full
installation paths (e.g., /else/where/usr/local/pgsql/bin). This allows
users to install the package into a location different from the one that
was configured and hard-coded into various scripts, e.g., for creating
binary packages.
DESTDIR is in many cases preferrable over `make install
prefix=/else/where' because
a) `prefix' affects the path that is hard-coded into the files, which can
lead to a `make install prefix=xxx' (as done by the regression test
driver) corrupting the files in the source tree with wrong paths.
b) it doesn't work at all if a directory was overridden to not depend on
`prefix', e.g., --sysconfdir=/etc.
(Updating the regression test driver to use DESTDIR is a separate
undertaking.)
See also autoconf@gnu.org, From: Akim Demaille <akim@epita.fr>, Date: 08
Sep 2000 12:48:59 +0200, Message-ID:
<mv4em2vb1lw.fsf@nostromo.lrde.epita.fr>, Subject: Re: HTML format
documentation.
- full support for IW (ISO week) and vice versa conversion for IW too
(the to_char 'week' support is now complete and I hope correct).
Thomas, I use for IW code from timestamp.c, for this I create separate
function date2isoweek() from original 'case DTK_WEEK:' code in the
timestamp_part(). I mean will better use one code for same feature in
date_part() and in to_char(). The isoweek2date() is added to timestamp.c
too. Right?
IMHO in 7.1 will all to_char's features complete. It is cca 41 templates
for date/time and cca 21 for numbers.
* to_ascii:
- gcc, is it correct now? :-)
In the patch is documentation for to_char's IW and for to_ascii().
Karel
I hope I didn't mess the SGML up too bad, but somebody should definitly
look that over. I tried to steal as much as I could from around :-)
This patch updates:
* Installation instructions (paragraph on how to compile with openssl)
* Documentation of pg_hba.conf (added "hostssl" record docs)
* Libpq documentation (added connection option, documentation of
PQgetssl() function)
* Add section on SSL to "Server Runtime Environment"
If you beleive any particular area needs more attention, please let me know.
//Magnus
(rather than compile time). For libpq, even when Kerberos support is
compiled in, the default user name should still fall back to geteuid()
if it can't be determined via the Kerberos system.
A couple of fixes for string type configuration parameters, now that there
is one.
macros where appropriate (the code used to have several different ways
of doing that, including Int32, Int8, UInt8, ...). Remove last few
references to float32 and float64 typedefs --- it's all float4/float8
now. The typedefs themselves should probably stay in c.h for a release
or two, though, to avoid breaking user-written C functions.
that RAND_MAX applies to them, since it doesn't. Instead add a
config.h parameter MAX_RANDOM_VALUE. This is currently set at 2^31-1
but could be auto-configured if that ever proves necessary. Also fix
some outright bugs like calling srand() where srandom() is appropriate.
documentation. Therefore it's now installed by default. If there is no
documentation to be found (i.e., you are not using the distribution)
then this step is skipped.
Add --docdir option to configure to control installation directory.
There's now only one transition value and transition function.
NULL handling in aggregates is a lot cleaner. Also, use Numeric
accumulators instead of integer accumulators for sum/avg on integer
datatypes --- this avoids overflow at the cost of being a little slower.
Implement VARIANCE() and STDDEV() aggregates in the standard backend.
Also, enable new LIKE selectivity estimators by default. Unrelated
change, but as long as I had to force initdb anyway...
* Add option to build with OpenSSL out of the box. Fix thusly exposed
bit rot. Although it compiles now, getting this to do something
useful is left as an exercise.
* Fix Kerberos options to defer checking for required libraries until
all the other libraries are checked for.
* Change default odbcinst.ini and krb5.srvtab path to PREFIX/etc.
* Install work around for Autoconf's install-sh relative path anomaly.
Get rid of old INSTL_*_OPTS variables, now that we don't need them
anymore.
* Use `gunzip -c' instead of g?zcat. Reportedly broke on AIX.
* Look for only one of readline.h or readline/readline.h, not both.
* Make check for PS_STRINGS cacheable. Don't test for the header files
separately.
* Disable fcntl(F_SETLK) test on Linux.
* Substitute the standard GCC warnings set into CFLAGS in configure,
don't add it on in Makefile.global.
* Sweep through contrib tree to teach makefiles standard semantics.
... and in completely unrelated news:
* Make postmaster.opts arbitrary options-aware. I still think we need to
save the environment as well.
files to restrict the set of users that can connect to a database
but can still use the pg_shadow password. (You just leave off the
password field in the secondary file.)
Now the to_timestamp() support WW,W,J,SSSS,DDD conversion from strings and
the am/pm bug is fixed, the to_char() use week-of-year (WW) full compatible
with Oracle.
This patch update relevant regress-tests and docs too.
Karel
~
~
for details). It doesn't really do that much yet, since there are no
short-term memory contexts in the executor, but the infrastructure is
in place and long-term contexts are handled reasonably. A few long-
standing bugs have been fixed, such as 'VACUUM; anything' in a single
query string crashing. Also, out-of-memory is now considered a
recoverable ERROR, not FATAL.
Eliminate a large amount of crufty, now-dead code in and around
memory management.
Fix problem with holding off SIGTRAP, SIGSEGV, etc in postmaster and
backend startup.
option settings. Sort out SIGHUP vs BACKEND -- there is no total ordering
here, so make explicit checks. Add comments explaining all of this.
Removed permissions check on SHOW command.
Add examine_subclass to the game, rename to SQL_inheritance to fit the
official data model better. Adjust documentation.
Standalone backend needs to reset all options before it starts. To
facilitate that, have IsUnderPostmaster be set by the postmaster itself,
don't wait for the magic -p switch.
Also make sure that all environment variables and argv's survive
init_ps_display(). Use strdup where necessary.
Have initdb make configuration files (postgresql.conf, pg_hba.conf) mode
0600 -- having configuration files is no fun if you can't edit them.
> patches are not lost...
Aggregate doc patches:
The patches are attached. Be great if you could check them over to make
sure all relevant content (and markup) is there...
Isaac Wilcox
entries now for int8 and network hash indexes. int24_ops and int42_ops
are gone. pg_opclass no longer contains multiple entries claiming to be
the default opclass for the same datatype. opr_sanity regress test
extended to catch errors like these in the future.
reference page to new configuration system. Big update to administrator's
guide, chapters Runtime environment, Client authentication, and User
management, the latter two were part of the old Security chapter.
postgres build and use unixODBC (http://www.unixodbc.org)
This patch was applied against the postgresql-7.0beta1 build
Any problems let me know.
Nick Gorham
is in <string> and not in <string.h> on QNX4/egcs-2.91.60.
Probably this can be changed for all platforms. The test in line 1705 uses
<string> as well. Because I am not sure, I havn't this included into the
patch.
doc/Makefile has to be sligthly modified as it has been done for
src/backend/Makefile due to a QNX4 problem (patch attached)
Furthermore src/test/regress/run_check.sh needs to be patched as it has been
done for regress.sh (patch attached). Please note that in the patch the
postmaster is started always with the -i option.
run_check.sh reports the test "limit" as failed, but in reallity it is OK.
regress.sh reports it as OK.
Andreas Kardos
(LIKE and regexp matches). These are not yet referenced in pg_operator,
so by default the system will continue to use eqsel/neqsel.
Also, tweak convert_to_scalar() logic so that common prefixes of strings
are stripped off, allowing better accuracy when all strings in a table
share a common prefix.
Add some chapters on new topics.
Change to referencing OASIS/Docbook v3.1 rather than Davenport/Docbook v3.0
Grepped for and fixed apparent tag mangling from emacs
"Normalize" operation. Should be the last of those.
reasonable, ie configure and build first, then optionally run regress
tests using new parallel (non-installed) test method, and only then
backup and kill old installation.
it in a separate object. There's no value in keeping the state separate,
and it creates dangling-pointer problems. Also, remove PQsetenv routines
from public API, until and unless they are redesigned to have a safer
interface. Since they were never part of the documented API before 7.0,
it's unlikely that anyone is calling them.
16-Mar-00: trailing + or - is not part of the operator unless the operator
also contains characters not present in SQL92-defined operators. This
solves the 'X=-Y' problem without unduly constraining users' choice of
operator names --- in particular, no existing Postgres operator names
become invalid.
Also, remove processing of // comments, as agreed in the same thread.
after trying to resolve the item as an input-column name. This allows us
to be compliant with the SQL92 spec for queries that fall within the spec,
while still accepting the same out-of-spec queries as 6.5 did. You'll only
lose if there is an output column name that is the same as an input
column name, but doesn't refer to the same value. 7.0 will interpret
such a GROUP BY spec differently than 6.5 did. No way around that, because
6.5 was clearly not spec compliant.
tests for the Foreign Key support in 7.0 which
was made against a CVS copy from this
afternoon.
This modifies
src/test/regress/sql/run_check.tests
src/test/regress/sql/alter_table.sql
src/test/regress/expected/alter_table.out
src/test/regress/sql/foreign_key.sql
src/test/regress/expected/foreign_key.out
sszabo@bigpanda.co
selectivity functions and make the r-tree operators use them. The
estimation functions themselves are just stubs, unfortunately, but
perhaps someday someone will make them compute realistic estimates.
Change pg_am so that the optimizer can reliably tell the difference
between ordered and unordered indexes --- before it would think that
an r-tree index can be scanned in '<<' order, which is not right AFAIK.
Repair broken negator links for network_sup and related ops.
Initdb forced. This might be my last initdb force for 7.0 ... hope so
anyway ...
accesses versus sequential accesses, a (very crude) estimate of the
effects of caching on random page accesses, and cost to evaluate WHERE-
clause expressions. Export critical parameters for this model as SET
variables. Also, create SET variables for the planner's enable flags
(enable_seqscan, enable_indexscan, etc) so that these can be controlled
more conveniently than via PGOPTIONS.
Planner now estimates both startup cost (cost before retrieving
first tuple) and total cost of each path, so it can optimize queries
with LIMIT on a reasonable basis by interpolating between these costs.
Same facility is a win for EXISTS(...) subqueries and some other cases.
Redesign pathkey representation to achieve a major speedup in planning
(I saw as much as 5X on a 10-way join); also minor changes in planner
to reduce memory consumption by recycling discarded Path nodes and
not constructing unnecessary lists.
Minor cleanups to display more-plausible costs in some cases in
EXPLAIN output.
Initdb forced by change in interface to index cost estimation
functions.
The PostgreSQL's to_char() is very compatible with Oracle's to_char
now. I hope that to_char's 3000 rows of source is without bugs, but
will good if anyone test it, for me it works very well :-)
Karel
----------------------------------------------------------------------
Karel Zak <zakkr@zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/
regression tests so I prepared a set of expected
files to make things look OK.
There's also a file to account for minor variations
in the geopmetry output and a resultmap patch to
pull them all together.
With these changes PostgreSQL, from CVS, builds and
regression tests (runcheck) cleanly.
Keith Parks.
Initdb help correction
Changed end/abort to commit/rollback and changed related notices
Commented out way old printing functions in libpq
Fixed a typo in alter table / alter column
SELECT DISTINCT ON (expr [, expr ...]) targetlist ...
and there is a check to make sure that the user didn't specify an ORDER BY
that's incompatible with the DISTINCT operation.
Reimplement nodeUnique and nodeGroup to use the proper datatype-specific
equality function for each column being compared --- they used to do
bitwise comparisons or convert the data to text strings and strcmp().
(To add insult to injury, they'd look up the conversion functions once
for each tuple...) Parse/plan representation of DISTINCT is now a list
of SortClause nodes.
initdb forced by querytree change...
family functions. Contain:
conversion from a datetype to formatted text:
to_char( datetime, text)
to_char( timestamp, text)
to_char( int4, text)
to_char( int8, text)
to_char( float4, text)
to_char( float8, text)
to_char( numeric, text)
vice versa:
to_date ( text, text)
to_datetime ( text, text)
to_timestamp ( text, text)
to_number ( text, text) (convert to numeric)
PostgreSQL to_char is very compatible with Oracle's to_char(), but not
total exactly (now). Small differentions are in number formating. It will
fix in next to_char() version.
! If will this patch aplly to the main tree, must be delete the current
to_char version in contrib (directory "dateformat" and note in contrib's
README), this patch not erase it (sorry Bruce).
The patch patching files:
doc/src/sgml/func.sgml
^^^^^^^^
Hmm, I'm not sure if my English... :( Check it anyone (volunteer)?
Thomas, it is right? SGML is not my primary lang and compile
the current PG docs tree is very happy job (hard variables setting in
docs/sgml/Makefile --> HSTYLE= /home/users/t/thomas/.... :-)
What add any definition to global configure.in and set Makefiles in docs
tree via ./configure?
src/backend/utils/adt/Makefile
src/backend/utils/adt/formatting.c
src/include/catalog/pg_proc.h
src/include/utils/formatting.h
Karel Zak <zakkr@zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/
(ie, WHERE x > lowbound AND x < highbound). It's not very bright yet
but it does something useful. Also, rename intltsel/intgtsel to
scalarltsel/scalargtsel to reflect usage better. Extend convert_to_scalar
to do something a little bit useful with string data types. Still need
to make it do something with date/time datatypes, but I'll wait for
Thomas's datetime unification dust to settle first. Eventually the
routine ought not have any type-specific knowledge at all; it ought to
be calling a type-dependent routine found via a pg_type column; but
that's a task for another day.
pghackers discussion of 5-Jan-2000. The amopselect and amopnpages
estimators are gone, and in their place is a per-AM amcostestimate
procedure (linked to from pg_am, not pg_amop).
- Prevent permissions on indexes
- Instituted --enable-multibyte option and tweaked the MB build process where necessary
- initdb prompts for superuser password
* Let unprivileged users change their own passwords.
* The password is now an Sconst in the parser, which better reflects its text datatype and also
forces users to quote them.
* If your password is NULL you won't be written to the password file, meaning you can't connect
until you have a password set up (if you use password authentication).
* When you drop a user that owns a database you get an error. The database is not gone.
in libpq --- mostly, poor response to error conditions. You now actually
get to see the postmaster's 'The Data Base System is starting up' message,
which you didn't before. I suspect the SSL code is still broken though.
traced this back to what I believe is an error in the sgml file used to
generate this comment, found in pgsql/doc/src/sgml/ref/alter_table.sgml.
Stephen Birch
> > for them to actually set out and do it. Many new users are
> > of the not-so-knowledgable variety, and shell scripting isn't
> > something they want to undertake.
>
> Can someone modify the vacuumdb shell script to do that?
i tried it... it seems to work
neko@kredit.sth.sz
initdb. No more obscure dependencies on environment variables or paths.
It
now finds the templates and the right postgres itself (with cmd line
options as fallback). It also no longer depends on $USER (su safe), and
doesn't advertise that --username allows you to install the db as a
different user, since that doesn't work anyway. Also, recovery and
cleanup
on all errors. Consistent options, clearer documentation.
Please take a look at this and adopt it if you feel it's safe enough. I
have simulated all the stupid circumstances I could think of, but you
never know with shell scripts.
Oh yeah, you can give the postgres user a default password now.
--
Peter Eisentraut Sernanders väg 10:115
triggered
> function now returns the right datatype.
Oops, I got crossed up with Jan's improvements. Ignore this.
--
Peter Eisentraut Sernanders väg 10:115
peter_e@gmx.net 75262 Uppsala
anywhere from zero to two TODO items.
* Allow flag to control COPY input/output of NULLs
I got this:
COPY table .... [ WITH NULL AS 'string' ]
which does what you'd expect. The default is \N, otherwise you can use
empty strings, etc. On Copy In this acts like a filter: every data item
that looks like 'string' becomes a NULL. Pretty straightforward.
This also seems to be related to
* Make postgres user have a password by default
If I recall this discussion correctly, the problem was actually that the
default password for the postgres (or any) user is in fact "\N", because
of the way copy is used. With this change, the file pg_pwd is copied out
with nulls as empty strings, so if someone doesn't have a password, the
password is just '', which one would expect from a new account. I don't
think anyone really wants a hard-coded default password.
Peter Eisentraut Sernanders väg 10:115
* Document/trigger/rule so changes to pg_shadow recreate pg_pwd
I did it with a trigger and it seems to work like a charm. The function
that already updates the file for create and alter user has been made a
built-in "SQL" function and a trigger is created at initdb time.
Comments around the pg_pwd updating function seem to be worried about
this
routine being called concurrently, but I really don't see a reason to
worry about this. Verify for yourself. I guess we never had a system
trigger before, so treat this with care, and feel free to adjust the
nomenclature as well.
--
Peter Eisentraut Sernanders väg 10:115
at all, and because of shell quoting rules this can't be fixed, so I put
in error messages to that end.
Also, calling create or drop database in a transaction block is not so
good either, because the file system mysteriously refuses to roll back rm
calls on transaction aborts. :) So I put in checks to see if a transaction
is in progress and signal an error.
Also I put the whole call in a transaction of its own to be able to roll
back changes to pg_database in case the file system operations fail.
The alternative location issues I posted recently were untouched, awaiting
the outcome of that discussion. Other than that, this should be much more
fool-proof now.
The docs I cleaned up as well.
Peter Eisentraut Sernanders väg 10:115
against the sources from one hour ago and contain all the portable and
up
to date stuff.
A few other CVS "householding" things you might want to take care of:
* Remove the src/bin/cleardbdir directory
* Remove the file src/bin/psql/sql_help.h from the repository, as it is
a derived file and is build by the release_prep.
Peter Eisentraut
them into the scripts dir. I also added a --list option to show already
installed languages.
This whole moving and renaming totally confused CVS and my checked out
copy got completely fried last night. When you apply the source patch,
please make sure that all the directories src/bin/{create|destroy}* as
well as vacuumdb, cleardbdir are gone and that all the scripts (7) are
in
scripts/.
Meanwhile I am still puzzled about what happened with the docs patch.
Because I don't know what you got now, the second attachment contains
the
files
ref/allfiles.sgml
ref/commands.sgml
ref/createlang.sgml
ref/droplang.sgml
doc/src/sgml/Makefile
Peter Eisentraut Sernanders väg 10:115
This one should work much better than the one I sent in previously. The
functionality is the same, but the patch was missing one file resulting
in
the compilation failing. The docs also received a minor fix.
Peter Eisentraut Sernanders väg 10:115
PQconnectStart
PQconnectPoll
PQresetStart
PQresetPoll
PQsetenvStart
PQsetenvPoll
PQsetenvAbort
and brings into the published interface
PQsetenv.
The first four are asynchronous analogues of PQconnectdb and PQreset -
they allow an application to connect to the DB without blocking on
remote I/O.
The PQsetenv functions perform an environment negotiation with the
server.
Internal to libpq, pqReadReady and pqWriteReady have been made available
across the library (they were previously static functions inside
fe-misc.c). A lot of internal rearrangement has been necessary to
support these changes.
The API documentation has been updated also.
Caveats:
o The Windows code does not default to using non-blocking sockets,
since I have no documentation: Define WIN32_NON_BLOCKING_CONNECTIONS to
do that.
o The SSL code still blocks.
Ewan Mellor.
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
Make all system indexes unique.
Make all cache loads use system indexes.
Rename *rel to *relid in inheritance tables.
Rename cache names to be clearer.
Move around a few other keywords which were not in the right category.
DEC and SESSION_USER are not yet committed to gram.y,
since I'm in the middle of working on JOIN syntax too.
<HTML>
<HEAD>
<TITLE>PostgreSQL TODO list</TITLE>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000"\
ALINK="#0000FF">
<META NAME="generator" CONTENT="txt2html v1.25">
</HEAD>
<BODY>
<H1><A NAME="section-1">TODO list for PostgreSQL</A></H1>
Last updated: Tue Sep 28 00:34:21 EDT 1999
<P>
Current maintainer: Bruce Momjian (<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>)
<P>
The most recent version of this document can be viewed at<BR>
the PostgreSQL web site, <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>.
<P>
A dash(-) marks changes that will appear in the next release.
<P>
Names in brackets "[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]" indicate more detailed information is available in<BR>
the directory pgsql/doc/TODO.detail/ under that name.
<H2><A NAME="section-1.1">RELIABILITY</A></H2>
<P>
<STRONG>RESOURCES</STRONG>
<UL>
<LI> Elog() does not free all its memory(Jan)
<LI> spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
<LI> Recover or force failure when disk space is exhausted
</UL>
<P>
<STRONG>PARSER</STRONG>
<UL>
<LI> Disallow inherited columns with the same name as new columns
<LI> INSERT INTO ... SELECT with AS columns matching result columns problem
<LI> SELECT pg<U>class FROM pg</U>class generates strange error
<LI> Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
<LI> Do not allow bpchar column creation without length
<LI> -Select a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>] FROM test fails, it needs test.a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>]
<LI> -Array index references without table name cause problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/array">array</A>]
<LI> Update table SET table.value = 3 fails(SQL standard says this is OK)
<LI> Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
<LI> SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
<LI> -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
<LI> -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
<LI> UNION with LIMIT fails
<LI> Unique index on base column not honored on inserts from inherited table
INSERT INTO inherit_table (unique<U>index</U>col) VALUES (dup) should fail
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
<LI> CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
<LI> mismatched types in CREATE TABLE ... DEFAULT causes problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/default">default</A>]
<LI> SELECT ... UNION ... ORDER BY fails when sort expr not in result list
<LI> Be smarter about promoting types when UNION merges different data types
<LI> SELECT ... UNION ... GROUP BY fails if column types disagree
<LI> redesign INSERT ... SELECT to have two levels of target list
<LI> -select * from pg_class where oid in (0,-1)
<LI> have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
<LI> prevent primary key of nine columns [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
<LI> SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/distinct">distinct</A>]
<LI> -When using aggregates + GROUP BY, no rows in should yield no rows out
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Views containing aggregates sometimes fail(Jan)
<LI> Views with spaces in view name fail when referenced
<LI> Creating view and inheriting the view causes view* to show
duplicates(inherit)
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> User who can create databases can modify pg_database table
<LI> Plpgsql does not handle quoted mixed-case identifiers
<LI> Fix btree to give a useful elog when key > 1/2 (page - overhead)
<LI> pg_dump should preserve primary key information
<LI> plpgsql regression tests fail on BSD/OS
</UL>
<H2><A NAME="section-1.2">ENHANCEMENTS</A></H2>
<P>
<STRONG>URGENT</STRONG>
<UL>
<LI> Add referential integrity(Jan?)[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> Add OUTER joins, left and right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/outer">outer</A>](Thomas, Bruce)
<LI> Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
<LI> Eliminate limits on query length
<LI> Fix memory leak for expressions?[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>](Tom?)
<LI> -Fix memory leak for aggregates?
</UL>
<P>
<STRONG>ADMIN</STRONG>
<UL>
<LI> Better interface for adding to pg_group
<LI> More access control over who can create tables and access the database
<LI> Test syslog functionality
<LI> Allow elog() to return error codes, not just messages
<LI> Allow international error message support and add error codes
<LI> Generate postmaster pid file and remove flock/fcntl lock code [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
<LI> Add ability to specifiy location of lock/socket files [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
</UL>
<P>
<STRONG>TYPES</STRONG>
<UL>
<LI> Add BIT, BIT VARYING
<LI> Nchar (as distinguished from ordinary varchar),
<LI> Domain capability
<LI> Add STDDEV/VARIANCE() function for standard deviation computation/variance
<LI> Allow compression of large fields or a compressed field type
<LI> Large objects
<UL>
<LI> Fix large object mapping scheme, own typeid or reltype(Peter)
<LI> Allow large text type to use large objects(Peter)
<LI> Not to stuff everything as files in a single directory, hash dirs
<LI> Allow large object vacuuming
<LI> Tables that start with xinv confused to be large objects
</UL>
<LI> Allow pg_descriptions when creating types, tables, columns, and functions
<LI> Add IPv6 capability to INET/CIDR types
<LI> Make a separate SERIAL type?
<LI> Store binary-compatible type information in the system
<LI> Allow user to define char1 column
<LI> Add support for & operator
<LI> Allow LOCALE on a per-column basis, default to ASCII
<LI> Allow array on int8[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]
<LI> Allow nulls in arrays
<LI> Allow arrays to be ORDER'ed
<LI> Remove Money type, add money formatting for decimal type
<LI> Declare typein/out functions in pg_proc with a special "C string" data type
<LI> Add non-large-object binary field
<LI> -Add index on NUMERIC/DECIMAL type
<LI> Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
<LI> Functions returning sets don't really work right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Allow DISTINCT on views
<LI> Allow views of aggregate columns
<LI> Allow views with subselects
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
fails index can't store constant parameters
<LI> Allow creation of functional indexes to use default types
<LI> Permissions on indexes - prevent them?
<LI> Allow SQL function indexes
<LI> Add FILLFACTOR to index creation
<LI> Allow indexing of LIKE with localle character sets
<LI> Allow indexing of more than eight columns
</UL>
<P>
<STRONG>COMMANDS</STRONG>
<UL>
<LI> ALTER TABLE ADD COLUMN to inherited table put column in wrong place [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> Add ALTER TABLE DROP/ALTER COLUMN feature
<LI> Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
<P>
NULL specification on table [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cluster">cluster</A>]
<LI> Add SIMILAR TO to allow character classes, 'pg_[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/a-c">a-c</A>]%'
<LI> Auto-destroy sequence on DROP of table with SERIAL(Ryan)
<LI> Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
<LI> Allow INSERT/UPDATE of system-generated oid value for a row
<LI> Allow ESCAPE '\' at the end of LIKE for ANSI compliance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> Rewrite the LIKE handling by rewriting the user string with the
supplied ESCAPE [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> -Move LIKE index optimization handling to the optimizer
<LI> Allow RULE recompilation
<LI> Support UNION/INTERSECT/EXCEPT in sub-selects
<LI> Allow DELETE and UPDATE to use inheritance using tablename*
</UL>
<P>
<STRONG>CLIENTS</STRONG>
<UL>
<LI> Make NULL's come out at the beginning or end depending on the
ORDER BY direction
<LI> Allow flag to control COPY input/output of NULLs
<LI> Update reltuples from COPY command
<LI> Allow psql \copy to allow delimiters
<LI> Add a function to return the last inserted oid, for use in psql scripts
<LI> Allow psql to print nulls as distinct from "" [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/null">null</A>]
</UL>
<P>
<STRONG>EXOTIC FEATURES</STRONG>
<UL>
<LI> Add sql3 recursive unions
<LI> Add the concept of dataspaces
<LI> Add replication of distributed databases
<LI> Allow queries across multiple databases
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Increase identifier length(NAMEDATALEN) if small performance hit
<LI> Allow row re-use without vacuum(Vadim)
<LI> Create a background process for each database that runs while
database is idle, finding superceeded rows, gathering stats and vacuuming
<LI> Add UNIQUE capability to non-btree indexes
<LI> -Certain indexes will not shrink, i.e. oid indexes with many inserts
<LI> Restore unused oid's on backend exit if no one else has gotten oids
<LI> Have UPDATE/DELETE clean out indexes
<LI> Allow WHERE restriction on ctid
<LI> Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
<LI> Allow PQrequestCancel() to terminate when in waiting-for-lock state
<LI> -Transaction log, so re-do log can be on a separate disk by
with after-row images(Vadim) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/logging">logging</A>]
<LI> Populate backend status area and write program to dump status data
<LI> Make oid use unsigned int more reliably, pg_atoi()
<LI> Allow subqueries in target list
<LI> Put sort files, large objects in their own directory
<LI> Do autocommit so always in a transaction block(?)
<LI> Show location of syntax error in query [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/yacc">yacc</A>]
<LI> Redesign the function call interface to handle NULLs better [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
<LI> Document/trigger/rule so changes to pg<U>shadow recreate pg</U>pwd [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/pg_shadow">pg_shadow</A>]
<LI> Missing optimizer selectivities for date, r-tree, etc. [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
<LI> Overhaul bufmgr/lockmgr/transaction manager
<LI> Add PL/Perl(Mark Hollomon)
<LI> Make postgres user have a password by default
<LI> Add configure test to check for C++ need for *.h and namespaces
<LI> Allow BLCKSZ <= 64k, not <= 32k
<LI> redesign UNION structures to have separarate target lists
<LI> Allow multi-level query trees for INSERT INTO ... SELECT
</UL>
<H2><A NAME="section-1.3">PERFORMANCE</A></H2>
<P>
<STRONG>FSYNC</STRONG>
<UL>
<LI> -Allow transaction commits with rollback with no-fsync performance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/fsync">fsync</A>]
<LI> -Prevent fsync in SELECT-only queries
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Use indexes in ORDER BY for restrictive data sets, min(), max()
<LI> Pull requested data directly from indexes, bypassing heap data
<LI> Use index to restrict rows returned by multi-key index when used with
non-consecutive keys or OR clauses, so fewer heap accesses
<LI> -Convert function(constant) into a constant for index use
<LI> Allow LIMIT ability on single-table queries that have no ORDER BY to use
a matching index [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Improve LIMIT processing by using index to limit rows processed [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Have optimizer take LIMIT into account when considering index scans [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Make index creation use psort code, because it is now faster(Vadim)
<LI> Allow creation of sort temp tables > 1 Gig
<LI> Create more system table indexes for faster cache lookups
<LI> fix indexscan() so it does leak memory by not requiring caller to free
<LI> Improve <U>bt</U>binsrch() to handle equal keys better, remove <U>bt</U>firsteq()(Tom)
<LI> Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
float4, numeric/decimal too [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> -Allow optimizer to prefer plans that match ORDER BY
</UL>
<P>
<STRONG>CACHE</STRONG>
<UL>
<LI> Cache most recent query plan(s) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/prepare">prepare</A>]
<LI> Shared catalog cache, reduce lseek()'s by caching table size in shared area
<LI> elog() flushes cache, try invalidating just entries from current xact,
perhaps using invalidation cache
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Allow compression of log and meta data
<LI> Allow char() not to use variable-sized header to reduce disk size
<LI> Do async I/O to do better read-ahead of data
<LI> -Fix memory exhaustion when using many OR's [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cnfify">cnfify</A>]
<LI> Get faster regex() code from Henry Spencer <<A HREF="mailto:henry@zoo.utoronto.ca">henry@zoo.utoronto.ca</A>>
when it is available
<LI> Use mmap() rather than SYSV shared memory(?)
<LI> -Process const = const parts of OR clause in separate pass
<LI> Make oid use oidin/oidout not int4in/int4out in pg_type.h
<LI> Improve Subplan list handling
<LI> Allow Subplans to use efficient joins(hash, merge) with upper variable
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/subquery">subquery</A>]
<LI> use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
places, like GROUP BY, UNIQUE, index processing, etc.
<LI> improve dynamic memory allocation by introducing tuple-context memory
allocation [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>]
<LI> fix memory leak in cache code when non-existant table is referenced
<LI> In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
<LI> pass atttypmod through parser in more cases [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/atttypmod">atttypmod</A>]
<LI> remove duplicate type in/out functions for disk and net
<LI> Allow persistent backends [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/persistent">persistent</A>]
<LI> Misc [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/performance">performance</A>]
</UL>
<H2><A NAME="section-1.4">SOURCE CODE</A></H2>
<UL>
<LI> Add use of 'const' for varibles in source tree
<LI> Fix C optimizer problem where fmgr_ptr calls return different types [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/alpha">alpha</A>]
<LI> -Add needed includes and removed unneeded include files(Bruce)
<LI> Make configure --enable-debug add -g on compile line
<LI> Does Mariposa source contain any other bug fixes?
<LI> Remove SET KSQO option if OR processing is improved(Tom)
</UL>
<HR>
<H3><A NAME="section-1.4.1">Developers who have claimed items are:</A></H3>
<UL>
<LI> Billy is Billy G. Allie <<A HREF="mailto:Bill.Allie@mug.org">Bill.Allie@mug.org</A>>
<LI> Brook is Brook Milligan <<A HREF="mailto:brook@trillium.NMSU.Edu">brook@trillium.NMSU.Edu</A>>
<LI> Bruce is Bruce Momjian<<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>>
<LI> Bryan is Bryan Henderson<<A HREF="mailto:bryanh@giraffe.netgate.net">bryanh@giraffe.netgate.net</A>>
<LI> D'Arcy is D'Arcy J.M. Cain <<A HREF="mailto:darcy@druid.net">darcy@druid.net</A>>
<LI> David is David Hartwig <<A HREF="mailto:daveh@insightdist.com">daveh@insightdist.com</A>>
<LI> Edmund is Edmund Mergl <<A HREF="mailto:E.Mergl@bawue.de">E.Mergl@bawue.de</A>>
<LI> Goran is Goran Thyni <<A HREF="mailto:goran@kyla.kiruna.se">goran@kyla.kiruna.se</A>>
<LI> Hiroshi is Hiroshi Inoue<<A HREF="mailto:Inoue@tpf.co.jp">Inoue@tpf.co.jp</A>>
<LI> Jan is Jan Wieck <<A HREF="mailto:wieck@sapserv.debis.de">wieck@sapserv.debis.de</A>>
<LI> Marc is Marc Fournier <<A HREF="mailto:scrappy@hub.org">scrappy@hub.org</A>>
<LI> Massimo Dal Zotto <<A HREF="mailto:dz@cs.unitn.it">dz@cs.unitn.it</A>>
<LI> Michael is Michael Meskes <<A HREF="mailto:meskes@postgresql.org">meskes@postgresql.org</A>>
<LI> Oleg is Oleg Bartunov <<A HREF="mailto:oleg@sai.msu.su">oleg@sai.msu.su</A>>
<LI> Peter is Peter T Mount <<A HREF="mailto:peter@retep.org.uk">peter@retep.org.uk</A>>
<LI> Ryan is Ryan Bradetich <<A HREF="mailto:rbrad@hpb50023.boi.hp.com">rbrad@hpb50023.boi.hp.com</A>>
<LI> Stefan Simkovics <<A HREF="mailto:ssimkovi@rainbow.studorg.tuwien.ac.at">ssimkovi@rainbow.studorg.tuwien.ac.at</A>>
<LI> Tatsuo is Tatsuo Ishii <<A HREF="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</A>>
<LI> Tom is Tom Lane <<A HREF="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</A>>
<LI> Thomas is Thomas Lockhart <<A HREF="mailto:lockhart@alumni.caltech.edu">lockhart@alumni.caltech.edu</A>>
<LI> TomH is Tom I Helbekkmo <<A HREF="mailto:tih@Hamartun.Priv.NO">tih@Hamartun.Priv.NO</A>>
<LI> Vadim is "Vadim B. Mikheev" <<A HREF="mailto:vadim@krs.ru">vadim@krs.ru</A>>
</UL>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>PostgreSQL TODO list</TITLE>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000"\
ALINK="#0000FF">
<META NAME="generator" CONTENT="txt2html v1.25">
</HEAD>
<BODY>
<H1><A NAME="section-1">TODO list for PostgreSQL</A></H1>
Last updated: Tue Sep 28 00:34:21 EDT 1999
<P>
Current maintainer: Bruce Momjian (<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>)
<P>
The most recent version of this document can be viewed at<BR>
the PostgreSQL web site, <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>.
<P>
A dash(-) marks changes that will appear in the next release.
<P>
Names in brackets "[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]" indicate more detailed information is available in<BR>
the directory pgsql/doc/TODO.detail/ under that name.
<H2><A NAME="section-1.1">RELIABILITY</A></H2>
<P>
<STRONG>RESOURCES</STRONG>
<UL>
<LI> Elog() does not free all its memory(Jan)
<LI> spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
<LI> Recover or force failure when disk space is exhausted
</UL>
<P>
<STRONG>PARSER</STRONG>
<UL>
<LI> Disallow inherited columns with the same name as new columns
<LI> INSERT INTO ... SELECT with AS columns matching result columns problem
<LI> SELECT pg<U>class FROM pg</U>class generates strange error
<LI> Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
<LI> Do not allow bpchar column creation without length
<LI> -Select a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>] FROM test fails, it needs test.a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>]
<LI> -Array index references without table name cause problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/array">array</A>]
<LI> Update table SET table.value = 3 fails(SQL standard says this is OK)
<LI> Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
<LI> SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
<LI> -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
<LI> -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
<LI> UNION with LIMIT fails
<LI> Unique index on base column not honored on inserts from inherited table
INSERT INTO inherit_table (unique<U>index</U>col) VALUES (dup) should fail
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
<LI> CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
<LI> mismatched types in CREATE TABLE ... DEFAULT causes problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/default">default</A>]
<LI> SELECT ... UNION ... ORDER BY fails when sort expr not in result list
<LI> Be smarter about promoting types when UNION merges different data types
<LI> SELECT ... UNION ... GROUP BY fails if column types disagree
<LI> redesign INSERT ... SELECT to have two levels of target list
<LI> -select * from pg_class where oid in (0,-1)
<LI> have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
<LI> prevent primary key of nine columns [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
<LI> SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/distinct">distinct</A>]
<LI> -When using aggregates + GROUP BY, no rows in should yield no rows out
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Views containing aggregates sometimes fail(Jan)
<LI> Views with spaces in view name fail when referenced
<LI> Creating view and inheriting the view causes view* to show
duplicates(inherit)
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> User who can create databases can modify pg_database table
<LI> Plpgsql does not handle quoted mixed-case identifiers
<LI> Fix btree to give a useful elog when key > 1/2 (page - overhead)
<LI> pg_dump should preserve primary key information
<LI> plpgsql regression tests fail on BSD/OS
</UL>
<H2><A NAME="section-1.2">ENHANCEMENTS</A></H2>
<P>
<STRONG>URGENT</STRONG>
<UL>
<LI> Add referential integrity(Jan?)[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> Add OUTER joins, left and right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/outer">outer</A>](Thomas, Bruce)
<LI> Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
<LI> Eliminate limits on query length
<LI> Fix memory leak for expressions?[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>](Tom?)
<LI> -Fix memory leak for aggregates?
</UL>
<P>
<STRONG>ADMIN</STRONG>
<UL>
<LI> Better interface for adding to pg_group
<LI> More access control over who can create tables and access the database
<LI> Test syslog functionality
<LI> Allow elog() to return error codes, not just messages
<LI> Allow international error message support and add error codes
<LI> Generate postmaster pid file and remove flock/fcntl lock code [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
<LI> Add ability to specifiy location of lock/socket files [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
</UL>
<P>
<STRONG>TYPES</STRONG>
<UL>
<LI> Add BIT, BIT VARYING
<LI> Nchar (as distinguished from ordinary varchar),
<LI> Domain capability
<LI> Add STDDEV/VARIANCE() function for standard deviation computation/variance
<LI> Allow compression of large fields or a compressed field type
<LI> Large objects
<UL>
<LI> Fix large object mapping scheme, own typeid or reltype(Peter)
<LI> Allow large text type to use large objects(Peter)
<LI> Not to stuff everything as files in a single directory, hash dirs
<LI> Allow large object vacuuming
<LI> Tables that start with xinv confused to be large objects
</UL>
<LI> Allow pg_descriptions when creating types, tables, columns, and functions
<LI> Add IPv6 capability to INET/CIDR types
<LI> Make a separate SERIAL type?
<LI> Store binary-compatible type information in the system
<LI> Allow user to define char1 column
<LI> Add support for & operator
<LI> Allow LOCALE on a per-column basis, default to ASCII
<LI> Allow array on int8[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]
<LI> Allow nulls in arrays
<LI> Allow arrays to be ORDER'ed
<LI> Remove Money type, add money formatting for decimal type
<LI> Declare typein/out functions in pg_proc with a special "C string" data type
<LI> Add non-large-object binary field
<LI> Add index on NUMERIC/DECIMAL type
<LI> Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
<LI> Functions returning sets don't really work right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Allow DISTINCT on views
<LI> Allow views of aggregate columns
<LI> Allow views with subselects
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
fails index can't store constant parameters
<LI> Allow creation of functional indexes to use default types
<LI> Permissions on indexes - prevent them?
<LI> Allow SQL function indexes
<LI> Add FILLFACTOR to index creation
<LI> Allow indexing of LIKE with localle character sets
<LI> Allow indexing of more than eight columns
</UL>
<P>
<STRONG>COMMANDS</STRONG>
<UL>
<LI> ALTER TABLE ADD COLUMN to inherited table put column in wrong place [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> Add ALTER TABLE DROP/ALTER COLUMN feature
<LI> Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
<P>
NULL specification on table [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cluster">cluster</A>]
<LI> Add SIMILAR TO to allow character classes, 'pg_[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/a-c">a-c</A>]%'
<LI> Auto-destroy sequence on DROP of table with SERIAL(Ryan)
<LI> Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
<LI> Allow INSERT/UPDATE of system-generated oid value for a row
<LI> Allow ESCAPE '\' at the end of LIKE for ANSI compliance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> Rewrite the LIKE handling by rewriting the user string with the
supplied ESCAPE [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> -Move LIKE index optimization handling to the optimizer
<LI> Allow RULE recompilation
<LI> Support UNION/INTERSECT/EXCEPT in sub-selects
<LI> Allow DELETE and UPDATE to use inheritance using tablename*
</UL>
<P>
<STRONG>CLIENTS</STRONG>
<UL>
<LI> Make NULL's come out at the beginning or end depending on the
ORDER BY direction
<LI> Allow flag to control COPY input/output of NULLs
<LI> Update reltuples from COPY command
<LI> Allow psql \copy to allow delimiters
<LI> Add a function to return the last inserted oid, for use in psql scripts
<LI> Allow psql to print nulls as distinct from "" [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/null">null</A>]
</UL>
<P>
<STRONG>EXOTIC FEATURES</STRONG>
<UL>
<LI> Add sql3 recursive unions
<LI> Add the concept of dataspaces
<LI> Add replication of distributed databases
<LI> Allow queries across multiple databases
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Increase identifier length(NAMEDATALEN) if small performance hit
<LI> Allow row re-use without vacuum(Vadim)
<LI> Create a background process for each database that runs while
database is idle, finding superceeded rows, gathering stats and vacuuming
<LI> Add UNIQUE capability to non-btree indexes
<LI> -Certain indexes will not shrink, i.e. oid indexes with many inserts
<LI> Restore unused oid's on backend exit if no one else has gotten oids
<LI> Have UPDATE/DELETE clean out indexes
<LI> Allow WHERE restriction on ctid
<LI> Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
<LI> Allow PQrequestCancel() to terminate when in waiting-for-lock state
<LI> -Transaction log, so re-do log can be on a separate disk by
with after-row images(Vadim) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/logging">logging</A>]
<LI> Populate backend status area and write program to dump status data
<LI> Make oid use unsigned int more reliably, pg_atoi()
<LI> Allow subqueries in target list
<LI> Put sort files, large objects in their own directory
<LI> Do autocommit so always in a transaction block(?)
<LI> Show location of syntax error in query [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/yacc">yacc</A>]
<LI> Redesign the function call interface to handle NULLs better [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
<LI> Document/trigger/rule so changes to pg<U>shadow recreate pg</U>pwd [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/pg_shadow">pg_shadow</A>]
<LI> Missing optimizer selectivities for date, r-tree, etc. [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
<LI> Overhaul bufmgr/lockmgr/transaction manager
<LI> Add PL/Perl(Mark Hollomon)
<LI> Make postgres user have a password by default
<LI> Add configure test to check for C++ need for *.h and namespaces
<LI> Allow BLCKSZ <= 64k, not <= 32k
<LI> redesign UNION structures to have separarate target lists
<LI> Allow multi-level query trees for INSERT INTO ... SELECT
</UL>
<H2><A NAME="section-1.3">PERFORMANCE</A></H2>
<P>
<STRONG>FSYNC</STRONG>
<UL>
<LI> -Allow transaction commits with rollback with no-fsync performance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/fsync">fsync</A>]
<LI> -Prevent fsync in SELECT-only queries
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Use indexes in ORDER BY for restrictive data sets, min(), max()
<LI> Pull requested data directly from indexes, bypassing heap data
<LI> Use index to restrict rows returned by multi-key index when used with
non-consecutive keys or OR clauses, so fewer heap accesses
<LI> -Convert function(constant) into a constant for index use
<LI> Allow LIMIT ability on single-table queries that have no ORDER BY to use
a matching index [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Improve LIMIT processing by using index to limit rows processed [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Have optimizer take LIMIT into account when considering index scans [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Make index creation use psort code, because it is now faster(Vadim)
<LI> Allow creation of sort temp tables > 1 Gig
<LI> Create more system table indexes for faster cache lookups
<LI> fix indexscan() so it does leak memory by not requiring caller to free
<LI> Improve <U>bt</U>binsrch() to handle equal keys better, remove <U>bt</U>firsteq()(Tom)
<LI> Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
float4, numeric/decimal too [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> -Allow optimizer to prefer plans that match ORDER BY
</UL>
<P>
<STRONG>CACHE</STRONG>
<UL>
<LI> Cache most recent query plan(s) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/prepare">prepare</A>]
<LI> Shared catalog cache, reduce lseek()'s by caching table size in shared area
<LI> elog() flushes cache, try invalidating just entries from current xact,
perhaps using invalidation cache
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Allow compression of log and meta data
<LI> Allow char() not to use variable-sized header to reduce disk size
<LI> Do async I/O to do better read-ahead of data
<LI> -Fix memory exhaustion when using many OR's [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cnfify">cnfify</A>]
<LI> Get faster regex() code from Henry Spencer <<A HREF="mailto:henry@zoo.utoronto.ca">henry@zoo.utoronto.ca</A>>
when it is available
<LI> Use mmap() rather than SYSV shared memory(?)
<LI> -Process const = const parts of OR clause in separate pass
<LI> Make oid use oidin/oidout not int4in/int4out in pg_type.h
<LI> Improve Subplan list handling
<LI> Allow Subplans to use efficient joins(hash, merge) with upper variable
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/subquery">subquery</A>]
<LI> use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
places, like GROUP BY, UNIQUE, index processing, etc.
<LI> improve dynamic memory allocation by introducing tuple-context memory
allocation [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>]
<LI> fix memory leak in cache code when non-existant table is referenced
<LI> In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
<LI> pass atttypmod through parser in more cases [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/atttypmod">atttypmod</A>]
<LI> remove duplicate type in/out functions for disk and net
<LI> Allow persistent backends [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/persistent">persistent</A>]
<LI> Misc [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/performance">performance</A>]
</UL>
<H2><A NAME="section-1.4">SOURCE CODE</A></H2>
<UL>
<LI> Add use of 'const' for varibles in source tree
<LI> Fix C optimizer problem where fmgr_ptr calls return different types [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/alpha">alpha</A>]
<LI> -Add needed includes and removed unneeded include files(Bruce)
<LI> Make configure --enable-debug add -g on compile line
<LI> Does Mariposa source contain any other bug fixes?
<LI> Remove SET KSQO option if OR processing is improved(Tom)
</UL>
<HR>
<H3><A NAME="section-1.4.1">Developers who have claimed items are:</A></H3>
<UL>
<LI> Billy is Billy G. Allie <<A HREF="mailto:Bill.Allie@mug.org">Bill.Allie@mug.org</A>>
<LI> Brook is Brook Milligan <<A HREF="mailto:brook@trillium.NMSU.Edu">brook@trillium.NMSU.Edu</A>>
<LI> Bruce is Bruce Momjian<<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>>
<LI> Bryan is Bryan Henderson<<A HREF="mailto:bryanh@giraffe.netgate.net">bryanh@giraffe.netgate.net</A>>
<LI> D'Arcy is D'Arcy J.M. Cain <<A HREF="mailto:darcy@druid.net">darcy@druid.net</A>>
<LI> David is David Hartwig <<A HREF="mailto:daveh@insightdist.com">daveh@insightdist.com</A>>
<LI> Edmund is Edmund Mergl <<A HREF="mailto:E.Mergl@bawue.de">E.Mergl@bawue.de</A>>
<LI> Goran is Goran Thyni <<A HREF="mailto:goran@kyla.kiruna.se">goran@kyla.kiruna.se</A>>
<LI> Hiroshi is Hiroshi Inoue<<A HREF="mailto:Inoue@tpf.co.jp">Inoue@tpf.co.jp</A>>
<LI> Jan is Jan Wieck <<A HREF="mailto:wieck@sapserv.debis.de">wieck@sapserv.debis.de</A>>
<LI> Marc is Marc Fournier <<A HREF="mailto:scrappy@hub.org">scrappy@hub.org</A>>
<LI> Massimo Dal Zotto <<A HREF="mailto:dz@cs.unitn.it">dz@cs.unitn.it</A>>
<LI> Michael is Michael Meskes <<A HREF="mailto:meskes@postgresql.org">meskes@postgresql.org</A>>
<LI> Oleg is Oleg Bartunov <<A HREF="mailto:oleg@sai.msu.su">oleg@sai.msu.su</A>>
<LI> Peter is Peter T Mount <<A HREF="mailto:peter@retep.org.uk">peter@retep.org.uk</A>>
<LI> Ryan is Ryan Bradetich <<A HREF="mailto:rbrad@hpb50023.boi.hp.com">rbrad@hpb50023.boi.hp.com</A>>
<LI> Stefan Simkovics <<A HREF="mailto:ssimkovi@rainbow.studorg.tuwien.ac.at">ssimkovi@rainbow.studorg.tuwien.ac.at</A>>
<LI> Tatsuo is Tatsuo Ishii <<A HREF="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</A>>
<LI> Tom is Tom Lane <<A HREF="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</A>>
<LI> Thomas is Thomas Lockhart <<A HREF="mailto:lockhart@alumni.caltech.edu">lockhart@alumni.caltech.edu</A>>
<LI> TomH is Tom I Helbekkmo <<A HREF="mailto:tih@Hamartun.Priv.NO">tih@Hamartun.Priv.NO</A>>
<LI> Vadim is "Vadim B. Mikheev" <<A HREF="mailto:vadim@krs.ru">vadim@krs.ru</A>>
</UL>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>PostgreSQL TODO list</TITLE>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000"\
ALINK="#0000FF">
<META NAME="generator" CONTENT="txt2html v1.25">
</HEAD>
<BODY>
<H1><A NAME="section-1">TODO list for PostgreSQL</A></H1>
Last updated: Tue Sep 28 00:34:21 EDT 1999
<P>
Current maintainer: Bruce Momjian (<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>)
<P>
The most recent version of this document can be viewed at<BR>
the PostgreSQL web site, <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>.
<P>
A dash(-) marks changes that will appear in the next release.
<P>
Names in brackets "[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]" indicate more detailed information is available in<BR>
the directory pgsql/doc/TODO.detail/ under that name.
<H2><A NAME="section-1.1">RELIABILITY</A></H2>
<P>
<STRONG>RESOURCES</STRONG>
<UL>
<LI> Elog() does not free all its memory(Jan)
<LI> spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
<LI> Recover or force failure when disk space is exhausted
</UL>
<P>
<STRONG>PARSER</STRONG>
<UL>
<LI> Disallow inherited columns with the same name as new columns
<LI> INSERT INTO ... SELECT with AS columns matching result columns problem
<LI> SELECT pg<U>class FROM pg</U>class generates strange error
<LI> Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
<LI> Do not allow bpchar column creation without length
<LI> -Select a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>] FROM test fails, it needs test.a[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/1">1</A>]
<LI> -Array index references without table name cause problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/array">array</A>]
<LI> Update table SET table.value = 3 fails(SQL standard says this is OK)
<LI> Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
<LI> SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
<LI> -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
<LI> -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
<LI> UNION with LIMIT fails
<LI> Unique index on base column not honored on inserts from inherited table
INSERT INTO inherit_table (unique<U>index</U>col) VALUES (dup) should fail
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
<LI> CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
<LI> mismatched types in CREATE TABLE ... DEFAULT causes problems [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/default">default</A>]
<LI> SELECT ... UNION ... ORDER BY fails when sort expr not in result list
<LI> Be smarter about promoting types when UNION merges different data types
<LI> SELECT ... UNION ... GROUP BY fails if column types disagree
<LI> redesign INSERT ... SELECT to have two levels of target list
<LI> -select * from pg_class where oid in (0,-1)
<LI> have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
<LI> prevent primary key of nine columns [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
<LI> SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/distinct">distinct</A>]
<LI> -When using aggregates + GROUP BY, no rows in should yield no rows out
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Views containing aggregates sometimes fail(Jan)
<LI> Views with spaces in view name fail when referenced
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> User who can create databases can modify pg_database table
<LI> Plpgsql does not handle quoted mixed-case identifiers
<LI> Fix btree to give a useful elog when key > 1/2 (page - overhead)
<LI> pg_dump should preserve primary key information
<LI> plpgsql regression tests fail on BSD/OS
</UL>
<H2><A NAME="section-1.2">ENHANCEMENTS</A></H2>
<P>
<STRONG>URGENT</STRONG>
<UL>
<LI> Add referential integrity(Jan?)[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
<LI> Add OUTER joins, left and right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/outer">outer</A>](Thomas, Bruce)
<LI> Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
<LI> Eliminate limits on query length
<LI> Fix memory leak for expressions?[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>](Tom?)
<LI> -Fix memory leak for aggregates?
</UL>
<P>
<STRONG>ADMIN</STRONG>
<UL>
<LI> Better interface for adding to pg_group
<LI> More access control over who can create tables and access the database
<LI> Test syslog functionality
<LI> Allow elog() to return error codes, not just messages
<LI> Allow international error message support and add error codes
<LI> Generate postmaster pid file and remove flock/fcntl lock code [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
<LI> Add ability to specifiy location of lock/socket files [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
</UL>
<P>
<STRONG>TYPES</STRONG>
<UL>
<LI> Add BIT, BIT VARYING
<LI> Nchar (as distinguished from ordinary varchar),
<LI> Domain capability
<LI> Add STDDEV/VARIANCE() function for standard deviation computation/variance
<LI> Allow compression of large fields or a compressed field type
<LI> Large objects
<UL>
<LI> Fix large object mapping scheme, own typeid or reltype(Peter)
<LI> Allow large text type to use large objects(Peter)
<LI> Not to stuff everything as files in a single directory, hash dirs
<LI> Allow large object vacuuming
<LI> Tables that start with xinv confused to be large objects
</UL>
<LI> Allow pg_descriptions when creating types, tables, columns, and functions
<LI> Add IPv6 capability to INET/CIDR types
<LI> Make a separate SERIAL type?
<LI> Store binary-compatible type information in the system
<LI> Allow user to define char1 column
<LI> Add support for & operator
<LI> Allow LOCALE on a per-column basis, default to ASCII
<LI> Allow array on int8[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]
<LI> Allow nulls in arrays
<LI> Allow arrays to be ORDER'ed
<LI> Remove Money type, add money formatting for decimal type
<LI> Declare typein/out functions in pg_proc with a special "C string" data type
<LI> Add non-large-object binary field
<LI> Add index on NUMERIC/DECIMAL type
<LI> Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
<LI> Functions returning sets don't really work right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
</UL>
<P>
<STRONG>VIEWS</STRONG>
<UL>
<LI> Allow DISTINCT on views
<LI> Allow views of aggregate columns
<LI> Allow views with subselects
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
fails index can't store constant parameters
<LI> Allow creation of functional indexes to use default types
<LI> Permissions on indexes - prevent them?
<LI> Allow SQL function indexes
<LI> Add FILLFACTOR to index creation
<LI> Allow indexing of LIKE with localle character sets
<LI> Allow indexing of more than eight columns
</UL>
<P>
<STRONG>COMMANDS</STRONG>
<UL>
<LI> ALTER TABLE ADD COLUMN to inherited table put column in wrong place [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
<LI> Add ALTER TABLE DROP/ALTER COLUMN feature
<LI> Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
<P>
NULL specification on table [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cluster">cluster</A>]
<LI> Add SIMILAR TO to allow character classes, 'pg_[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/a-c">a-c</A>]%'
<LI> Auto-destroy sequence on DROP of table with SERIAL(Ryan)
<LI> Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
<LI> Allow INSERT/UPDATE of system-generated oid value for a row
<LI> Allow ESCAPE '\' at the end of LIKE for ANSI compliance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> Rewrite the LIKE handling by rewriting the user string with the
supplied ESCAPE [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
<LI> -Move LIKE index optimization handling to the optimizer
<LI> Allow RULE recompilation
<LI> Support UNION/INTERSECT/EXCEPT in sub-selects
<LI> Allow DELETE and UPDATE to use inheritance using tablename*
</UL>
<P>
<STRONG>CLIENTS</STRONG>
<UL>
<LI> Make NULL's come out at the beginning or end depending on the
ORDER BY direction
<LI> Allow flag to control COPY input/output of NULLs
<LI> Update reltuples from COPY command
<LI> Allow psql \copy to allow delimiters
<LI> Add a function to return the last inserted oid, for use in psql scripts
<LI> Allow psql to print nulls as distinct from "" [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/null">null</A>]
</UL>
<P>
<STRONG>EXOTIC FEATURES</STRONG>
<UL>
<LI> Add sql3 recursive unions
<LI> Add the concept of dataspaces
<LI> Add replication of distributed databases
<LI> Allow queries across multiple databases
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Increase identifier length(NAMEDATALEN) if small performance hit
<LI> Allow row re-use without vacuum(Vadim)
<LI> Create a background process for each database that runs while
database is idle, finding superceeded rows, gathering stats and vacuuming
<LI> Add UNIQUE capability to non-btree indexes
<LI> -Certain indexes will not shrink, i.e. oid indexes with many inserts
<LI> Restore unused oid's on backend exit if no one else has gotten oids
<LI> Have UPDATE/DELETE clean out indexes
<LI> Allow WHERE restriction on ctid
<LI> Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
<LI> Allow PQrequestCancel() to terminate when in waiting-for-lock state
<LI> -Transaction log, so re-do log can be on a separate disk by
with after-row images(Vadim) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/logging">logging</A>]
<LI> Populate backend status area and write program to dump status data
<LI> Make oid use unsigned int more reliably, pg_atoi()
<LI> Allow subqueries in target list
<LI> Put sort files, large objects in their own directory
<LI> Do autocommit so always in a transaction block(?)
<LI> Show location of syntax error in query [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/yacc">yacc</A>]
<LI> Redesign the function call interface to handle NULLs better [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
<LI> Document/trigger/rule so changes to pg<U>shadow recreate pg</U>pwd [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/pg_shadow">pg_shadow</A>]
<LI> Missing optimizer selectivities for date, r-tree, etc. [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
<LI> Overhaul bufmgr/lockmgr/transaction manager
<LI> Add PL/Perl(Mark Hollomon)
<LI> Make postgres user have a password by default
<LI> Add configure test to check for C++ need for *.h and namespaces
<LI> Allow BLCKSZ <= 64k, not <= 32k
<LI> redesign UNION structures to have separarate target lists
<LI> Allow multi-level query trees for INSERT INTO ... SELECT
</UL>
<H2><A NAME="section-1.3">PERFORMANCE</A></H2>
<P>
<STRONG>FSYNC</STRONG>
<UL>
<LI> -Allow transaction commits with rollback with no-fsync performance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/fsync">fsync</A>]
<LI> -Prevent fsync in SELECT-only queries
</UL>
<P>
<STRONG>INDEXES</STRONG>
<UL>
<LI> Use indexes in ORDER BY for restrictive data sets, min(), max()
<LI> Pull requested data directly from indexes, bypassing heap data
<LI> Use index to restrict rows returned by multi-key index when used with
non-consecutive keys or OR clauses, so fewer heap accesses
<LI> -Convert function(constant) into a constant for index use
<LI> Allow LIMIT ability on single-table queries that have no ORDER BY to use
a matching index [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Improve LIMIT processing by using index to limit rows processed [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Have optimizer take LIMIT into account when considering index scans [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/limit">limit</A>]
<LI> Make index creation use psort code, because it is now faster(Vadim)
<LI> Allow creation of sort temp tables > 1 Gig
<LI> Create more system table indexes for faster cache lookups
<LI> fix indexscan() so it does leak memory by not requiring caller to free
<LI> Improve <U>bt</U>binsrch() to handle equal keys better, remove <U>bt</U>firsteq()(Tom)
<LI> Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
float4, numeric/decimal too [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
<LI> -Allow optimizer to prefer plans that match ORDER BY
</UL>
<P>
<STRONG>CACHE</STRONG>
<UL>
<LI> Cache most recent query plan(s) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/prepare">prepare</A>]
<LI> Shared catalog cache, reduce lseek()'s by caching table size in shared area
<LI> elog() flushes cache, try invalidating just entries from current xact,
perhaps using invalidation cache
</UL>
<P>
<STRONG>MISC</STRONG>
<UL>
<LI> Allow compression of log and meta data
<LI> Allow char() not to use variable-sized header to reduce disk size
<LI> Do async I/O to do better read-ahead of data
<LI> -Fix memory exhaustion when using many OR's [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cnfify">cnfify</A>]
<LI> Get faster regex() code from Henry Spencer <<A HREF="mailto:henry@zoo.utoronto.ca">henry@zoo.utoronto.ca</A>>
when it is available
<LI> Use mmap() rather than SYSV shared memory(?)
<LI> -Process const = const parts of OR clause in separate pass
<LI> Make oid use oidin/oidout not int4in/int4out in pg_type.h
<LI> Improve Subplan list handling
<LI> Allow Subplans to use efficient joins(hash, merge) with upper variable
[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/subquery">subquery</A>]
<LI> use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
places, like GROUP BY, UNIQUE, index processing, etc.
<LI> improve dynamic memory allocation by introducing tuple-context memory
allocation [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>]
<LI> fix memory leak in cache code when non-existant table is referenced
<LI> In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
<LI> pass atttypmod through parser in more cases [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/atttypmod">atttypmod</A>]
<LI> remove duplicate type in/out functions for disk and net
<LI> Allow persistent backends [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/persistent">persistent</A>]
<LI> Misc [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/performance">performance</A>]
</UL>
<H2><A NAME="section-1.4">SOURCE CODE</A></H2>
<UL>
<LI> Add use of 'const' for varibles in source tree
<LI> Fix C optimizer problem where fmgr_ptr calls return different types [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/alpha">alpha</A>]
<LI> -Add needed includes and removed unneeded include files(Bruce)
<LI> Make configure --enable-debug add -g on compile line
<LI> Does Mariposa source contain any other bug fixes?
<LI> Remove SET KSQO option if OR processing is improved(Tom)
</UL>
<HR>
<H3><A NAME="section-1.4.1">Developers who have claimed items are:</A></H3>
<UL>
<LI> Billy is Billy G. Allie <<A HREF="mailto:Bill.Allie@mug.org">Bill.Allie@mug.org</A>>
<LI> Brook is Brook Milligan <<A HREF="mailto:brook@trillium.NMSU.Edu">brook@trillium.NMSU.Edu</A>>
<LI> Bruce is Bruce Momjian<<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>>
<LI> Bryan is Bryan Henderson<<A HREF="mailto:bryanh@giraffe.netgate.net">bryanh@giraffe.netgate.net</A>>
<LI> D'Arcy is D'Arcy J.M. Cain <<A HREF="mailto:darcy@druid.net">darcy@druid.net</A>>
<LI> David is David Hartwig <<A HREF="mailto:daveh@insightdist.com">daveh@insightdist.com</A>>
<LI> Edmund is Edmund Mergl <<A HREF="mailto:E.Mergl@bawue.de">E.Mergl@bawue.de</A>>
<LI> Goran is Goran Thyni <<A HREF="mailto:goran@kyla.kiruna.se">goran@kyla.kiruna.se</A>>
<LI> Hiroshi is Hiroshi Inoue<<A HREF="mailto:Inoue@tpf.co.jp">Inoue@tpf.co.jp</A>>
<LI> Jan is Jan Wieck <<A HREF="mailto:wieck@sapserv.debis.de">wieck@sapserv.debis.de</A>>
<LI> Marc is Marc Fournier <<A HREF="mailto:scrappy@hub.org">scrappy@hub.org</A>>
<LI> Massimo Dal Zotto <<A HREF="mailto:dz@cs.unitn.it">dz@cs.unitn.it</A>>
<LI> Michael is Michael Meskes <<A HREF="mailto:meskes@postgresql.org">meskes@postgresql.org</A>>
<LI> Oleg is Oleg Bartunov <<A HREF="mailto:oleg@sai.msu.su">oleg@sai.msu.su</A>>
<LI> Peter is Peter T Mount <<A HREF="mailto:peter@retep.org.uk">peter@retep.org.uk</A>>
<LI> Ryan is Ryan Bradetich <<A HREF="mailto:rbrad@hpb50023.boi.hp.com">rbrad@hpb50023.boi.hp.com</A>>
<LI> Stefan Simkovics <<A HREF="mailto:ssimkovi@rainbow.studorg.tuwien.ac.at">ssimkovi@rainbow.studorg.tuwien.ac.at</A>>
<LI> Tatsuo is Tatsuo Ishii <<A HREF="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</A>>
<LI> Tom is Tom Lane <<A HREF="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</A>>
<LI> Thomas is Thomas Lockhart <<A HREF="mailto:lockhart@alumni.caltech.edu">lockhart@alumni.caltech.edu</A>>
<LI> TomH is Tom I Helbekkmo <<A HREF="mailto:tih@Hamartun.Priv.NO">tih@Hamartun.Priv.NO</A>>
<LI> Vadim is "Vadim B. Mikheev" <<A HREF="mailto:vadim@krs.ru">vadim@krs.ru</A>>
</UL>
</BODY>
</HTML>
functions. One problem that I have encountered with the function
manager is that it does not allow the user to define type conversion
functions that convert between user types. For instance if mytype1,
mytype2, and mytype3 are three Postgresql user types, and if I wish to
define Postgresql conversion functions like
I run into problems, because the Postgresql dynamic loader would look
for a single link symbol, mytype3, for both pieces of object code. If
I just change the name of one of the Postgresql functions (to make the
symbols distinct), the automatic type conversion that Postgresql uses,
for example, when matching operators to arguments no longer finds the
type conversion function.
The solution that I propose, and have implemented in the attatched
patch extends the CREATE FUNCTION syntax as follows. In the first case
above I use the link symbol mytype2_to_mytype3 for the link object
that implements the first conversion function, and define the
Postgresql operator with the following syntax
The patch includes changes to the parser to include the altered
syntax, changes to the ProcedureStmt node in nodes/parsenodes.h,
changes to commands/define.c to handle the extra information in the AS
clause, and changes to utils/fmgr/dfmgr.c that alter the way that the
dynamic loader figures out what link symbol to use. I store the
string for the link symbol in the prosrc text attribute of the pg_proc
table which is currently unused in rows that reference dynamically
loaded
functions.
Bernie Frankpitt
now that sequence names are properly quoted for field defaults, mixed
case sequence names are generated. These are properly quoted in the
CREATE SEQUENCE lines, but not in the SELECT nextval lines, as per
below:
CREATE SEQUENCE "Teams_TeamID_seq" start 10 increment 1 maxvalue
2147483647 minvalue 1 cache 1 ;
SELECT nextval ('Teams_TeamID_seq');
This needs to be:
SELECT nextval ('"Teams_TeamID_seq"');
Patch included below.
--
Ross J. Reedstrom, Ph.D., <reedstrm@rice.edu>
and fix_opids processing to a single recursive pass over the plan tree
executed at the very tail end of planning, rather than haphazardly here
and there at different places. Now that tlist Vars do not get modified
until the very end, it's possible to get rid of the klugy var_equal and
match_varid partial-matching routines, and just use plain equal()
throughout the optimizer. This is a step towards allowing merge and
hash joins to be done on expressions instead of only Vars ...