Commit Graph

21016 Commits

Author SHA1 Message Date
Tom Lane
974e3cf30a cost_agg really ought to charge something per output tuple; else there
are cases where it appears to have zero run cost.
2005-08-27 22:37:00 +00:00
Tom Lane
4e5fbb34b3 Change the division of labor between grouping_planner and query_planner
so that the latter estimates the number of groups that grouping will
produce.  This is needed because it is primarily query_planner that
makes the decision between fast-start and fast-finish plans, and in the
original coding it was unable to make more than a crude rule-of-thumb
choice when the query involved grouping.  This revision helps us make
saner choices for queries like SELECT ... GROUP BY ... LIMIT, as in a
recent example from Mark Kirkwood.  Also move the responsibility for
canonicalizing sort_pathkeys and group_pathkeys into query_planner;
this information has to be available anyway to support the first change,
and doing it this way lets us get rid of compare_noncanonical_pathkeys
entirely.
2005-08-27 22:13:44 +00:00
Tom Lane
9e56c5a4cf Windows needs WSAStartup() before getaddrinfo() will work. Andrew Dunstan 2005-08-27 18:44:03 +00:00
Tom Lane
5a7d36973a Fix two separate bugs in setrefs.c. set_subqueryscan_references needs
to copy the whole plan tree before invoking adjust_plan_varnos(); else
if there is any multiply-linked substructure, the latter might increment
some Var's varno twice.  Previously there were some retail copyObject
calls inside adjust_plan_varnos, but it seems a lot safer to just dup the
whole tree first.  Also, set_inner_join_references was trying to avoid
work by not recursing if a BitmapHeapScan's bitmapqualorig contained no
outer references; which was OK at the time the code was written, I think,
but now that create_bitmap_scan_plan removes duplicate clauses from
bitmapqualorig it is possible for that field to be NULL while outer
references still remain in the qpqual and/or contained indexscan nodes.
For safety, always recurse even if the BitmapHeapScan looks to be outer
reference free.  Per reports from Michael Fuhr and Oleg Bartunov.
2005-08-27 18:04:49 +00:00
Tom Lane
5824d02155 Get the MIPS assembler syntax right. Also add a separate sync command;
the reference I consulted yesterday said SC does a SYNC, but apparently
this is not true on newer MIPS processors, so be safe.
2005-08-27 16:22:48 +00:00
Bruce Momjian
338e28e234 Fix typo:
sql_information_info -> sql_implementation_info

Robert Treat
2005-08-27 14:13:21 +00:00
Bruce Momjian
a1a19bb8fb Add:
> * Allow user-defined types to specify a type modifier at table creation
>   time
2005-08-27 13:52:07 +00:00
Bruce Momjian
542faa8244 Update:
>
>   Another issue is whether underlying table changes should be reflected
>   in the view, e.g. should SELECT * show additional columns if they
>   are added after the view is created.
2005-08-27 13:38:43 +00:00
Tom Lane
846319db3f Another try at the inlined MIPS spinlock code. Can't test this myself,
but for sure it's not any more broken than the prior version.
2005-08-26 22:04:42 +00:00
Bruce Momjian
f9244df78f Add:
> 	o Issue a warning if a change-on-restart-only postgresql.conf value
> 	  is modified  and the server config files are reloaded
> 	o Mark change-on-restart-only values in postgresql.conf
205a209
> 	o Fix SELECT '0.01 years'::interval, '0.01 months'::interval
2005-08-26 20:38:57 +00:00
Bruce Momjian
acba287aec Add description and item:
>
> 	  Currently, while \e saves a single query as one entry, interactive
> 	  queries are saved one line at a time.  Ideally all queries
> 	  whould be saved like \e does.
>
> 	o Allow multi-line column values to align in the proper columns
>
> 	  If the second output column value is 'a\nb', the 'b' should appear
> 	  in the second display column, rather than the first column as it
> 	  does now.
2005-08-26 19:41:18 +00:00
Bruce Momjian
cad7f831e1 Update based on user comments:
<   in PL/PgSQL is to use EXECUTE.
>   in PL/PgSQL is to use EXECUTE.  One complexity is that a function
>   might itself drop and recreate dependent tables, causing it to
>   invalidate its own query plan.
2005-08-26 19:32:43 +00:00
Bruce Momjian
bdfa8e5e71 Update constraint_exclusion items:
<   inheritance, and allow it to work for UPDATE and DELETE queries
>   inheritance, allow it to work for UPDATE and DELETE queries, and allow
>   it to be used for all queries with little performance impact
< * Allow constraint_elimination to be automatically performed
<
<   This requires additional code to reduce the performance loss caused by
<   constraint elimination.
2005-08-26 19:10:48 +00:00
Bruce Momjian
88d7b711a0 Remove completed items:
< * -Allow limits on per-db/role connections
43d41
< * -Prevent dropping user that still owns objects, or auto-drop the objects
49d46
< * -Add the client IP address and port to pg_stat_activity
< * -Add session start time and last statement time to pg_stat_activity
< * -Add a function that returns the start time of the postmaster
230d224
< 	o -Allow MIN()/MAX() on arrays
< 	o -Modify array literal representation to handle array index lower bound
< 	  of other than one
253d244
< * -Add function to return compressed length of TOAST data values
< * -Prevent to_char() on interval from returning meaningless values
<
<   For example, to_char('1 month', 'mon') is meaningless.  Basically,
<   most date-related parameters to to_char() are meaningless for
<   intervals because interval is not anchored to a date.
<
< * -Have views on temporary tables exist in the temporary namespace
< * -Allow temporary views on non-temporary tables
329d311
< * -Add BETWEEN SYMMETRIC/ASYMMETRIC
< * -Add E'' escape string marker so eventually ordinary strings can treat
<   backslashes literally, for portability
<
< * -Allow additional tables to be specified in DELETE for joins
<
<   UPDATE already allows this (UPDATE...FROM) but we need similar
<   functionality in DELETE.  It's been agreed that the keyword should
<   be USING, to avoid anything as confusing as DELETE FROM a FROM b.
<
341d313
< * -Allow REINDEX to rebuild all database indexes
< * -Add an option to automatically use savepoints for each statement in a
<   multi-statement transaction.
<
<   When enabled, this would allow errors in multi-statement transactions
<   to be automatically ignored.
<
426d391
< 	o -Allow FOR UPDATE queries to do NOWAIT locks
473d437
< 	o -Allow COPY to understand \x as a hex byte
< 	o -Allow COPY to optionally include column headings in the first line
< 	o -Allow COPY FROM ... CSV to interpret newlines and carriage
< 	  returns in data
525d485
< 	o -Have SHOW ALL show descriptions for server-side variables
< 	o -Allow PL/PgSQL's RAISE function to take expressions
<
< 	  Currently only constants are supported.
<
< 	o -Change PL/PgSQL to use palloc() instead of malloc()
545d499
< 	o -Allow PL/pgSQL EXECUTE query_var INTO record_var;
550d503
< 	o -Pass arrays natively instead of as text between plperl and postgres
598d550
< 	o -Add dumping and restoring of LOB comments
638d589
< * -Implement shared row locks and use them in RI triggers
642d592
< * -Allow triggers to be disabled
< * -Add two-phase commit
<
<
< * -Prevent inherited tables from expanding temporary subtables of other
<   sessions
< * -Use indexes for MIN() and MAX()
<
<   MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
<   BY col {DESC} LIMIT 1. Completing this item involves doing this
<   transformation automatically.
<
< * -Use index to restrict rows returned by multi-key index when used with
<   non-consecutive keys to reduce heap accesses
<
<   For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and
<   col3 = 9, spin though the index checking for col1 and col3 matches,
<   rather than just col1; also called skip-scanning.
<
< * -Fetch heap pages matching index entries in sequential order
<
<   Rather than randomly accessing heap pages based on index entries, mark
<   heap pages needing access in a bitmap and do the lookups in sequential
<   order. Another method would be to sort heap ctids matching the index
<   before accessing the heap rows.
<
< * -Allow non-bitmap indexes to be combined by creating bitmaps in memory
<
<   This feature allows separate indexes to be ANDed or ORed together.  This
<   is particularly useful for data warehousing applications that need to
<   query the database in an many permutations.  This feature scans an index
<   and creates an in-memory bitmap, and allows that bitmap to be combined
<   with other bitmap created in a similar way.  The bitmap can either index
<   all TIDs, or be lossy, meaning it records just page numbers and each
<   page tuple has to be checked for validity in a separate pass.
<
< * -Fix incorrect rtree results due to wrong assumptions about "over"
<   operator semantics
782d694
< 	o -Add concurrency to GIST
813d724
< * -Allow multiple blocks to be written to WAL with one write()
< * -Consider use of open/fcntl(O_DIRECT) to minimize OS caching,
<   for WAL writes
<
<   O_DIRECT doesn't have the same media write guarantees as fsync, so it
<   is in addition to the fsync method, not in place of it.
<
< * -Cache last known per-tuple offsets to speed long tuple access
< * -Allow the size of the buffer cache used by temporary objects to be
<   specified as a GUC variable
<
<   Larger local buffer cache sizes requires more efficient handling of
<   local cache lookups.
<
< * -Improve the background writer
<
<   Allow the background writer to more efficiently write dirty buffers
<   from the end of the LRU cache and use a clock sweep algorithm to
<   write other dirty buffers to reduced checkpoint I/O
<
897d788
< * -Add a warning when the free space map is too small
917d807
< 	o -Move into the backend code
< * -Make locking of shared data structures more fine-grained
<
<   This requires that more locks be acquired but this would reduce lock
<   contention, improving concurrency.
<
< * -Improve SMP performance on i386 machines
<
<   i386-based SMP machines can generate excessive context switching
<   caused by lock failure in high concurrency situations. This may be
<   caused by CPU cache line invalidation inefficiencies.
<
979d857
< 	o  -Add ability to turn off full page writes
< * -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
< * -Change WAL to use 32-bit CRC, for performance reasons
<
< * -Use CHECK constraints to influence optimizer decisions
<
<   CHECK constraints contain information about the distribution of values
<   within the table. This is also useful for implementing subtables where
<   a tables content is distributed across several subtables.
<
1045d913
< * -ANALYZE should record a pg_statistic entry for an all-NULL column
1099d966
< * -Remove kerberos4 from source tree
1103d969
< * -Make src/port/snprintf.c thread-safe
1118d983
< * -Add C code on Unix to copy directories for use in creating new databases
1133d997
< 	o -Improve dlerror() reporting string
2005-08-26 18:59:48 +00:00
Bruce Momjian
9f60468797 Great TODO updates from Tom:
<   Currently SIGTERM of a backend can lead to lock table corruption.
>   Lock table corruption following SIGTERM of an individual backend
>   has been reported in 8.0.  A possible cause was fixed in 8.1, but
>   it is unknown whether other problems exist.  This item mostly
>   requires additional testing rather than of writing any new code.
< 	o Allow postgresql.conf values to be set so they can not be changed
< 	  by the user
166c167,171
< * %Remove Money type, add money formatting for decimal type
> * Improve the MONEY data type
>
>   Change the MONEY data type to use DECIMAL internally, with special
>   locale-aware output formatting.
>
225c230
< 	o %Allow MIN()/MAX() on arrays
> 	o -Allow MIN()/MAX() on arrays
228c233
< 	o Modify array literal representation to handle array index lower bound
> 	o -Modify array literal representation to handle array index lower bound
235a241
> 	o Auto-delete large objects when referencing row is deleted
< 	  Currently large objects entries do not have owners. Permissions can
< 	  only be set at the pg_largeobject table level.
>           /contrib/lo offers this functionality.
240d244
< 	o Auto-delete large objects when referencing row is deleted
< * %Have views on temporary tables exist in the temporary namespace
< * Allow temporary views on non-temporary tables
< * %Allow RULE recompilation
> * -Have views on temporary tables exist in the temporary namespace
> * -Allow temporary views on non-temporary tables
> * Allow VIEW/RULE recompilation when the underlying tables change
340a345,347
>
>   This is like DELETE CASCADE, but truncates.
>
381c388
< * Make row-wise comparisons work per SQL spec
> * %Make row-wise comparisons work per SQL spec
< 	o Currently the system uses the operating system COPY command to
< 	  create a new database. Add ON COMMIT capability to CREATE TABLE AS
< 	  SELECT
> 	o Add ON COMMIT capability to CREATE TABLE AS ... SELECT
427c432
< 	o %Add ALTER DOMAIN TYPE
> 	o Add ALTER DOMAIN to modify the underlying data type
< 	o %Disallow dropping of an inherited constraint
< 	o -Allow objects to be moved to different schemas
> 	o Add missing object types for ALTER ... SET SCHEMA
< 	o %Prevent child tables from altering constraints like CHECK that were
< 	  inherited from the parent table
> 	o %Disallow dropping of an inherited constraint
> 	o %Prevent child tables from altering or dropping constraints
>           like CHECK that were inherited from the parent table
< 	o Handle references to temporary tables that are created, destroyed,
< 	  then recreated during a session, and EXECUTE is not used
<
< 	  This requires the cached PL/PgSQL byte code to be invalidated when
< 	  an object referenced in the function is changed.
<
< 	o Add table function support to pltcl, plperl, plpython?
< 	o Allow PL/pgSQL to name columns by ordinal position, e.g. rec.(3)
> 	o Add table function support to pltcl, plpython
549a548
> 	o Allow function argument names to be queries from PL/PgSQL
< 	o Pass arrays natively instead of as text between plperl and postgres
< 	o Add support for polymorphic arguments and return types to plperl
> 	o -Pass arrays natively instead of as text between plperl and postgres
> 	o Add support for polymorphic arguments and return types to
> 	  languages other than PL/PgSQL
> 	o Add support for OUT and INOUT parameters to languages other
> 	  than PL/PgSQL
< * Allow libpq to access SQLSTATE so pg_ctl can test for connection failure
<
<   This would be used for checking if the server is up.
<
565c563
< * Have initdb set DateStyle based on locale?
> * Have initdb set the input DateStyle (MDY or DMY) based on locale?
567d564
< * Add a schema option to createlang
< 	o Add pg_dumpall custom format dumps.
<
< 	  This is probably best done by combining pg_dump and pg_dumpall
< 	  into a single binary.
<
> 	o Add pg_dumpall custom format dumps?
612c605,606
< 	o Remove unnecessary abstractions in pg_dump source code
> 	o Remove unnecessary function pointer abstractions in pg_dump source
> 	  code
< * %Remove CREATE CONSTRAINT TRIGGER
<
<   This was used in older releases to dump referential integrity
<   constraints.
<
682a672,675
>   This is particularly important for references to temporary tables
>   in PL/PgSQL because PL/PgSQL caches query plans.  The only workaround
>   in PL/PgSQL is to use EXECUTE.
>
748c741
< * Fetch heap pages matching index entries in sequential order
> * -Fetch heap pages matching index entries in sequential order
797c790
< 	  Currently no only one hash bucket can be stored on a page. Ideally
> 	  Currently only one hash bucket can be stored on a page. Ideally
806a800,802
> 	o Add WAL logging for crash recovery
> 	o Allow multi-column hash indexes
>
812a809,812
>
>   Ideally this requires a separate test program that can be run
>   at initdb time or optionally later.
>
867c867
< * Improve the background writer
> * -Improve the background writer
<   For large table adjustements during vacuum, it is faster to reindex
<   rather than update the index.
>   For large table adjustements during VACUUM FULL, it is faster to
>   reindex rather than update the index.
< * Reduce lock time by moving tuples with read lock, then write
<   lock and truncate table
> * Reduce lock time during VACUUM FULL by moving tuples with read lock,
>   then write lock and truncate table
919c919,920
< 	o %Suggest VACUUM FULL if a table is nearly empty
> 	o %Issue log message to suggest VACUUM FULL if a table is nearly
> 	  empty?
995d995
< * Add WAL index reliability improvement to non-btree indexes
1045c1045
< * ANALYZE should record a pg_statistic entry for an all-NULL column
> * -ANALYZE should record a pg_statistic entry for an all-NULL column
1047a1048,1051
> * Allow constraint_elimination to be automatically performed
>
>   This requires additional code to reduce the performance loss caused by
>   constraint elimination.
1090c1094
< * Remove memory/file descriptor freeing before ereport(ERROR)
> * %Remove memory/file descriptor freeing before ereport(ERROR)
< * Promote debug_query_string into a server-side function current_query()
< * Allow the identifier length to be increased via a configure option
> * %Promote debug_query_string into a server-side function current_query()
> * %Allow the identifier length to be increased via a configure option
1113d1116
< * Fix cross-compiling of time zone database via 'zic'
1130c1133
< 	o Improve dlerror() reporting string
> 	o -Improve dlerror() reporting string
1132c1135
<         o Add support for Unicode
>         o %Add support for Unicode
2005-08-26 18:52:44 +00:00
Tom Lane
a9118fc5a8 The idea of using _strncoll() on Windows doesn't work. Revert to same
code as we use on other platforms when encoding is not UTF8.
2005-08-26 17:40:36 +00:00
Tom Lane
396526d8c3 Adjust m68k spinlock code to avoid duplicate in-line and not-in-line
definitions on recent Linux systems, per Martin Pitt.
2005-08-26 14:47:35 +00:00
Tom Lane
a310a1d80c Some more mop-up for Windows IPv6 support. Andrew Dunstan 2005-08-26 03:15:12 +00:00
Tom Lane
f26b91761b Arrange for indexes and toast tables to inherit their ownership from
the parent table, even if the command that creates them is executed by
someone else (such as a superuser or a member of the owning role).
Per gripe from Michael Fuhr.
2005-08-26 03:08:15 +00:00
Tom Lane
09a6c90945 Fix bogus freeaddrinfo() call in WIN32 code, extend gai_strerror to
cover more error codes.  Per Petr Jelinek.
2005-08-25 17:51:01 +00:00
Tom Lane
1a33436224 Replace out-of-line tas() assembly code for MIPS with a properly
constrained GCC inline version.  Thiemo Seufer, by way of Martin Pitt.
2005-08-25 17:17:10 +00:00
Tom Lane
2613b74785 Factor out the common subexpression month_remainder * DAYS_PER_MONTH
in interval_mul and interval_div.  This avoids an optimization bug
in A Certain Company's compiler (and given their explanation, I wouldn't
be surprised if other compilers blow it too).  Besides the code seems
more clear this way --- in the original formulation, you had to mentally
recognize the common subexpression in order to understand what was going
on.
2005-08-25 05:01:43 +00:00
Bruce Momjian
ca4cf09232 Back out pfrees for justify_hour function calls. 2005-08-25 03:53:22 +00:00
Tom Lane
ea849a2648 Add comment explaining that autoconf's failure to find getaddrinfo()
on Windows is now a feature, not a bug.
2005-08-25 02:28:03 +00:00
Tom Lane
15df139a8c Original assumption that our own getaddrinfo routine would never support
IPv6 is obsoleted by recent Windows patch.  Perform the runtime test
whenever HAVE_IPV6 is set.  This should be OK since initdb can get
getaddrinfo from libpgport if needed.
2005-08-25 02:22:59 +00:00
Bruce Momjian
c94bbf2027 Add mention of Win32 IPv6 connections. 2005-08-25 01:32:54 +00:00
Bruce Momjian
4ea18a11fa Fix memory leak when using justify_hours. 2005-08-25 01:30:06 +00:00
Bruce Momjian
12c41d7ebd Completed:
< * -Allow triggers to be disabled [trigger]
> * -Allow triggers to be disabled
2005-08-25 01:26:01 +00:00
Bruce Momjian
e9a725fd86 Remove TODO.detail/trigger. It is done now. 2005-08-25 01:23:50 +00:00
Bruce Momjian
9e3624d5b1 Small cleanup. 2005-08-25 00:38:37 +00:00
Bruce Momjian
ded5dd6ed0 Update release checklist. 2005-08-25 00:30:10 +00:00
Tom Lane
c3bf8dee0e Add code to use Windows getaddrinfo and friends if they exist. This
has to be tested dynamically if we want to make portable executables.
Chuck McDevitt and Andrew Dunstan.
2005-08-24 22:13:23 +00:00
Tom Lane
bd19ee3457 Preliminary pass at release note editing. 2005-08-24 22:03:14 +00:00
PostgreSQL Daemon
cc88ed6303 fix up a few references to 8.1devel -> 8.1beta1 2005-08-24 21:32:41 +00:00
Tom Lane
009e8d44f8 Remove statement that to_char(interval) is deprecated; seems we are
going to keep it after all.
2005-08-24 20:49:35 +00:00
Bruce Momjian
c4bf58213e Remove sentence:
< 	  Logically, a reload should set the same values as a
<           server restart.
2005-08-24 20:34:05 +00:00
Tom Lane
41bb3cb7c9 Back off allow_nonpic_in_shlib for FreeBSD builds: only set it on i386.
This might be overly conservative, but we know it does not work on amd64.
Per buildfarm results.
2005-08-24 20:20:38 +00:00
Bruce Momjian
75f633b6d1 Update:
<           Currently, if a variable is commented out, it keeps the
<           previous uncommented value until a server restarted.
> 	  Currently, if a variable is commented out, it keeps the
> 	  previous uncommented value until a server restarted.
> 	  Logically, a reload should set the same values as a
>           server restart.
2005-08-24 19:43:26 +00:00
Bruce Momjian
03417ac182 Run spellchecker over release notes. 2005-08-24 19:41:33 +00:00
Bruce Momjian
63a67221a1 More beta1 cleanup. 2005-08-24 19:34:34 +00:00
Tom Lane
83ba41f02b Fix SHOW and RESET grammar to accept custom variable names. 2005-08-24 19:34:12 +00:00
Bruce Momjian
5d14b0d08c Suggest markup items for the future. 2005-08-24 19:31:46 +00:00
Tom Lane
06f4a53941 Make the plperl regression tests pass in 'use_strict' mode, by adding
'my' where appropriate.  Michael Fuhr
2005-08-24 19:24:54 +00:00
Bruce Momjian
9a4fd8f481 Update release notes for beta1. 2005-08-24 19:24:20 +00:00
Tom Lane
9005b757f5 Mention BEGIN { strict->import(); } as a substitute for 'use strict'
in plperl functions.
2005-08-24 19:16:49 +00:00
Tom Lane
6f64cf592b Get rid of inappropriate use of croak(). Per report from Michael Fuhr. 2005-08-24 19:06:28 +00:00
Tom Lane
95f202c021 Adjust description of use_strict parameter. Some other minor editorial
cleanup.
2005-08-24 18:56:07 +00:00
Tom Lane
f21e26225c Fix broken markup. 2005-08-24 18:26:36 +00:00
Tom Lane
a62604508f Fix up plperl 'use_strict' so that it can be enabled or disabled on the
fly.  Fix problem with incompletely duplicated setup code.  Andrew Dunstan,
from an idea of Michael Fuhr's.
2005-08-24 18:16:58 +00:00
Bruce Momjian
a06d98bbf4 Additem:
> * Add sleep() function, remove from regress.c
2005-08-24 17:56:20 +00:00