Bruce Momjian [Sun, 4 Aug 2002 05:11:37 +0000 (05:11 +0000)]
[ Previous patch reversed.]
Please use this patch instead of my previously submitted one.
It is just remerged against HEAD for new alter_table.out stuff.
Another reason this patch is useful for _interactive_ users: imagine a
view based on a many way join. Imagine creating a complicated insert
rule that inserts into all the joined tables and when you insert you get
a check failure, but you need to know which actual table the constraint
was on that failed!
Bruce Momjian [Sun, 4 Aug 2002 05:09:36 +0000 (05:09 +0000)]
This patch fixes a probably harmless write of uninitialized memory in
the statistics collector and makes a number of corrections to the
documentation for SET, SHOW, and COPY.
Bruce Momjian [Sun, 4 Aug 2002 05:02:50 +0000 (05:02 +0000)]
please find attached patch to current CVS ( contrib/ltree )
Changes:
July 31, 2002
Now works on 64-bit platforms.
Added function lca - lowest common ancestor
Version for 7.2 is distributed as separate package -
http://www.sai.msu.su/~megera/postgres/gist/ltree/ltree-7.2.tar.gz
Bruce Momjian [Sun, 4 Aug 2002 04:31:44 +0000 (04:31 +0000)]
The attached patch implements START TRANSACTION, per SQL99. The
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.
Bruce Momjian [Sun, 4 Aug 2002 04:28:10 +0000 (04:28 +0000)]
This patch fixes in intermittent failure in the regression tests:
there was a race condition between the "alter_table" and "rules"
regression tests. Depending on scheduling, sometimes an ALTER
TABLE command would operate on a relation created by the "rules"
tests, leading to unexpected results.
Bruce Momjian [Sun, 4 Aug 2002 03:59:09 +0000 (03:59 +0000)]
I send a simple patch for PL/pgSQL parser which allow now to use
whitespaces in identifers of any kind(table names,attribute
names,variables ...) in Pl/pgSQL procedural language.Explicit definition
of bug can be found in Re: [HACKERS] Bug of PL/pgSQL parser
TODO item completed:
o -Fix PL/PgSQL to handle quoted mixed-case identifiers
Tom Lane [Fri, 2 Aug 2002 22:36:05 +0000 (22:36 +0000)]
When compiling with --enable-cassert, check for reference count leaks
in the relcache. It's rather silly that we have reference count leak
checks in bufmgr and in catcache, but not in relcache which will normally
have many fewer entries. Chris K-L would have caught at least one bug
in his recent DROP patch if he'd had this.
Tom Lane [Fri, 2 Aug 2002 21:54:34 +0000 (21:54 +0000)]
RemoveAttrDefaultById() neglected to obtain exclusive lock on the
relation being modified. In most paths of control we'd already have
such a lock, but if we were dropping the default due to a cascaded
delete of some function it depended on, maybe not.
Tom Lane [Fri, 2 Aug 2002 18:15:10 +0000 (18:15 +0000)]
ALTER TABLE DROP COLUMN works. Patch by Christopher Kings-Lynne,
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.
Tom Lane [Wed, 31 Jul 2002 17:19:54 +0000 (17:19 +0000)]
Instead of having a configure-time DEFAULT_ATTSTATTARGET, store -1 in
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.
Tom Lane [Tue, 30 Jul 2002 21:56:04 +0000 (21:56 +0000)]
Teach pg_dump to dump user-defined operator classes. For the moment,
this only works against 7.3 or later databases; the pushups required
to do it without regprocedure/regtype/etc seem more trouble than they're
worth, considering that existing users aren't expecting pg_dump support
for this.
Bruce Momjian [Tue, 30 Jul 2002 16:55:45 +0000 (16:55 +0000)]
The attached patch removes the last remnants of support for
'tioga recipes', whatever those are -- Peter E. killed most
of it a couple days ago, but this patch removes the rest. Most
of it was #ifdef'ed out anyway.
Bruce Momjian [Tue, 30 Jul 2002 16:55:06 +0000 (16:55 +0000)]
IMPROVED VERSION APPLIED:
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.
Bruce Momjian [Tue, 30 Jul 2002 16:35:05 +0000 (16:35 +0000)]
Added support for schemas and quotes in tab-complete.c, as well as
a few other things:
* Made all references to the pg_* tables absolute, by specifying
the pg_catalog schema.
* Added SCHEMA as a create/delete completion option.
* Added SCHEMA completion as: SELECT nspname FROM
pg_catalog.pg_namespace
WHERE substr(nspname,1,%d)='%s'
* Added completion of "INSERT INTO <table> (" with attribute names.
* Added completion of "INSERT INTO <table> (attribs)" with
VALUES or SELECT
* Added limited locking completion: only for one table:
"LOCK" and "LOCK TABLE" now both get a completion list of tables
Complete with "IN" for LOCK [TABLE] <table>
Complete LOCK [TABLE] <table> IN with a lock mode
* Added a very simple WHERE finisher that uses the previous word
as a table lookup for attributes.
* Added quote support when parsing "previous words". In other words,
hitting tab after INSERT INTO "foo bar baby"
now does the right thing and recognizes "foo bar baby" as one word.
Letting tab-complete quote things that should be quoted seems to be
temporarily ifdef'ed out due to readline compatibility problems.
Can anyone elaborate on this?
Bruce Momjian [Tue, 30 Jul 2002 16:33:21 +0000 (16:33 +0000)]
This should fix a bug where a row that was updated or
deleted that had another row inserted/updated to its old
value during the same statement or other statements before the
integrity check for noaction would incorrectly error. This
could happen in deferred constraints or due to triggers or
functions. It's effectively a reworking of the previous patch that
did a not exists to instead do a separate check.
Tom Lane [Tue, 30 Jul 2002 16:33:08 +0000 (16:33 +0000)]
Since we're depending on %option noyywrap in the main scanner now,
we may as well use it in all our flex files. Make all the flex files
have a consistent set of options.
Bruce Momjian [Tue, 30 Jul 2002 16:31:11 +0000 (16:31 +0000)]
As mentioned above, here is my contrib/tablefunc patch. It includes
three functions which exercise the tablefunc API.
show_all_settings()
- returns the same information as SHOW ALL, but as a query result
normal_rand(int numvals, float8 mean, float8 stddev, int seed)
- returns a set of normally distributed float8 values
- This routine implements Algorithm P (Polar method for normal
deviates) from Knuth's _The_Art_of_Computer_Programming_, Volume 2,
3rd ed., pages 122-126. Knuth cites his source as "The polar
method", G. E. P. Box, M. E. Muller, and G. Marsaglia,
_Annals_Math,_Stat._ 29 (1958), 610-611.
crosstabN(text sql)
- returns a set of row_name plus N category value columns
- crosstab2(), crosstab3(), and crosstab4() are defined for you,
but you can create additional crosstab functions per directions
in the README.
Bruce Momjian [Tue, 30 Jul 2002 16:20:03 +0000 (16:20 +0000)]
Here are two patches. The guc_and_tablefunc patch addresses the two
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.
Tom Lane [Tue, 30 Jul 2002 05:24:56 +0000 (05:24 +0000)]
Rewrite xindex.sgml for CREATE OPERATOR CLASS. catalogs.sgml finally
contains descriptions of every single system table. Update 'complex'
tutorial example too.
Tom Lane [Mon, 29 Jul 2002 23:46:35 +0000 (23:46 +0000)]
Centralize code for interpreting schema references, which had gotten
copied more places than I first thought it would. This fixes a bug:
a couple of these places were neglecting to enforce USAGE access on
explicitly-referenced schemas.
Tom Lane [Mon, 29 Jul 2002 22:14:11 +0000 (22:14 +0000)]
Implement CREATE/DROP OPERATOR CLASS. Work still remains: need more
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.
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.)
Barry Lind [Tue, 23 Jul 2002 03:59:55 +0000 (03:59 +0000)]
Initial restructuring to add jdbc3 support. There was a significant amount
of duplicated code between the jdbc1 and jdbc2. This checkin restructures
the code so that the duplication is removed so that the jdbc3 support
can be added without adding yet another copy of everything. Also many
classes were renamed to avoid confusion with multiple different objects
having the same name. The timestamp tests were also updated to add support
for testing timestamp without time zone in addition to timestamp with time zone
Tom Lane [Sat, 20 Jul 2002 19:55:38 +0000 (19:55 +0000)]
Tweak CreateTrigger() so that the OID used in the name of an
RI_ConstraintTrigger is the same OID assigned to the pg_trigger row.
This reduces consumption of OIDs and may ease debugging.
Bruce Momjian [Sat, 20 Jul 2002 16:45:07 +0000 (16:45 +0000)]
Mark items as done:
> * -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)