Commit Graph

13110 Commits

Author SHA1 Message Date
Tom Lane b084cc3504 Cause schema-qualified FROM items and schema-qualified variable references
to behave according to SQL92 (or according to my current understanding
of same, anyway).  Per pghackers discussion way back in March 2002:
thread 'Do FROM items of different schemas conflict?'
2002-08-08 01:44:31 +00:00
Tom Lane e42f8e32e9 Clean up plpgsql identifier handling: process quoted identifiers
correctly, truncate to NAMEDATALEN where needed, allow whitespace
around dots in qualified identifiers.  Get rid of T_RECFIELD and
T_TGARGV token categories, which weren't accomplishing anything
except to create room for sins of omission in the grammar, ie,
places that should have allowed them and didn't.  Fix a few other
bugs en passant.
2002-08-08 01:36:05 +00:00
Tom Lane 13e8be42bd parseTypeString wasn't quite paranoid enough. 2002-08-08 01:22:35 +00:00
Tom Lane c1003339d6 Fix permission checking for temp-table namespace. 2002-08-07 21:45:02 +00:00
Tom Lane dfef56a92f Improve 'failed to initialize' messages. 2002-08-07 17:26:24 +00:00
Peter Eisentraut e52a98091f Updated translation from Dennis Bjorklund <db@zigo.dhs.org> 2002-08-06 21:13:44 +00:00
Tom Lane ba053de197 Still more paranoia in PageAddItem: disallow specification of an item
offset past the last-used-item-plus-one, since that would result in
leaving uninitialized holes in the item pointer array.  AFAICT the only
place that was depending on this was btree index build, which was being
cavalier about when to fill in the P_HIKEY pointer; easily fixed.
Also a small performance improvement: shuffle itemid's by means of
memmove, not a one-at-a-time loop.
2002-08-06 19:41:23 +00:00
Tom Lane 4038e8610c Remove no-longer-used PageManagerMode enum. 2002-08-06 19:37:10 +00:00
Tom Lane b74f61aabe Move pg_convert3 declaration to suppress compile warning. Really
pg_convert3 does not belong in a backend/catalog file at all, IMHO;
it should be in utils/adt.
2002-08-06 14:11:06 +00:00
Tatsuo Ishii 6206a880cf Add SQL99 CONVERT() function. 2002-08-06 05:40:47 +00:00
Bruce Momjian 34f03b1630 Patch for current CVS. It add test of lca() to ltree test suite.
Teodor Sigaev
2002-08-06 05:35:29 +00:00
Bruce Momjian 683b0d3add Of course, the simple change has ripple effects! Here's a patch for the
rangefunc regression test for the new behavior.

Joe Conway
2002-08-06 05:34:46 +00:00
Bruce Momjian 4f63e11646 >> Hm. I'd sort of expect the "z" to become both the table and column
>> alias in this case.  What do you think?
>
> I guess that would make sense. I'll make a separate patch just for
that
> change if that's OK.
>

Simple change -- patch attached.

test=# select * from myfoo1() as z;
  z
----
   1
   2
   3
(3 rows)

Joe Conway
2002-08-06 05:34:10 +00:00
Bruce Momjian dd6513a5b6 The attached patch disallows the use of coldeflists for functions that
don't return type RECORD. It also catches a core dump condition when a
function returning RECORD had an alias list instead of a coldeflist.

Now both conditions throw an ERROR.

Joe Conway
2002-08-06 05:33:29 +00:00
Bruce Momjian 7b30ed8fa4 This patch fixes two typos in the documentation for the newly added
START TRANSACTION command.

Neil Conway
2002-08-06 05:32:16 +00:00
Bruce Momjian a6c7681997 This patch changes the behavior of PostgreSQL so that if any queries are
executed in an implicitely aborted transaction (e.g. after an occur
occurs), we return an error (and not just a warning). For example:

nconway=# begin;
BEGIN
nconway=# insert; -- syntax error
ERROR:  parser: parse error at or near ";"
nconway=# select * from a;
ERROR:  current transaction is aborted, queries ignored until end of
transaction block

The old behavior was:

nconway=# begin;
BEGIN
nconway=# insert;
ERROR:  parser: parse error at or near ";"
nconway=# select * from a;
WARNING:  current transaction is aborted, queries ignored until end
of transaction block
*ABORT STATE*

Which can be confusing: if the client isn't paying careful attention,
they will conclude that the query has executed (because no error is
returned).

Neil Conway
2002-08-06 05:24:04 +00:00
Tom Lane 5df307c778 Restructure local-buffer handling per recent pghackers discussion.
The local buffer manager is no longer used for newly-created relations
(unless they are TEMP); a new non-TEMP relation goes through the shared
bufmgr and thus will participate normally in checkpoints.  But TEMP relations
use the local buffer manager throughout their lifespan.  Also, operations
in TEMP relations are not logged in WAL, thus improving performance.
Since it's no longer necessary to fsync relations as they move out of the
local buffers into shared buffers, quite a lot of smgr.c/md.c/fd.c code
is no longer needed and has been removed: there's no concept of a dirty
relation anymore in md.c/fd.c, and we never fsync anything but WAL.
Still TODO: improve local buffer management algorithms so that it would
be reasonable to increase NLocBuffer.
2002-08-06 02:36:35 +00:00
Peter Eisentraut 35cd432b18 Forgot to add/remove files. 2002-08-05 19:44:58 +00:00
Peter Eisentraut 6f4a9fb119 Add User's Guide chapters on Data Definition and Data Manipulation.
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.
2002-08-05 19:43:31 +00:00
Tom Lane 15fe086fba Restructure system-catalog index updating logic. Instead of having
hardwired lists of index names for each catalog, use the relcache's
mechanism for caching lists of OIDs of indexes of any table.  This
reduces the common case of updating system catalog indexes to a single
line, makes it much easier to add a new system index (in fact, you
can now do so on-the-fly if you want to), and as a nice side benefit
improves performance a little.  Per recent pghackers discussion.
2002-08-05 03:29:17 +00:00
Tom Lane 07f9682de4 Preliminary code review for anonymous-composite-types patch: fix breakage
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.
2002-08-05 02:30:50 +00:00
Thomas G. Lockhart ac1a3dcf24 Fix compilation problem with assert checking enabled for recent xlog
location feature.
2002-08-05 01:24:16 +00:00
Tom Lane 0fe931a3e0 Code review for anonymous-functions patch --- clean up some confusion
in checkretval about which paths are for base or complex return type.
2002-08-05 00:21:27 +00:00
Tom Lane 44582cd879 Temporary solution for XLogDir breakage. 2002-08-04 23:56:01 +00:00
Tom Lane 1be014313a Fix merge failures for anonymous-type patch. From Joe Conway. 2002-08-04 23:49:59 +00:00
Tom Lane e053d2071d Fix broken pg_backend_pid reference, per Joe Conway. 2002-08-04 23:46:38 +00:00
Bruce Momjian 32465bfc75 Another backend_pid rename. 2002-08-04 20:01:33 +00:00
Bruce Momjian 58c227693d Fix compile failures for FRS composite tyhpe patch until Joe can fix it. 2002-08-04 20:00:15 +00:00
Bruce Momjian d7859a9570 Rename backend_pid to pg_backend_pid, move docs to monitoring section. 2002-08-04 19:51:30 +00:00
Bruce Momjian 9218689b69 Attached are two patches to implement and document anonymous composite
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
2002-08-04 19:48:11 +00:00
Tom Lane 35d39ba081 Fix obsolete comment. 2002-08-04 18:12:15 +00:00
Thomas G. Lockhart ffef720670 Minor clarification or fix of typos. 2002-08-04 06:54:10 +00:00
Thomas G. Lockhart c755f6027f Implement WAL log location control using "-X" or PGXLOG. 2002-08-04 06:53:10 +00:00
Thomas G. Lockhart eb121ba2cf Implement IS OF and IS NOT OF type predicate.
Can now do queries of the form: SELECT value IS OF (integer, float8);
Define macros for handling typmod manipulation for date/time types.
 Should be more robust than all of that brute-force inline code.
Rename macros for masking and typmod manipulation to put TIMESTAMP_
 or INTERVAL_ in front of the macro name, to reduce the possibility
 of name space collisions.
Allow bit string constants without fully-specified length declaration.
Try implementing CREATE TABLE/OF as a mapping to inheritance.
 May be appropriate, or may be replace later with something more exactly
 like one might expect from databases without the feature.
2002-08-04 06:51:23 +00:00
Thomas G. Lockhart 7c1e67bd52 Implement IS OF type predicate. Can now do queries of the form:
select value IS OF (integer, float8);
2002-08-04 06:46:12 +00:00
Thomas G. Lockhart b71310d8e0 Add guard code to protect from buffer overruns on long date/time input
strings. Should go back in and look at doing this a bit more elegantly
 and (hopefully) cheaper. Probably not too bad anyway, but it seems a
 shame to scan the strings twice: once for length for this buffer overrun
 protection, and once to parse the line.
Remove use of pow() in date/time handling; was already gone from everything
 *but* the time data types.
Define macros for handling typmod manipulation for date/time types.
 Should be more robust than all of that brute-force inline code.
Rename macros for masking and typmod manipulation to put TIMESTAMP_
 or INTERVAL_ in front of the macro name, to reduce the possibility
 of name space collisions.
2002-08-04 06:44:47 +00:00
Thomas G. Lockhart e025bb7a72 Define macros for handling typmod manipulation for date/time types.
Should be more robust than all of that brute-force inline code.
Rename macros for masking and typmod manipulation to put TIMESTAMP_
 or INTERVAL_ in front of the macro name, to reduce the possibility
 of name space collisions.
2002-08-04 06:42:18 +00:00
Thomas G. Lockhart 043f9eb90a Implement hex literal conversion to bit string literal.
May not be the long-term solution (some continuing discussion with
 Peter E.) but better than the current mapping of a conversion to integer
 which I'd put in years ago before we had any bit string types at all.
This is already supported in the bit string implementation elsewhere.
2002-08-04 06:36:18 +00:00
Thomas G. Lockhart ce5dc562e6 Allow bit string constants without fully-specified length declaration.
Implement conversion between 8-byte integers and bit strings.
 Similar to what is done for 4-byte integers.
2002-08-04 06:33:59 +00:00
Thomas G. Lockhart af704cdfb4 Implement WAL log location control using "-X" or PGXLOG. 2002-08-04 06:26:38 +00:00
Thomas G. Lockhart a19d9d3c4c Add IS OF type predicate. 2002-08-04 06:17:29 +00:00
Thomas G. Lockhart 6045f39bfd Add Myannar Time, Iran Time variant name, and Marquesas Time. 2002-08-04 06:15:45 +00:00
Tom Lane 0a4fc8556c Fix broken markup. 2002-08-04 05:46:02 +00:00
Tom Lane 5f9ba042a7 Neil's patch claimed a column list didn't work for COPY BINARY.
Which was true when he submitted it, but is so no longer.
2002-08-04 05:22:02 +00:00
Bruce Momjian 7926259de3 Add missing file; new docs for start_transaction. 2002-08-04 05:14:06 +00:00
Bruce Momjian 4132106055 Tom Lane:
>       please find attached patch to current CVS ( contrib/ltree)
>       Version for 7.2 is distributed as separate package -

I believe that patch also intended to remove contrib/ltree/patch.72
2002-08-04 05:12:43 +00:00
Bruce Momjian 10f1f709ab [ 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!

Christopher Kings-Lynne
2002-08-04 05:11:37 +00:00
Bruce Momjian 6b64704e4f 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.

Neil Conway
2002-08-04 05:09:36 +00:00
Bruce Momjian 7312c19ab5 Change messages like this:
ERROR:  ExecInsert: rejected due to CHECK constraint insert_con

To be like this:

ERROR:  ExecInsert: rejected due to CHECK constraint "insert_con" on
"insert_tbl"

Updated regression tests to match.

I got sick of seeing 'rejected due to CHECK constraint "$1" in my log and
not being able to find the bug in our website code...

Christopher Kings-Lynne
2002-08-04 05:04:40 +00:00
Bruce Momjian ce5bb92346 This trivial patch fixes a small memory leak in pg_dump.
Neil Conway
2002-08-04 05:03:29 +00:00