Tom Lane [Mon, 25 Aug 2003 16:13:27 +0000 (16:13 +0000)]
Refactor code so that to_date() does not call to_timestamp() and then
perform a timestamp-to-date coercion. Instead both routines share a
subroutine that delivers the parsing result as a struct tm. This avoids
problems with timezone dependency of to_date's result, and should be
at least marginally faster too.
Barry Lind [Sun, 24 Aug 2003 22:10:09 +0000 (22:10 +0000)]
Applied patches from Oliver Jowett to fix the following bugs:
- adds a finalizer method to AbstractJdbc1Statement to clean up in the case of
poor user code which fails to close the statement object
- fix ant build file to correctly detect dependencies across jdbc1/jdbc2/jdbc3
- fix a coupld of server prepared statement bugs and added regression test for
them
Applied patch from Kim Ho:
- adds support for get/setMaxFieldSize().
Also fixed build.xml to provide a better error message in the event that an
older version of the driver exists in the classpath when trying to build.
Tom Lane [Fri, 22 Aug 2003 20:34:33 +0000 (20:34 +0000)]
Tweak grammar to use FastAppend rather than lappend when constructing
expr_lists. This appears to be the only remaining O(N^2) bottleneck
in processing many-way 'x IN (a,b,c,...)' conditions.
Tom Lane [Fri, 22 Aug 2003 20:26:43 +0000 (20:26 +0000)]
Tweak processing of multiple-index-scan plans to reduce overhead when
handling many-way scans: instead of re-evaluating all prior indexscan
quals to see if a tuple has been fetched more than once, use a hash table
indexed by tuple CTID. But fall back to the old way if the hash table
grows to exceed SortMem.
Tom Lane [Tue, 19 Aug 2003 01:13:41 +0000 (01:13 +0000)]
Improve dynahash.c's API so that caller can specify the comparison function
as well as the hash function (formerly the comparison function was hardwired
as memcmp()). This makes it possible to eliminate the special-purpose
hashtable management code in execGrouping.c in favor of using dynahash to
manage tuple hashtables; which is a win because dynahash knows how to expand
a hashtable when the original size estimate was too small, whereas the
special-purpose code was too stupid to do that. (See recent gripe from
Stephan Szabo about poor performance when hash table size estimate is way
off.) Free side benefit: when using string_hash, the default comparison
function is now strncmp() instead of memcmp(). This should eliminate some
part of the overhead associated with larger NAMEDATALEN values.
Tom Lane [Mon, 18 Aug 2003 19:16:02 +0000 (19:16 +0000)]
When compiling a plpgsql trigger function, include the OID of the table
the trigger is attached to in the hashkey. This ensures that we will
create separate compiled trees for each table the trigger is used with,
avoiding possible datatype-mismatch problems if the tables have different
rowtypes. This is essentially the same bug recently identified in plpython
--- though plpgsql doesn't seem as prone to crash when the rowtype changes
underneath it. But failing robustly is no substitute for just working.
Tom Lane [Sun, 17 Aug 2003 23:43:27 +0000 (23:43 +0000)]
Fix ARRAY[] construct so that in multidimensional case, elements can
be anything yielding an array of the proper kind, not only sub-ARRAY[]
constructs; do subscript checking at runtime not parse time. Also,
adjust array_cat to make array || array comply with the SQL99 spec.
Tom Lane [Sun, 17 Aug 2003 22:41:12 +0000 (22:41 +0000)]
Clean up locktable init code per recent gripe from Kurt Roeckx.
No change in behavior, but old code would have failed to detect
overrun of MAX_LOCKMODES.
Tom Lane [Sun, 17 Aug 2003 22:09:00 +0000 (22:09 +0000)]
Update documentation to reflect the fact that ORDER BY, GROUP BY, etc
are now driven by the default btree opclass, rather than assuming that
particular operator names have the needed semantics.
Tom Lane [Sun, 17 Aug 2003 19:58:06 +0000 (19:58 +0000)]
Create a 'type cache' that keeps track of the data needed for any particular
datatype by array_eq and array_cmp; use this to solve problems with memory
leaks in array indexing support. The parser's equality_oper and ordering_oper
routines also use the cache. Change the operator search algorithms to look
for appropriate btree or hash index opclasses, instead of assuming operators
named '<' or '=' have the right semantics. (ORDER BY ASC/DESC now also look
at opclasses, instead of assuming '<' and '>' are the right things.) Add
several more index opclasses so that there is no regression in functionality
for base datatypes. initdb forced due to catalog additions.
Bruce Momjian [Sun, 17 Aug 2003 04:52:41 +0000 (04:52 +0000)]
I almost forgot mark in docs "to_char(interval)" as deprecated function.
This useless routine will removed in 7.5. It's already discussed (see
hackers list archive).
Bruce Momjian [Sun, 17 Aug 2003 04:46:59 +0000 (04:46 +0000)]
This patch makes two minor fixes to the docs: (1) fixes a
spelling mistake in the PREPARE ref page (2) Makes some
English more consistent, in the ref pages for some of the
client apps (3) Adds a link to the libpq docs in the
vacuumdb ref page.
Bruce Momjian [Sun, 17 Aug 2003 04:46:00 +0000 (04:46 +0000)]
There is a misstatement in the CLOSE reference page, now that we
have cursors that might outlive their creating transactions. A
patch is attached that fixes this (suggestions on better wording
are welcome).
Bruce Momjian [Sun, 17 Aug 2003 04:39:11 +0000 (04:39 +0000)]
I just noticed that the sample pg_hba.conf in the docs doesn't contain
any use of CIDR masks - here's a patch that adds a couple of sample
lines and associated comments.
Bruce Momjian [Sun, 17 Aug 2003 04:33:02 +0000 (04:33 +0000)]
The attached patch adds some clarification to the documentation of the
binary format read/created by COPY BINARY. It also mentions the
contrib/binarycopy module.
Bruce Momjian [Sun, 17 Aug 2003 03:17:22 +0000 (03:17 +0000)]
(I always forget what the magic numbers 0 through 2 means for the
"syslog" option.)
By the way: The "virtual_host" parameter is a bad name for that
particular option, I think. "Virtual host" signals that PostgreSQL will
behave differently according to which IP address it's contacted (like
Apache's virtual host support which makes the web-server serve different
sites according to different criteria). A better word for the options
would be "tcpip_listen_addr" or something like that.
Barry Lind [Fri, 15 Aug 2003 18:45:11 +0000 (18:45 +0000)]
Updated the blob regression test to actually use the getBlob/getClob methods
and test them, in addition to testing the underlying LargeObject API methods.
Tom Lane [Fri, 15 Aug 2003 00:22:26 +0000 (00:22 +0000)]
Rewrite array_cmp to not depend on deconstruct_array. Should be a little
faster, but more importantly does not leak memory. Still needs more work
though, per my recent note to pgsql-hackers.
Tom Lane [Wed, 13 Aug 2003 18:56:21 +0000 (18:56 +0000)]
libpq failed to cope with COPY FROM STDIN if the command was issued
via extended query protocol, because it sends Sync right after Execute
without realizing that the command to be executed is COPY. There seems
to be no reasonable way for it to realize that, either, so the best fix
seems to be to make the backend ignore Sync during copy-in mode. Bit of
a wart on the protocol, but little alternative. Also, libpq must send
another Sync after terminating the COPY, if the command was issued via
Execute.
Tom Lane [Wed, 13 Aug 2003 16:29:03 +0000 (16:29 +0000)]
Add PQexecPrepared() and PQsendQueryPrepared() functions, to allow
libpq users to perform Bind/Execute of previously prepared statements.
Per yesterday's discussion, this offers enough performance improvement
to justify bending the 'no new features during beta' rule.
Tom Lane [Wed, 13 Aug 2003 16:16:23 +0000 (16:16 +0000)]
Move MemoryContextCheck() call from bottom of PostgresMain loop to
just before CommitTransactionCommand(). This is a more sensible place
to put it since commit discards a lot of contexts, and we'd not find
out about stomps affecting only transaction-local contexts.
Bruce Momjian [Wed, 13 Aug 2003 03:12:04 +0000 (03:12 +0000)]
I'm quite fond of doing VPATH builds, i.e. building outside the source
tree. This also catches lots of little Makefile bugs, so here's a small
patch for one of them (replacing an explicit reference to thread.c with
a reference to it as the first prerequsite of the rule makes make look
for it in the place where it was found (the source tree) rather than in
the build tree. (using GNU make 3.79.1)
Tom Lane [Tue, 12 Aug 2003 22:42:01 +0000 (22:42 +0000)]
Include 'IPv4', 'IPv6', or 'Unix' in socket-creation failure messages,
in hopes of soothing fears of those with partial IPv6 support. Still an
open question whether we should report EAFNOSUPPORT errors at all,
though.
Tom Lane [Tue, 12 Aug 2003 18:52:38 +0000 (18:52 +0000)]
Marginal hacks to move some processing out of the per-client-message
processing loop; avoids extra overhead when using parse/bind/execute
messages instead of single Query message.
Tom Lane [Tue, 12 Aug 2003 18:23:21 +0000 (18:23 +0000)]
Change some frequently-reached elog(DEBUG...) calls to ereport(DEBUG...)
for speed reasons. (ereport falls out much more quickly when no output
is needed than elog does.)
Tom Lane [Mon, 11 Aug 2003 23:04:50 +0000 (23:04 +0000)]
Rewriter and planner should use only resno, not resname, to identify
target columns in INSERT and UPDATE targetlists. Don't rely on resname
to be accurate in ruleutils, either. This fixes bug reported by
Donald Fraser, in which renaming a column referenced in a rule did not
work very well.
Barry Lind [Mon, 11 Aug 2003 20:54:55 +0000 (20:54 +0000)]
Applied patch from Kim Ho to fix a regression against a 7.4 server. The result
of transaction isolation level changed from uppercase to lower case between 7.3 and 7.4. In testing, a regression was also fixed in this area when talking to
a 7.2 server due to changes in how notice messages are processed in the current
code.
Tom Lane [Mon, 11 Aug 2003 20:46:47 +0000 (20:46 +0000)]
Code cleanup inspired by recent resname bug report (doesn't fix the bug
yet, though). Avoid using nth() to fetch tlist entries; provide a
common routine get_tle_by_resno() to search a tlist for a particular
resno. This replaces a couple uses of nth() and a dozen hand-coded
search loops. Also, replace a few uses of nth(length-1, list) with
llast().
Tom Lane [Sun, 10 Aug 2003 19:48:08 +0000 (19:48 +0000)]
Repair potential deadlock created by recent changes to recycle btree
index pages: when _bt_getbuf asks the FSM for a free index page, it is
possible (and, in some cases, even moderately likely) that the answer
will be the same page that _bt_split is trying to split. _bt_getbuf
already knew that the returned page might not be free, but it wasn't
prepared for the possibility that even trying to lock the page could
be problematic. Fix by doing a conditional rather than unconditional
grab of the page lock.