Tom Lane [Tue, 12 Sep 2000 21:07:18 +0000 (21:07 +0000)]
First cut at full support for OUTER JOINs. There are still a few loose
ends to clean up (see my message of same date to pghackers), but mostly
it works. INITDB REQUIRED!
Bruce Momjian [Tue, 12 Sep 2000 18:56:04 +0000 (18:56 +0000)]
As if my JDBC patch hasn't already caused enough grief, there is now a
one-line change necessary. Due to the Mark Holloman "New Relkind for
Views" patch, my support for views in the driver will need to be updated
to match. The change to DatabaseMetaData.getTableTypes[][] is as
follows:
- {"VIEW", "(relkind='r' and relhasrules='t' and relname !~
'^pg_' and relname !~ '^xinv')"},
+ {"VIEW", "(relkind='v' and relname !~ '^pg_' and relname
!~ '^xinv')"},
Add regression tests for date, time, and time with time zone types.
Modify date->timestamp conversion to use mktime().
This should do better than before around Daylight Savings Time
transitions.
Bruce Momjian [Tue, 12 Sep 2000 05:18:25 +0000 (05:18 +0000)]
Attached is a patch that prevents a NullPointerException in the JDBC
driver if the translations files have not been properly installed. (We
carefully avoided installing the translations file in a controlled
environment here specifically to test for such a bug. :-)
See attached description for more details.
William
--
William Webber william@peopleweb.net.au
Bruce Momjian [Tue, 12 Sep 2000 04:58:50 +0000 (04:58 +0000)]
Attached are a patch to allow the charset encoding used by the JDBC
driver to be set, and a description of said patch. Please refer to
the latter for more information.
William
--
William Webber william@peopleweb.net.au
Bruce Momjian [Tue, 12 Sep 2000 04:51:43 +0000 (04:51 +0000)]
Applied to jdbc1 and jdbc2.
This is a patch which lets the DatabaseMetaData return the object type
when getTables(....) is called. It does not really fix any bug, but it
fills in some functionality that should be there anyway. The diff
included here is off of the CVS as of just now :)
----------------------------------------------------------------
Travis Bauer | CS Grad Student | IU |www.cs.indiana.edu/~trbauer
----------------------------------------------------------------
Bruce Momjian [Tue, 12 Sep 2000 04:49:17 +0000 (04:49 +0000)]
This patch implements a different "relkind"
for views. Views are now have a "relkind" of
RELKIND_VIEW instead of RELKIND_RELATION.
Also, views no longer have actual heap storage
files.
The following changes were made
1. CREATE VIEW sets the new relkind
2. The executor complains if a DELETE or
INSERT references a view.
3. DROP RULE complains if an attempt is made
to delete a view SELECT rule.
4. CREATE RULE "_RETmytable" AS ON SELECT TO mytable DO INSTEAD ...
1. checks to make sure mytable is empty.
2. sets the relkind to RELKIND_VIEW.
3. deletes the heap storage files.
5. LOCK myview is not allowed. :)
6. the regression test type_sanity was changed to
account for the new relkind value.
7. CREATE INDEX ON myview ... is not allowed.
8. VACUUM myview is not allowed.
VACUUM automatically skips views when do the entire
database.
9. TRUNCATE myview is not allowed.
THINGS LEFT TO THINK ABOUT
o pg_views
o pg_dump
o pgsql (\d \dv)
o Do we really want to be able to inherit from views?
Bruce Momjian [Tue, 12 Sep 2000 04:28:30 +0000 (04:28 +0000)]
This patch, when applied in src/pl will unbreak plperl in
7.0.2 release. Sorry, if that's fixed ages ago - I don't track
development versions of PostgreSQL.
Patch is just a little bit tested (some valid functions created and
successfully run as well as some erroneous ones created and emitted proper
error messages when used).
My platform is FreeBSD 5.0-CURRENT (with perl 5.6.0 provided in the
base system).
Bruce Momjian [Tue, 12 Sep 2000 04:16:59 +0000 (04:16 +0000)]
This patch for the 7.0.2 JDBC interface addresses four issues I
encountered while getting my reporting tool up and running with the
driver. All changes are in the DatabaseMetaData class.
Problem: The getDatabaseProductVersion() method was returning "6.5.2"
Resolution: Changed it to return "7.0.2"
Problem: A call to getTables() with an unsupported table type (in the
String array) resulted in a malformed SQL statement and subsequent
parsing error
Resolution: Unsupported table types are now ignored without error
Problem: In a getTables() call, tables and views were both returned by
the "TABLE" table type, and the "VIEW" table type was unsupported
Resolution: Changed the "TABLE" type to return only physical tables and
added support for the "VIEW" table type (returning only views)
Problem: The getIdentifierQuoteString() method was returning null
Resolution: This method now returns a double-quote
Bruce Momjian [Tue, 12 Sep 2000 04:15:58 +0000 (04:15 +0000)]
O.K. -
Here's the multibyte aware version of my patch to fix the truncation
of the rulename autogenerated during a CREATE VIEW. I've modified all
the places in the backend that want to construct the rulename to use
the MakeRetrieveViewRuleName(), where I put the #ifdef MULTIBYTE, so
that's the only place that knows how to construct a view rulename. Except
pg_dump, where I replicated the code, since it's a standalone binary.
The only effect the enduser will see is that views with names len(name)
> NAMEDATALEN-4 will fail to be created, if the derived rulename clases
with an existing rule: i.e. the user is trying to create two views with
long names whose first difference is past NAMEDATALEN-4 (but before
NAMEDATALEN: that'll error out after the viewname truncation.) In no
case will the user get left with a table without a view rule, as the
current code does.
Bruce Momjian [Tue, 12 Sep 2000 04:12:47 +0000 (04:12 +0000)]
Irix fix:
The regression tests abstime, horology, int2, int4, and tinterval fail
by default. They will pass if comparison is made to one of the
variant expected/*.out files.
(A related problem is that the geometry test fails. This seems to be
just a matter of FP precision but more rigorous inspection is needed.
No existing expected/geometry-*.out variant matches.)
Code cleanup of user name and user id handling in the backend. The current
user is now defined in terms of the user id, the user name is only computed
upon request (for display purposes). This is kind of the opposite of the
previous state, which would maintain the user name and compute the user id
for permission checks.
Besides perhaps saving a few cycles (integer vs string), this now creates a
single point of attack for changing the user id during a connection, for
purposes of "setuid" functions, etc.
Peter Eisentraut [Thu, 31 Aug 2000 16:12:35 +0000 (16:12 +0000)]
Fix relative path references so that make knowns which dependencies refer
to one another. Sort out builddir vs srcdir variable namings. Remove some
now obsoleted make variables.
Tom Lane [Wed, 30 Aug 2000 20:30:06 +0000 (20:30 +0000)]
AbortOutOfAnyTransaction() just before backend exit, to ensure that
resources are cleaned up if the user disconnected mid-transaction.
Great thanks to Hiroshi for pointing out what should have been obvious...
Hiroshi Inoue [Wed, 30 Aug 2000 08:48:55 +0000 (08:48 +0000)]
Improve the following.
=# create table t (id int4 unique);
NOTICE: CREATE TABLE/UNIQUE will create implicit index 't_id_key' for table 't'
=# begin;
query: drop table t;
NOTICE: Caution: DROP TABLE cannot be rolled back, so don't abort now
NOTICE: Caution: DROP INDEX cannot be rolled back, so don't abort now
=# rollback;
=# drop table t;
NOTICE: mdopen: couldn't open t: No such file or directory
NOTICE: RelationIdBuildRelation: smgropen(t): No such file or directory
NOTICE: mdopen: couldn't open t: No such file or directory
NOTICE: mdopen: couldn't open t: No such file or directory
NOTICE: mdopen: couldn't open t_id_key: No such file or directory
NOTICE: RelationIdBuildRelation: smgropen(t_id_key): No such file or directory
NOTICE: mdopen: couldn't open t: No such file or directory
NOTICE: RelationIdBuildRelation: smgropen(t): No such file or directory
NOTICE: mdopen: couldn't open t: No such file or directory
ERROR: cannot open relation t
Bruce Momjian [Tue, 29 Aug 2000 04:41:48 +0000 (04:41 +0000)]
* to_char:
- 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().
Bruce Momjian [Tue, 29 Aug 2000 04:20:47 +0000 (04:20 +0000)]
This is mostly the same as an earlier patch I
didn't hear anything about, but which would
have broken with the function manager changes
anyway.
Well, this patch checks that a unique constraint
of some form (unique or pk) is on the referenced
columns of an FK constraint and that the columns
in the referencing table exist at creation time.
The former is to move closer to SQL compatibility
and the latter is in answer to a bug report.
I also added a basic check of this functionality
to the alter table and foreign key regression
tests.
Bruce Momjian [Tue, 29 Aug 2000 04:15:43 +0000 (04:15 +0000)]
Here is a patch against the same cvs tree as the SSL patch (Aug 20).
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.
Peter Eisentraut [Mon, 28 Aug 2000 11:53:23 +0000 (11:53 +0000)]
New configure test for flex, which recognizes only flex but does so in all
incarnations (I hope). When an acceptable flex version is not found, print
instructive error messages from both configure and the makefiles, so that
users can continue building anyway.
Tom Lane [Sun, 27 Aug 2000 21:50:18 +0000 (21:50 +0000)]
Clean up callers of AllocateFile and BasicOpenFile to ensure that
a reasonable error message (including the kernel errno message)
is reported on any file open failure.
Tom Lane [Sun, 27 Aug 2000 21:48:00 +0000 (21:48 +0000)]
Change ReleaseLruFile() usage so that if we cannot release any more
virtual FDs, we just return the ENFILE/EMFILE error to the caller,
rather than immediate elog(). This allows more robust behavior in
the postmaster, which uses AllocateFile() but does not want elog().
Peter Eisentraut [Sat, 26 Aug 2000 21:11:45 +0000 (21:11 +0000)]
Fix AC_FUNC_ACCEPT_ARGTYPES to accept `const struct sockaddr *' as second
argument, change the order of tests for the third argument to be safe
against missing prototypes, and make it fail hard if none of the
combinations succeed.
Tom Lane [Fri, 25 Aug 2000 18:05:54 +0000 (18:05 +0000)]
Avoid creating a TOAST table if we can prove that the maximum tuple
length is < TOAST_TUPLE_THRESHOLD, even with toastable column types
present. For example, CREATE TABLE foo (f1 int, f2 varchar(100))
does not require a toast table, even though varchar is a toastable
type.
Fix typos and inconsistancies found by He Weiping
(aka Henry) <laser@zhangmai.com.cn>.
Fix new problems in insert.sgml and create_function.sgml which kept jade
from completing.
Tatsuo Ishii [Fri, 25 Aug 2000 14:24:09 +0000 (14:24 +0000)]
Change return type of:
pg_mb2wchar(const unsigned char *, pg_wchar *);
pg_mb2wchar_with_len(const unsigned char *, pg_wchar *, int);
from void to int. Now they return the number of
wide chars.
Peter Eisentraut [Fri, 25 Aug 2000 10:00:35 +0000 (10:00 +0000)]
Make the location of the Kerberos server key file run time configurable
(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.
Tom Lane [Thu, 24 Aug 2000 03:29:15 +0000 (03:29 +0000)]
SQL-language functions are now callable in ordinary fmgr contexts ...
for example, an SQL function can be used in a functional index. (I make
no promises about speed, but it'll work ;-).) Clean up and simplify
handling of functions returning sets.
Add functions to convert to and from text, and to truncate to MAC OUI.
Remove hardcoded macaddr_manuf(), which had really old, obsolete info.
Replace this with some contrib/mac/ code to maniag OUI info from IEEE.
Fix several <ulink> tags which refer to e-mail addresses
but were missing the "mailto:" prefix.
Fix typo.
Thanks to Neil Conway <nconway@klamath.dyndns.org> for the heads-up.
Tom Lane [Tue, 22 Aug 2000 04:06:22 +0000 (04:06 +0000)]
Fix a many-legged critter reported by chifungfan@yahoo.com: under the
right circumstances a hash join executed as a DECLARE CURSOR/FETCH
query would crash the backend. Problem as seen in current sources was
that the hash tables were stored in a context that was a child of
TransactionCommandContext, which got zapped at completion of the FETCH
command --- but cursor cleanup executed at COMMIT expected the tables
to still be valid. I haven't chased down the details as seen in 7.0.*
but I'm sure it's the same general problem.
Tom Lane [Mon, 21 Aug 2000 20:55:31 +0000 (20:55 +0000)]
Move pg_checkretval out of the planner (where it never belonged) into
pg_proc.c (where it's actually used). Fix it to correctly handle tlists
that contain resjunk target items, and improve error messages. This
addresses bug reported by Krupnikov 6-July-00.
Tom Lane [Mon, 21 Aug 2000 18:23:18 +0000 (18:23 +0000)]
Fix format_type() to display correct lengths for BIT/BIT VARYING.
Also, make it depend on type OIDs rather than type names for more
consistency with rest of backend.
Tom Lane [Mon, 21 Aug 2000 17:22:36 +0000 (17:22 +0000)]
fmgr interface mopup work. Use new DatumGetBool and BoolGetDatum
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.
Tom Lane [Mon, 21 Aug 2000 04:48:57 +0000 (04:48 +0000)]
First pass at integrating BIT and BIT VARYING code from Adriaan Joubert.
Update functions to new-style fmgr, make BIT and VARBIT be binary-
equivalent, add entries to allow these types to be btree indexed,
correct a few bugs. BIT/VARBIT are now toastable, too.
NOTE: initdb forced due to catalog updates.