Tom Lane [Fri, 3 May 2002 20:15:02 +0000 (20:15 +0000)]
Make ruleutils.c schema-aware. Displayed names are schema-qualified
only if they would not be found without qualification given the current
search path, as per idea from Peter Eisentraut.
Tom Lane [Fri, 3 May 2002 00:32:19 +0000 (00:32 +0000)]
Retire xlateSqlType/xlateSqlFunc; all type name translations are now
handled as special productions. This is needed to keep us honest about
user-schema type names that happen to coincide with system type names.
Per pghackers discussion 24-Apr. To avoid bloating the keyword list
too much, I removed the translations for datetime, timespan, and lztext,
all of which were slated for destruction several versions back anyway.
Tom Lane [Thu, 2 May 2002 18:44:11 +0000 (18:44 +0000)]
Tweak scanner/grammar interface so that the keyword-as-identifier rules
in gram.y can make use of the keywords.c string table, instead of having
their own copies of the keyword strings. This saves a few kilobytes and
more importantly eliminates an opportunity for cut-and-paste errors.
Tom Lane [Wed, 1 May 2002 23:06:41 +0000 (23:06 +0000)]
Add routines in namespace.c to determine whether objects are visible
in the search path. (We might want to make these available as SQL
functions too, but I haven't done that yet.) Fix format_type to be
schema-aware.
Tom Lane [Wed, 1 May 2002 17:12:08 +0000 (17:12 +0000)]
Improve lexer's error reporting. You get the whole token mentioned now
in parse error messages, not just the part scanned by the last flex rule.
For example,
select "foo" "bar";
used to draw
ERROR: parser: parse error at or near """
which was rather unhelpful. Now it gives
ERROR: parser: parse error at or near ""bar""
Also, error messages concerning bitstring literals and suchlike will
quote the source text at you, not the processed internal form of the literal.
Tom Lane [Tue, 30 Apr 2002 01:26:26 +0000 (01:26 +0000)]
Clean up loose ends remaining from schema privileges discussion.
I concluded that RENAME should require CREATE privilege on the namespace
as well as ownership of the table.
Tom Lane [Sun, 28 Apr 2002 19:54:29 +0000 (19:54 +0000)]
Second try at fixing join alias variables. Instead of attaching miscellaneous
lists to join RTEs, attach a list of Vars and COALESCE expressions that will
replace the join's alias variables during planning. This simplifies
flatten_join_alias_vars while still making it easy to fix up varno references
when transforming the query tree. Add regression test cases for interactions
of subqueries with outer joins.
Tom Lane [Sat, 27 Apr 2002 21:24:34 +0000 (21:24 +0000)]
Support toasting of shared system relations, and provide toast tables for
pg_database, pg_shadow, pg_group, all of which now have potentially-long
fields. Along the way, get rid of SharedSystemRelationNames list: shared
rels are now identified in their include/pg_catalog/*.h files by a
BKI_SHARED_RELATION macro, while indexes and toast rels inherit sharedness
automatically from their parent table. Fix some bugs with failure to detoast
pg_group.grolist during ALTER GROUP.
Tom Lane [Sat, 27 Apr 2002 03:45:03 +0000 (03:45 +0000)]
Restructure aclcheck error reporting to make permission-failure
messages more uniform and internationalizable: the global array
aclcheck_error_strings[] is gone in favor of a subroutine
aclcheck_error(). Partial implementation of namespace-related
permission checks --- not all done yet.
Tom Lane [Fri, 26 Apr 2002 19:29:47 +0000 (19:29 +0000)]
Move renametrig() from tablecmds.c to trigger.c --- if we're going to
divide backend/commands by object type, let's try to pay at least
minimal attention to respecting that structure, eh? Also reorder the
contents of tablecmds.c; it seems odd to me to put ALTER commands before
creation/deletion commands.
Add checking for syslog.h
Enable multibyte support by default. Note that this is the first cut,
and I'm gloing to remove #ifdef MULTIBYTE and others step by step...
Tom Lane [Fri, 26 Apr 2002 01:24:08 +0000 (01:24 +0000)]
Add current_schema() and current_schemas() inquiry functions.
Update has_table_privilege functions to cope with schema-qualified
names in the same way as nextval() and others.
Tom Lane [Thu, 25 Apr 2002 02:56:56 +0000 (02:56 +0000)]
Implement types regprocedure, regoper, regoperator, regclass, regtype
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.
1) Wrong translations of embedded escape sequences inside outer join escape
sequences.
2) Wrong translation of parameter markers inside outer joins and function
escape sequences.
3) Bad concatenation of date, time, timestamp constants with next word in
statement:
Bruce Momjian [Wed, 24 Apr 2002 02:48:55 +0000 (02:48 +0000)]
Attached is a patch for ALTER TRIGGER RENAME per the above thread. I
left a stub for a future "ALTER RULE RENAME" but did not write that one
yet. Bruce, if you want to add my name for for that I'll take it and do
it later.
Bruce Momjian [Wed, 24 Apr 2002 02:45:51 +0000 (02:45 +0000)]
I've improved the contributed vacuumlo command, now it behaves like all other
postgres command line utilites e.g. supports -U, -p, -h, -?, -v, password
prompt and has a "test mode". In test mode, no large objects are removed,
just reported.
Bruce Momjian [Wed, 24 Apr 2002 02:44:19 +0000 (02:44 +0000)]
The attached patch cleans up some code in pg_dump. It cuts some
unused function arguments, and makes the TableInfo struct slightly
smaller by removing an unnecessary member.
Bruce Momjian [Wed, 24 Apr 2002 02:40:45 +0000 (02:40 +0000)]
Oops, wrong commit on previous. It was:
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.
Bruce Momjian [Wed, 24 Apr 2002 02:28:28 +0000 (02:28 +0000)]
Attached is an update to contrib/dblink. Please apply if there are no
objections.
Major changes:
- removed cursor wrap around input sql to allow for remote
execution of INSERT/UPDATE/DELETE
- dblink now returns a resource id instead of a real pointer
- added several utility functions
I'm still hoping to add explicit cursor open/fetch/close support before
7.3 is released, but I need a bit more time on that.
On a somewhat unrelated topic, I never got any feedback on the
unknownin/out patch and the mb_substring patch. Is there anything else I
need to do to get those applied?
Bruce Momjian [Wed, 24 Apr 2002 02:26:06 +0000 (02:26 +0000)]
I'm at the win32 error messages once more. The DLL load thingy doesn't
work on all win9x machines, so i made it go thru a l ookup table
instead, using the DLL as last resort. I also moved this out of the
fe-misc.c file because of the size of the lookup ta ble. Who knows, we
might add more other win32 specific code there in the future.
I also fixed a small typo in the pg_config.h.win32 that made the
compiler compla in about the gnu snprintf declaration.
I tried to make this patch with psql coding style. I've successfully
tested this on win2k and win98 and it works fine (i.e. the mes sage
shows on win98 too, it didn't with the old implementation).
Bruce Momjian [Wed, 24 Apr 2002 02:12:53 +0000 (02:12 +0000)]
Here's a patch to add unknownin/unknownout support. I also poked around
looking for places that assume UNKNOWN == TEXT. One of those was the
"SET" type in pg_type.h, which was using textin/textout. This one I took
care of in this patch. The other suspicious place was in
string_to_dataum (which is defined in both selfuncs.c and indxpath.c). I
wasn't too sure about those, so I left them be.
Bruce Momjian [Wed, 24 Apr 2002 01:58:31 +0000 (01:58 +0000)]
pgdb.connect() seems to be broken on Python 2.0.1 (which ships with
Slackware 8), and perhaps on other Pythons, haven't checked. Something in
the _pg.connect() call isn't working. I think the problem stems from the
fact that 'host' is a named parameter of both _pg.connect and pgdb.connect,
and so Python treats it as a variable assignment, not a named parameter.
Bruce Momjian [Wed, 24 Apr 2002 01:51:11 +0000 (01:51 +0000)]
[ Patch comments in three pieces.]
Attached is a pacth against 7.2 which adds locale awareness to the
character classes of the regular expression engine.
...
> > I still think the xdigit class could be handled the same way the digit
> > class is (by enumeration rather than using the isxdigit function). That
> > saves you a cicle, and I don't think there's any loss.
>
> In fact, I will email you when I apply the original patch.
I miss that case :-(. Here is the pached patch.
...
Here is a patch which addresses Tatsuo's concerns (it does return an
static struct instead of constructing it).
Bruce Momjian [Tue, 23 Apr 2002 23:46:37 +0000 (23:46 +0000)]
Based on this report, I am adding a FUNC_MAX_ARGS define to
src/include/pg_config.h.win32. Certainly if we have INDEX_MAX_KEYS in
there, we should have FUNC_MAX_ARGS too.
Tom Lane [Tue, 23 Apr 2002 15:45:30 +0000 (15:45 +0000)]
Clean up INT64CONST conflicts. Make the pg_crc code use a macro called
UINT64CONST, since unsigned was what it wanted anyway. Centralize macro
definitions into c.h.
Convert GUC parameters back to strings if input as integers.
Change elog(ERROR) messages to say that a variable takes one parameter,
rather than saying that it does not take multiple parameters.
Check for multiple arguments on parameters which do not allow them.
The last version caught this with an assert because I wasn't sure whether
we should elog(ERROR) or just loop through the parameters.
Initialize or set a couple of variables to suppress compiler warnings.
These were for cases protected by elog(ERROR) exits, but may as well
keep the compiler happy. Not sure why they don't show up on my gcc-2.96.x
version of the compiler.
Support alternate storage scheme of 64-bit integer for date/time types.
Use "--enable-integer-datetimes" in configuration to use this rather
than the original float8 storage. I would recommend the integer-based
storage for any platform on which it is available. We perhaps should
make this the default for the production release.
Change timezone(timestamptz) results to return timestamp rather than
a character string. Formerly, we didn't have a way to represent
timestamps with an explicit time zone other than freezing the info into
a string. Now, we can reasonably omit the explicit time zone from the
result and return a timestamp with values appropriate for the specified
time zone. Much cleaner, and if you need the time zone in the result
you can put it into a character string pretty easily anyway.
Allow fractional seconds in date/time types even for dates prior to 1BC.
Limit timestamp data types to 6 decimal places of precision. Just right
for a micro-second storage of int8 date/time types, and reduces the
number of places ad-hoc rounding was occuring for the float8-based types.
Use lookup tables for precision/rounding calculations for timestamp and
interval types. Formerly used pow() to calculate the desired value but
with a more limited range there is no reason to not type in a lookup
table. Should be *much* better performance, though formerly there were
some optimizations to help minimize the number of times pow() was called.
Define a HAVE_INT64_TIMESTAMP variable. Based on the configure option
"--enable-integer-datetimes" and the existing internal INT64_IS_BUSTED.
Add explicit date/interval operators and functions for addition and
subtraction. Formerly relied on implicit type promotion from date to
timestamp with time zone.
Change timezone conversion functions for the timetz type from "timetz()"
to "timezone()". This is consistant with other time zone coersion
functions for other types.
Bump the catalog version to 200204201.
Fix up regression tests to reflect changes in fractional seconds
representation for date/times in BC eras.
All regression tests pass on my Linux box.
Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types.
This is a big change from past behavior, but the last release was
designed to handle this correctly for dump/restore upgrades.
Fix up handling of SET value arguments. Allow lists for most options at
least at the parser level; multiple values may be rejected at the
command processor of course.
Allow more variations on values for SET commands, including integer and
float values where formerly stringy fields were required.
Check precision specification for date/time fields against the true
precision range allowed by the data types. Especially useful with the
new int8-based storage for these types, where precision is fixed and
predictable.
Stub out a basic CREATE ASSERTION per SQL9x. Does not do anything (yet) but
should be augmented as appropriate.
Minor fixups in braces and tabbing.
Allow more choices for style of value in various SET commands. Formerly,
most required a stringy syntax in the parser; now integers and floats
can (or should) be handled. There is at least one cheesy error message
mentioning sending mail to me if there are problems; should be changed
prior to release.
Allow lists of values from the parser in more cases. If multiple arguments
were not allowed previously, they probably are not allowed now, but at
least the data structures being passed around are more consistant across
more cases.