The v4bitncmp() function was only taking one bit length argument so
it would determine that the networks were different, even though
they really aren't (and the netmask test wouldn't be used). This
ONLY happens if the tuple with the longer bit length is used as the
ip_bits() for the v4bitncmp call AND there happens to be junk data
in place in the shorter tuple. Odd and random, but I saw it happen
a couple times so...
Tom Lane [Wed, 1 Mar 2000 05:18:20 +0000 (05:18 +0000)]
Simplify parsing of column constraints by treating constraint attributes
as independent clauses in the grammar. analyze.c takes care of putting
the data where it belongs and complaining about invalid combinations.
Also, make TEMP (and TEMPORARY) non-reserved words.
Jan Wieck [Tue, 29 Feb 2000 12:28:25 +0000 (12:28 +0000)]
Changed execution time of ON <event> RESTRICT referential
integrity triggers to after statement allways. Ignores
deferred state now, closer to SQL3 semantics.
Tom Lane [Sun, 27 Feb 2000 07:18:29 +0000 (07:18 +0000)]
Add 'volatile' declarations to silence gcc warnings about longjmp.
Shouldn't create any portability problems, since we have a configure
test to #define away volatile if the compiler doesn't support it.
Tom Lane [Sun, 27 Feb 2000 02:48:15 +0000 (02:48 +0000)]
Fix poorly worded error messages for unary operator type resolution
failures. Fix some outright bugs too, including a reference to
uninitialized memory that would cause failures like this one:
select -('1234567890.1234567'::text);
ERROR: Unable to locate type oid 2139062143 in catalog
Tom Lane [Sat, 26 Feb 2000 23:03:12 +0000 (23:03 +0000)]
Add date and time datatype handling to convert_to_scalar. (I was waiting
for Thomas to do the datetime consolidation before touching this, but
it's done now...)
Tom Lane [Sat, 26 Feb 2000 21:13:18 +0000 (21:13 +0000)]
Change rule dumper to produce reasonable output for casts that assign
a specific length or precision, such as foo::char(8). Remove erroneous
removal of user-written casts at the top level of a SELECT target item.
Tom Lane [Sat, 26 Feb 2000 21:11:10 +0000 (21:11 +0000)]
Fix exprTypmod to recognize length-coercion function expressions,
such as bpchar(char_expression, N), and pull out the attrtypmod that
the function is coercing to. This allows correct deduction of the
column type in examples such as
CREATE VIEW v AS SELECT f1::char(8) FROM tbl;
Formerly we labeled v's column as char-of-unknown-length not char(8).
Also, this change causes the parser not to insert a redundant length
coercion function if the user has explicitly casted an INSERT or UPDATE
expression to the right length.
Tom Lane [Sat, 26 Feb 2000 18:31:25 +0000 (18:31 +0000)]
psql's \d command wasn't doing the right things with 'char' (type 18)
fields, nor with bpchar and varchar fields that have typmod -1. The
latter effectively have an unspecified length, so I made them display
as char() and varchar() rather than falsely equating them to char(1)
and varchar(1).
Tom Lane [Sat, 26 Feb 2000 06:36:44 +0000 (06:36 +0000)]
Undo a couple of mistaken applications of NameStr() to StringInfos.
It worked, because they both have fields named 'data', but it's surely
trouble waiting to happen. I wonder whether there are more ...
Tom Lane [Sat, 26 Feb 2000 05:25:55 +0000 (05:25 +0000)]
Shared-memory hashtables have non-extensible directories, which means
it's a good idea to choose the directory size based on the expected
number of entries. But ShmemInitHash was using a hard-wired constant.
Boo hiss. This accounts for recent report of postmaster failure when
asking for 64K or more buffers.
Tom Lane [Fri, 25 Feb 2000 02:58:48 +0000 (02:58 +0000)]
Fix longstanding bug that kept functional indexes from working when you
defaulted the opclass. This addresses TODO item
* Allow creation of functional indexes to use default types
(Does that make it a feature? Oh dear...)
Tom Lane [Thu, 24 Feb 2000 04:50:51 +0000 (04:50 +0000)]
Tweak libpq so that if a backend ERROR message arrives while libpq
thinks the connection is idle, the error message is displayed as if
it were a NOTICE. This seems better than dropping the message on
the floor ... particularly if the message is the backend telling us
why it's about to close the connection. The previous behavior was
Backend message type 0x45 arrived while idle
pqReadData() -- backend closed the channel unexpectedly.
which is not real helpful.
Tom Lane [Thu, 24 Feb 2000 02:05:30 +0000 (02:05 +0000)]
Add numeric <-> int8 and numeric <-> int2 conversion functions, as well
as a unary minus operator for numeric. Now that long numeric constants
will get converted to NUMERIC in early parsing, it's essential to have
numeric->int8 conversion to avoid 'can't convert' errors on undecorated
int8 constants. Threw in the rest for completeness while I was in the
area.
I did not force an initdb for this, since the system will still run
without the new pg_proc/pg_operator entries. Possibly I should've.
Tom Lane [Thu, 24 Feb 2000 01:59:17 +0000 (01:59 +0000)]
Make make_const() check the size and precision of a T_Float Value,
and produce either FLOAT8 or NUMERIC output depending on whether the
value fits in a float8 or not. This is almost back to the way the
code was before I changed T_Float, but there is a critical difference:
now, when a numeric constant doesn't fit in float8, it will be treated
as type NUMERIC instead of type UNKNOWN.
Bruce Momjian [Wed, 23 Feb 2000 15:46:15 +0000 (15:46 +0000)]
1. miscadmin.h needs to include sys/types.h for a definition of pid_t
2. Regression tests fail for types int2 and int4 (which can easily be
fixed by adding entries to resultmap) aswell as float8 and geometry,
where floating point numbers appear to be rounded a little differently
than in your expected results (besides that I also need the positive
zeros file). I'm including a patch for the first 2, but I don't know
whether the latter two are actually a bug in postgres or a bug in the
OS or even allowed difference. I'm including my results for reference.
Tom Lane [Tue, 22 Feb 2000 00:05:04 +0000 (00:05 +0000)]
First post-beta1 bug fix :-(. Silly typo in new coding for doNegate
failed to negate a negative value back to positive, so '- - 123.45'
did the wrong thing.
Tom Lane [Mon, 21 Feb 2000 18:47:12 +0000 (18:47 +0000)]
Change parse-time representation of float literals (which include oversize
integers) to be strings instead of 'double'. We convert from string form
to internal representation only after type resolution has determined the
correct type for the constant. This eliminates loss-of-precision worries
and gets rid of the change in behavior seen at 17 digits with the
previous kluge.
Tom Lane [Mon, 21 Feb 2000 18:42:35 +0000 (18:42 +0000)]
To avoid confusion during early beta testing, commit the current rules
test output as expected output. We'll probably want to change this again
after something's done about the verbosity of column alias display.
Tom Lane [Mon, 21 Feb 2000 01:13:04 +0000 (01:13 +0000)]
Tweak planner to use OFFSET+LIMIT, not just LIMIT, as estimate of the
portion of the query result that will be retrieved. As far as I could
tell, the consensus was that we should let the planner do the best it
can with a LIMIT query, and require the user to add ORDER BY if he
wants consistent results from different LIMIT values.