Bruce Momjian [Sat, 17 Dec 2005 19:03:24 +0000 (19:03 +0000)]
Remove item:
< * Allow star join optimizations
<
< While our bitmap scan allows multiple indexes to be joined to get
< to heap rows, a star joins allows multiple dimension _tables_ to
< be joined to index into a larger main fact table. The join is
< usually performed by either creating a cartesian product of all
< the dimmension tables and doing a single join on that product or
< using subselects to create bitmaps of each dimmension table match
< and merge the bitmaps to perform the join on the fact table. Some
< of these algorithms might be patented.
Bruce Momjian [Sat, 17 Dec 2005 18:07:01 +0000 (18:07 +0000)]
Update:
< * Flush cached query plans when the dependent objects change or
< when the cardinality of parameters changes dramatically
> * Flush cached query plans when the dependent objects change,
> when the cardinality of parameters changes dramatically, or
> when new ANALYZE statistics are available
Bruce Momjian [Sat, 17 Dec 2005 17:04:41 +0000 (17:04 +0000)]
Add mention of possible patent problems with star joins, per Joshua
Drake:
< and merge the bitmaps to perform the join on the fact table.
> and merge the bitmaps to perform the join on the fact table. Some
> of these algorithms might be patented.
Bruce Momjian [Sat, 17 Dec 2005 16:43:11 +0000 (16:43 +0000)]
Add:
* Allow star join optimizations
While our bitmap scan allows multiple indexes to be joined to get
to heap rows, a star joins allows multiple dimension _tables_ to
be joined to index into a larger main fact table. The join is
usually performed by either creating a cartesian product of all
the dimmension tables and doing a single join on that product or
using subselects to create bitmaps of each dimmension table match
and merge the bitmaps to perform the join on the fact table.
Bruce Momjian [Sat, 17 Dec 2005 04:10:47 +0000 (04:10 +0000)]
Update:
< * Flush cached query plans when the dependent objects change
> * Flush cached query plans when the dependent objects change or
> when the cardinality of parameters changes dramatically
Tom Lane [Fri, 16 Dec 2005 04:03:40 +0000 (04:03 +0000)]
Rethink prior patch to filter out dead backend entries from the pgstats
file. The original code probed the PGPROC array separately for each PID,
which was not good for large numbers of backends: not only is the runtime
O(N^2) but most of it is spent holding ProcArrayLock. Instead, take the
lock just once and copy the active PIDs into an array, then use qsort
and bsearch so that the lookup time is more like O(N log N).
Tom Lane [Wed, 14 Dec 2005 17:06:28 +0000 (17:06 +0000)]
Defend against crash while processing Describe Statement or Describe Portal
messages, when client attempts to execute these outside a transaction (start
one) or in a failed transaction (reject message, except for COMMIT/ROLLBACK
statements which we can handle). Per report from Francisco Figueiredo Jr.
Tom Lane [Wed, 14 Dec 2005 16:28:32 +0000 (16:28 +0000)]
Fix problem with whole-row Vars referencing sub-select outputs, per
example from Jim Dew. Add some simple regression tests, since this is
an area we seem to break regularly :-(
Bruce Momjian [Mon, 12 Dec 2005 13:36:36 +0000 (13:36 +0000)]
Update wording, query -> statement:
< * %Allow pooled connections to list all prepared queries
> * %Allow pooled connections to list all prepared statements
28c28
< the queries prepared in the current session.
> the statements prepared in the current session. 143c143
< o Allow a warm standby system to also allow read-only queries
> o Allow a warm standby system to also allow read-only statements 404c404
< * Add GUC to issue notice about queries that use unjoined tables
> * Add GUC to issue notice about statements that use unjoined tables 490c490
< Another idea would be to allow actual SELECT queries in a COPY.
> Another idea would be to allow actual SELECT statements in a COPY. 554c554
< o Allow function argument names to be queries from PL/PgSQL
> o Allow function argument names to be statements from PL/PgSQL 591c591
< o Improve psql's handling of multi-line queries
> o Improve psql's handling of multi-line statements
< Currently, while \e saves a single query as one entry, interactive
< queries are saved one line at a time. Ideally all queries
> Currently, while \e saves a single statement as one entry, interactive
> statements are saved one line at a time. Ideally all statements 665c665
< o Allow query results to be automatically batched to the client
> o Allow statement results to be automatically batched to the client 667c667
< Currently, all query results are transfered to the libpq
> Currently, all statement results are transfered to the libpq 672c672
< One complexity is that a query like SELECT 1/col could error
> One complexity is that a statement like SELECT 1/col could error 739c739
< * Allow queries across databases or servers with transaction
> * Allow statements across databases or servers with transaction
< inheritance, allow it to work for UPDATE and DELETE queries, and allow
< it to be used for all queries with little performance impact
> inheritance, allow it to work for UPDATE and DELETE statements, and allow
> it to be used for all statements with little performance impact 876c876
< * Consider automatic caching of queries at various levels:
> * Consider automatic caching of statements at various levels: 947c947
< a single session using multiple threads to execute a query faster.
> a single session using multiple threads to execute a statement faster. 1025c1025
< * Log queries where the optimizer row estimates were dramatically
> * Log statements where the optimizer row estimates were dramatically 1146c1146
< of result sets using new query protocol
> of result sets using new statement protocol
Tom Lane [Sun, 11 Dec 2005 21:02:18 +0000 (21:02 +0000)]
Divide the lock manager's shared state into 'partitions', so as to
reduce contention for the former single LockMgrLock. Per my recent
proposal. I set it up for 16 partitions, but on a pgbench test this
gives only a marginal further improvement over 4 partitions --- we need
to test more scenarios to choose the number of partitions.
Tom Lane [Sat, 10 Dec 2005 19:21:03 +0000 (19:21 +0000)]
Teach deparsing of CASE expressions to cope with the simplified forms
that simplify_boolean_equality() may leave behind. This is only relevant
if the user writes something a bit silly, like CASE x=y WHEN TRUE THEN.
Per example from Michael Fuhr; may or may not explain bug #2106.
Bruce Momjian [Fri, 9 Dec 2005 04:50:40 +0000 (04:50 +0000)]
I reconfirmed MS-VC6. Thank you for wonderful correspondence.
However, Another problem newly occurred.
This solves the problem of snprintf and vsnprintf.
Tom Lane [Fri, 9 Dec 2005 01:22:04 +0000 (01:22 +0000)]
Simplify lock manager data structures by making a clear separation between
the data defining the semantics of a lock method (ie, conflict resolution
table and ancillary data, which is all constant) and the hash tables
storing the current state. The only thing we give up by this is the
ability to use separate hashtables for different lock methods, but there
is no need for that anyway. Put some extra fields into the LockMethod
definition structs to clean up some other uglinesses, like hard-wired
tests for DEFAULT_LOCKMETHOD and USER_LOCKMETHOD. This commit doesn't
do anything about the performance issues we were discussing, but it clears
away some of the underbrush that's in the way of fixing that.
Bruce Momjian [Thu, 8 Dec 2005 21:36:50 +0000 (21:36 +0000)]
FAQ_AIX in 8.1.0 contains outdated information about how to deal with
postgres problems due to readline. The attached patch replaces that
section of it with better ways of handling the problem.
Bruce Momjian [Thu, 8 Dec 2005 21:35:36 +0000 (21:35 +0000)]
there's a paragraph in the ALTER TABLE reference page that reads:
DROP CONSTRAINT
This form drops constraints on a table. Currently, constraints on tables
are not required to have unique names, so there may be more than one
constraint matching the specified name. All matching constraints will be
dropped.
To my knowledge, it is no longer possible to create constraints with the
same name for the same relation. When you create a constraint and specify
the same name explictly, an error is raised. Implicit constraint creation
won't choose an existing name either and up to now you could not rename a
constraint. Renaming works with the patch I sent in a few hours ago but this
patch as well won't allow constraints with identical names on the same
relation.
The attached patch thus removes the note in the docs.
Bruce Momjian [Thu, 8 Dec 2005 21:33:58 +0000 (21:33 +0000)]
> 1) I'm proposing a patch to do the DROP FUNCTION argument tab completion.
> Now, the arguments of the drop function can be tab completed. for example
>
> drop function strpos (
> <press tab>
> drop FUNCTION strpos (text, text)
>
> or:
>
> wsdb=# drop FUNCTION length (
> bit) bytea) character) lseg) path) text)
> <press c>
> wsdb# DROP FUNCTION length ( character)
>
> I think that this patch should be rather useful. At it least I hate
> always to type all the arguments of the dropped functions.
>
> 2) Also some fixes applied for the
> CREATE INDEX syntax
>
> now the parenthesises are inserted by tab pressing.
> suppose I have the table q3c:
Tom Lane [Thu, 8 Dec 2005 19:19:22 +0000 (19:19 +0000)]
Fix bgwriter's failure to release buffer pins and open files after an
error. This probably explains bug #2099 and could also account for
mysterious VACUUM hangups.
This is used by winsock2.h. However, Construction of a windows base is
winsock.h.
Then, Since MinGW has special environment, this is right. but, it is not
found in VC6.
Furthermore, in getaddrinfo.c, IPV6-API is used by
LoadLibraryA("ws2_32");
Referring to of dll the external memory generates this violation by VC6
specification.
I considered whether the whole should have been converted into winsock2.
However, Now, DLL of MinGW creation operates wonderfully as it is.
That's right, it has pliability by replacement of simple DLL.
Then, I propose the system using winsock(non IPV6) in construction of
VC6.
Tom Lane [Wed, 7 Dec 2005 19:37:53 +0000 (19:37 +0000)]
Push the responsibility for handling ignore_killed_tuples down into
_bt_checkkeys(), instead of checking it in the top-level nbtree.c routines
as formerly. This saves a little bit of loop overhead, but more importantly
it lets us skip performing the index key comparisons for dead tuples.
Tom Lane [Wed, 7 Dec 2005 18:03:48 +0000 (18:03 +0000)]
A couple of tiny performance hacks in _bt_step(). Remove PageIsEmpty
checks, which were once needed because PageGetMaxOffsetNumber would
fail on empty pages, but are now just redundant. Also, don't set up
local variables that aren't needed in the fast path --- most of the
time, we only need to advance offnum and not step across a page boundary.
Motivated by noticing _bt_step at the top of OProfile profile for a
pgbench run.
Tom Lane [Tue, 6 Dec 2005 23:08:34 +0000 (23:08 +0000)]
Get rid of slru.c's hardwired insistence on a fixed number of slots per
SLRU area. The number of slots is still a compile-time constant (someday
we might want to change that), but at least it's a different constant for
each SLRU area. Increase number of subtrans buffers to 32 based on
experimentation with a heavily subtrans-bashing test case, and increase
number of multixact member buffers to 16, since it's obviously silly for
it not to be at least twice the number of multixact offset buffers.
Bruce Momjian [Tue, 6 Dec 2005 18:43:26 +0000 (18:43 +0000)]
Since my name has a non-ascii-letter in it, it's often spelled wrong. In
the latest release notes there is a latin1 character that shouldn't be
there so I made a patch to fix that. This patch also fixes some old
entries that uses o instead of ö (which is also wrong but not as
bad as including a latin1 character in the sgml file).
Tom Lane [Tue, 6 Dec 2005 18:10:06 +0000 (18:10 +0000)]
Arrange for read-only accesses to SLRU page buffers to take only a shared
lock, not exclusive, if the desired page is already in memory. This can
be demonstrated to be a significant win on the pg_subtrans cache when there
is a large window of open transactions. It should be useful for pg_clog
as well. I didn't try to make GetMultiXactIdMembers() use the code, as
that would have taken some restructuring, and what with the local cache
for multixact contents it probably wouldn't really make a difference.
Per my recent proposal.
Tom Lane [Tue, 6 Dec 2005 16:50:36 +0000 (16:50 +0000)]
In a nestloop inner indexscan, it's OK to use pushed-down baserestrictinfo
clauses even if it's an outer join. This is a corner case since such
clauses could only arise from weird OUTER JOIN ON conditions, but worth
fixing. Per example from Ron at cheapcomplexdevices.com.
Tom Lane [Tue, 6 Dec 2005 02:29:04 +0000 (02:29 +0000)]
Make Win32 build use our port/snprintf.c routines, instead of depending
on libintl which may or may not provide what we need. Make a few marginal
cleanups to ensure this works. Andrew Dunstan and Tom Lane.
Tom Lane [Mon, 5 Dec 2005 02:39:38 +0000 (02:39 +0000)]
Fix a rather sizable number of problems in our homegrown snprintf, such as
incorrect implementation of argument reordering, arbitrary limit of output
size for sprintf and fprintf, willingness to access more bytes than "%.Ns"
specification allows, wrong formatting of LONGLONG_MIN, various field-padding
bugs and omissions. I believe it now accurately implements a subset of
the Single Unix Spec requirements (remaining unimplemented features are
documented, too). Bruce Momjian and Tom Lane.
Bruce Momjian [Sun, 4 Dec 2005 21:16:51 +0000 (21:16 +0000)]
Update:
< Win32 API, and we have to make sure MinGW handles it.
> Win32 API, and we have to make sure MinGW handles it. Another
> option is to wait for the MinGW project to fix it, or use the
> code from the LibGW32C project as a guide.
Bruce Momjian [Sun, 4 Dec 2005 04:33:18 +0000 (04:33 +0000)]
Add:
> o Add long file support for binary pg_dump output
>
> While Win32 supports 64-bit files, the MinGW API does not,
> meaning we have to build an fseeko replacement on top of the
> Win32 API, and we have to make sure MinGW handles it.
Tom Lane [Sat, 3 Dec 2005 21:06:18 +0000 (21:06 +0000)]
Treat procedural languages as owned by the bootstrap superuser, rather
than owned by nobody. This results in cleaner display of language ACLs,
since the backend's aclchk.c uses the same convention. AFAICS there is
no practical difference but it's nice to avoid emitting SET SESSION
AUTHORIZATION; also this will make it easier to transition pg_dump to
some future version in which we may include an explicit ownership column
in pg_language. Per gripe from David Begley.