indexes spanning multiple tables

Started by Joshua N Pritikinover 20 years ago22 messages
#1Joshua N Pritikin
jpritikin@pobox.com

Is anybody working on allowing indexes to span multiple tables?

IF not, I'll give it a try.

--
Make April 15 just another day, visit http://fairtax.org

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Joshua N Pritikin (#1)
Re: indexes spanning multiple tables

Joshua N Pritikin <jpritikin@pobox.com> writes:

Is anybody working on allowing indexes to span multiple tables?
IF not, I'll give it a try.

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

See the archives for prior discussions.

regards, tom lane

#3Rosser Schwarz
rosser.schwarz@gmail.com
In reply to: Tom Lane (#2)
beginning hackers (was: indexes spanning multiple tables)

while you weren't looking, Tom Lane wrote:

[indexes spanning multiple tables]

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

That being the case, is there a list anywhere of open/wish list/TODO
items that are suitable for beginning pg hackers? I've been over the
TODO list and found myself fairly daunted by what I see, but would
still like to take a stab at contributing.

/rls

--
:wq

#4Andrew Dunstan
andrew@dunslane.net
In reply to: Rosser Schwarz (#3)
Re: beginning hackers

Rosser Schwarz wrote:

while you weren't looking, Tom Lane wrote:

[indexes spanning multiple tables]

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

That being the case, is there a list anywhere of open/wish list/TODO
items that are suitable for beginning pg hackers? I've been over the
TODO list and found myself fairly daunted by what I see, but would
still like to take a stab at contributing.

A couple of nice visible projects on the TODO list that might be
suitable for beginners:

. Add "include file" functionality in postgresql.conf
. Remove Money type, add money formatting for decimal type

But actually, the best place to start is possibly doing cleanups.

For example, gcc version 4 generates LOTS of compiler warnings. They
need clearing up. Doing that might lead to yuo look at quite a lot of
interesting code, which in turn might lead to more projects.

Plus there are always tests and docs to write ;-)

cheers

andrew

#5Hannu Krosing
hannu@skype.net
In reply to: Tom Lane (#2)
Re: indexes spanning multiple tables

On E, 2005-08-22 at 16:01 -0400, Tom Lane wrote:

Joshua N Pritikin <jpritikin@pobox.com> writes:

Is anybody working on allowing indexes to span multiple tables?
IF not, I'll give it a try.

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

See the archives for prior discussions.

What could perhaps be within reach of a very determined and brilliant
beginning backend hacker :) would be an index_merge_scan or
dual_index_scan access method, which sits atop of two index scans and
fetches always the smallest one, thus enabling getting tuples in index
order from two UNION'ed tables with indexes on ordering column (or just
getting the top/bottom tuple for things like max()/min() optimisation;

I mean things like this

SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A
LIMIT 12;

or

CREATE TABLE TP (I SERIAL PRIMARY KEY);
CREATE TABLE TC1 () INHERITS (TP);
CREATE TABLE TC2 () INHERITS (TP);
CREATE TABLE TC3 () INHERITS (TP);
SELECT MAX(I) FROM TP;

The latter could be then made to produce the following plan

QUERY PLAN
-------------------------------------------------------------------------------
Limit
-> Index Merge Scan
-> Index Scan using tc1_pkey on tc1
-> Index Merge Scan
-> Index Scan using tc2_pkey on tc2
-> Index Scan using tc3_pkey on tc3

Together with Partition Elimination this could be used in data
warehousing for queries like 'ten most expensive sales during 1st
querter' so I CC: this to bizgres list too, which is incidentally
another list where multi-table indexes are sometimes discussed.

But I'm afraid that tweaking the planner and optimizer to use this new
access method will probably not be within powers of even a determined
and brilliant _beginning_ backend hacker :(

--
Hannu Krosing <hannu@skype.net>

#6Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Andrew Dunstan (#4)
Re: beginning hackers

If someone wants to mark easy items on the TODO list with some mark,
like %, I can apply the patch. Please patch TODO and not TODO.html.

---------------------------------------------------------------------------

Andrew Dunstan wrote:

Rosser Schwarz wrote:

while you weren't looking, Tom Lane wrote:

[indexes spanning multiple tables]

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

That being the case, is there a list anywhere of open/wish list/TODO
items that are suitable for beginning pg hackers? I've been over the
TODO list and found myself fairly daunted by what I see, but would
still like to take a stab at contributing.

A couple of nice visible projects on the TODO list that might be
suitable for beginners:

. Add "include file" functionality in postgresql.conf
. Remove Money type, add money formatting for decimal type

But actually, the best place to start is possibly doing cleanups.

For example, gcc version 4 generates LOTS of compiler warnings. They
need clearing up. Doing that might lead to yuo look at quite a lot of
interesting code, which in turn might lead to more projects.

Plus there are always tests and docs to write ;-)

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#7Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Andrew Dunstan (#4)
Re: beginning hackers

On Mon, Aug 22, 2005 at 05:31:04PM -0400, Andrew Dunstan wrote:

A couple of nice visible projects on the TODO list that might be
suitable for beginners:

. Add "include file" functionality in postgresql.conf
. Remove Money type, add money formatting for decimal type

Actually they are both bad projects. The "include file" patch was
submitted by the @mohawksoft guy whose name I can't remember; it was
rejected with good reasons. The money type was proposed for removal
some time ago, and the author also asked not to.

But actually, the best place to start is possibly doing cleanups.

For example, gcc version 4 generates LOTS of compiler warnings. They
need clearing up.

Yeah, please do.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"Es fil�sofo el que disfruta con los enigmas" (G. Coli)

#8Jim C. Nasby
jnasby@pervasive.com
In reply to: Andrew Dunstan (#4)
Re: beginning hackers

On Mon, Aug 22, 2005 at 05:31:04PM -0400, Andrew Dunstan wrote:

Rosser Schwarz wrote:

while you weren't looking, Tom Lane wrote:

[indexes spanning multiple tables]

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

That being the case, is there a list anywhere of open/wish list/TODO
items that are suitable for beginning pg hackers? I've been over the
TODO list and found myself fairly daunted by what I see, but would
still like to take a stab at contributing.

A couple of nice visible projects on the TODO list that might be
suitable for beginners:

. Add "include file" functionality in postgresql.conf
. Remove Money type, add money formatting for decimal type

But actually, the best place to start is possibly doing cleanups.

For example, gcc version 4 generates LOTS of compiler warnings. They
need clearing up. Doing that might lead to yuo look at quite a lot of
interesting code, which in turn might lead to more projects.

Plus there are always tests and docs to write ;-)

Can someone turn these items into a "beginning hacker's TODO" as has
been discussed before? Or find a way to mark them on the main TODO?

If someone wants to tell me how this should be done and give me whatever
files need to be changed I'd be happy to submit a patch.

BTW, is the HTML for the website not maintained in CVS somewhere?
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

#9Andrew Dunstan
andrew@dunslane.net
In reply to: Alvaro Herrera (#7)
Re: beginning hackers

Alvaro Herrera wrote:

On Mon, Aug 22, 2005 at 05:31:04PM -0400, Andrew Dunstan wrote:

A couple of nice visible projects on the TODO list that might be
suitable for beginners:

. Add "include file" functionality in postgresql.conf
. Remove Money type, add money formatting for decimal type

Actually they are both bad projects. The "include file" patch was
submitted by the @mohawksoft guy whose name I can't remember; it was
rejected with good reasons. The money type was proposed for removal
some time ago, and the author also asked not to.

If the idea is bad it should be knocked off the list. If the
implementation was bad it might well be a reason someone else should
have a go.

Last I recall on money, the only issue preventing its removal was that
numeric formatting wasn't good enough.

cheers

andrew

#10Rod Taylor
pg@rbt.ca
In reply to: Rosser Schwarz (#3)
Re: beginning hackers (was: indexes spanning multiple

On Mon, 2005-08-22 at 15:24 -0500, Rosser Schwarz wrote:

while you weren't looking, Tom Lane wrote:

[indexes spanning multiple tables]

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

That being the case, is there a list anywhere of open/wish list/TODO
items that are suitable for beginning pg hackers? I've been over the
TODO list and found myself fairly daunted by what I see, but would
still like to take a stab at contributing.

Utility commands (CREATE, ALTER, DROP) seem to be the easiest to deal
with since they are pretty much self contained:

* Allow TRUNCATE ... CASCADE/RESTRICT
* Add a separate TRUNCATE permission
* Add COMMENT ON for all cluster global objects (roles, databases
and tablespaces)
* Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
* Have ALTER TABLE RENAME rename SERIAL sequence names

Another source of items on the TODO list is the Unsupported Features
portion of the SQL Conformance documentation:

http://www.postgresql.org/docs/8.0/interactive/unsupported-features-sql-standard.html

Identity and Generator support or possibly simple Assertions shouldn't
have too significant of a learning curve to implement. The amount of
work may be large but you don't need to dig into the difficult to do
right bits of code like the optimizer.

#11Joshua D. Drake
jd@commandprompt.com
In reply to: Andrew Dunstan (#9)
Re: beginning hackers

Actually they are both bad projects. The "include file" patch was
submitted by the @mohawksoft guy whose name I can't remember; it was
rejected with good reasons. The money type was proposed for removal
some time ago, and the author also asked not to.

Well the money type seems it should be a domain around numeric but other
than that...

Last I recall on money, the only issue preventing its removal was that
numeric formatting wasn't good enough.

As I continue to read the email .... ;) Is it good enough now?

Sincerely,

Joshua D. Drake

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

--
Your PostgreSQL solutions company - Command Prompt, Inc. 1.800.492.2240
PostgreSQL Replication, Consulting, Custom Programming, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/

#12Joshua D. Drake
jd@commandprompt.com
In reply to: Andrew Dunstan (#9)
Re: beginning hackers

Hello,

Would work on one of the pl languages constitute a good place for a
beginning hacker to start?

plPerl, plPython, plRuby, and plPHP all need support for IN/OUT
parameters I believe.

Sincerely,

Joshua D. Drake

--
Your PostgreSQL solutions company - Command Prompt, Inc. 1.800.492.2240
PostgreSQL Replication, Consulting, Custom Programming, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/

#13Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Jim C. Nasby (#8)
Re: beginning hackers

Jim C. Nasby wrote:

Can someone turn these items into a "beginning hacker's TODO" as has
been discussed before? Or find a way to mark them on the main TODO?

If someone wants to tell me how this should be done and give me whatever
files need to be changed I'd be happy to submit a patch.

Sure, submit a diff against doc/TODO and mark them with something like
%.

BTW, is the HTML for the website not maintained in CVS somewhere?

TODO.html is generated from doc/TODO automatically by me.
-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#14Jim C. Nasby
jnasby@pervasive.com
In reply to: Bruce Momjian (#6)
Re: beginning hackers

On Mon, Aug 22, 2005 at 05:53:14PM -0400, Bruce Momjian wrote:

If someone wants to mark easy items on the TODO list with some mark,
like %, I can apply the patch. Please patch TODO and not TODO.html.

I'll take a stab at this unless someone else beats me to it; though I'm
not a coder myself so there will probably be some clean-up required.
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

#15Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Joshua D. Drake (#11)
Re: beginning hackers

Joshua D. Drake wrote:

Actually they are both bad projects. The "include file" patch was
submitted by the @mohawksoft guy whose name I can't remember; it was
rejected with good reasons. The money type was proposed for removal
some time ago, and the author also asked not to.

Well the money type seems it should be a domain around numeric but other
than that...

I don't think you can do special output with DOMAIN.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#16Andrew Dunstan
andrew@dunslane.net
In reply to: Joshua D. Drake (#12)
Re: beginning hackers

Joshua D. Drake wrote:

Hello,

Would work on one of the pl languages constitute a good place for a
beginning hacker to start?

plPerl, plPython, plRuby, and plPHP all need support for IN/OUT
parameters I believe.

Probably need named parameter support first, I suspect.

But I also suspect it's not beginner material - certainly the perl XS
API is daunting dunno about the others.

cheers

andrew

#17Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Rod Taylor (#10)
Re: beginning hackers

* Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME

That one is easy and handy.

Chris

#18Joshua N Pritikin
jpritikin@pobox.com
In reply to: Tom Lane (#2)
Re: indexes spanning multiple tables

On Mon, Aug 22, 2005 at 04:01:04PM -0400, Tom Lane wrote:

Joshua N Pritikin <jpritikin@pobox.com> writes:

Is anybody working on allowing indexes to span multiple tables?
IF not, I'll give it a try.

Wouldn't recommend it as a project for a beginning backend hacker;
the locking considerations alone are a bit daunting.

OK but since I'm not convinced that I can't succeed, I'm going to
continue working on a patch.

--
Make April 15 just another day, visit http://fairtax.org

#19Jim C. Nasby
jnasby@pervasive.com
In reply to: Rod Taylor (#10)
Re: beginning hackers (was: indexes spanning multiple

On Mon, Aug 22, 2005 at 06:48:52PM -0400, Rod Taylor wrote:

Another source of items on the TODO list is the Unsupported Features
portion of the SQL Conformance documentation:

http://www.postgresql.org/docs/8.0/interactive/unsupported-features-sql-standard.html

Maybe we should just have a generic link from TODO to that info? It
doesn't seem to make sense to keep the same info in two places...
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

#20Jim C. Nasby
jnasby@pervasive.com
In reply to: Bruce Momjian (#13)
1 attachment(s)
Re: beginning hackers

On Mon, Aug 22, 2005 at 07:09:10PM -0400, Bruce Momjian wrote:

Jim C. Nasby wrote:

Can someone turn these items into a "beginning hacker's TODO" as has
been discussed before? Or find a way to mark them on the main TODO?

If someone wants to tell me how this should be done and give me whatever
files need to be changed I'd be happy to submit a patch.

Sure, submit a diff against doc/TODO and mark them with something like
%.

Here's my stab at marking items. I picked items that I thought would
either be well-contained or that would be pretty straightforward. But
since I'm not very familiar with the code itself a lot of these could be
way off-base. I tried to err on the side of marking things that might be
boarderline since presumably it's easier for someone to see a marked
item and veto it rather than look at the entire list and try and find
new items. In any case, it wouldn't hurt for someone to make another
pass after this is applied and look for easy items that I missed.

BTW, while I was doing this it struck me that it might make sense to
have a difficulty ranking of, say 1-5, instead of just marking beginner
items. Thoughts?
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

Attachments:

patchtext/plain; charset=us-asciiDownload
Index: TODO
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.1626
diff -c -r1.1626 TODO
*** TODO	23 Aug 2005 23:51:16 -0000	1.1626
--- TODO	24 Aug 2005 05:49:50 -0000
***************
*** 19,28 ****
  Administration
  ==============
  
! * Remove behavior of postmaster -o after making postmaster/postgres
    flags unique
  * -Allow limits on per-db/role connections
! * Allow pooled connections to list all prepared queries
  
    This would allow an application inheriting a pooled connection to know
    the queries prepared in the current session.
--- 19,28 ----
  Administration
  ==============
  
! * %Remove behavior of postmaster -o after making postmaster/postgres
    flags unique
  * -Allow limits on per-db/role connections
! * %Allow pooled connections to list all prepared queries
  
    This would allow an application inheriting a pooled connection to know
    the queries prepared in the current session.
***************
*** 37,43 ****
    Currently SIGTERM of a backend can lead to lock table corruption.
  
  * -Prevent dropping user that still owns objects, or auto-drop the objects
! * Set proper permissions on non-system schemas during db creation
  
    Currently all schemas are owned by the super-user because they are
    copied from the template1 database.
--- 37,43 ----
    Currently SIGTERM of a backend can lead to lock table corruption.
  
  * -Prevent dropping user that still owns objects, or auto-drop the objects
! * %Set proper permissions on non-system schemas during db creation
  
    Currently all schemas are owned by the super-user because they are
    copied from the template1 database.
***************
*** 61,72 ****
  
  * Configuration files
  
! 	o Add "include file" functionality in postgresql.conf
  	o Allow postgresql.conf values to be set so they can not be changed
  	  by the user
  	o Allow commenting of variables in postgresql.conf to restore them
  	  to defaults
! 	o Allow pg_hba.conf settings to be controlled via SQL
  
  	  This would add a function to load the SQL table from
            pg_hba.conf, and one to writes its contents to the flat file.
--- 61,72 ----
  
  * Configuration files
  
! 	o %Add "include file" functionality in postgresql.conf
  	o Allow postgresql.conf values to be set so they can not be changed
  	  by the user
  	o Allow commenting of variables in postgresql.conf to restore them
  	  to defaults
! 	o %Allow pg_hba.conf settings to be controlled via SQL
  
  	  This would add a function to load the SQL table from
            pg_hba.conf, and one to writes its contents to the flat file.
***************
*** 74,80 ****
  	  can be inserted between existing rows, e.g. row 2.5 goes
  	  between row 2 and row 3.
  
! 	o Allow postgresql.conf file values to be changed via an SQL
  	  API, perhaps using SET GLOBAL
  	o Allow the server to be stopped/restarted via an SQL API
  
--- 74,80 ----
  	  can be inserted between existing rows, e.g. row 2.5 goes
  	  between row 2 and row 3.
  
! 	o %Allow postgresql.conf file values to be changed via an SQL
  	  API, perhaps using SET GLOBAL
  	o Allow the server to be stopped/restarted via an SQL API
  
***************
*** 102,108 ****
  	  requires a tool that will call that function and connect to each
  	  database to find the objects in each database for that tablespace.
  
! 	o Add a GUC variable to control the tablespace for temporary objects
  	  and sort files
  
  	  It could start with a random tablespace from a supplied list and
--- 102,108 ----
  	  requires a tool that will call that function and connect to each
  	  database to find the objects in each database for that tablespace.
  
! 	o %Add a GUC variable to control the tablespace for temporary objects
  	  and sort files
  
  	  It could start with a random tablespace from a supplied list and
***************
*** 131,137 ****
  	    the archive contins all the files needed for point-in-time
  	    recovery.
  
! 	  o Create dump tool for write-ahead logs for use in determining
  	    transaction id for point-in-time recovery
  	  o Allow a warm standby system to also allow read-only queries
  	    [pitr]
--- 131,137 ----
  	    the archive contins all the files needed for point-in-time
  	    recovery.
  
! 	  o %Create dump tool for write-ahead logs for use in determining
  	    transaction id for point-in-time recovery
  	  o Allow a warm standby system to also allow read-only queries
  	    [pitr]
***************
*** 149,155 ****
    This would allow server log information to be easily loaded into
    a database for analysis.
  
! * Add ability to monitor the use of temporary sort files
  * -Add session start time and last statement time to pg_stat_activity
  * -Add a function that returns the start time of the postmaster
  * Allow server logs to be remotely read and removed using SQL commands
--- 149,155 ----
    This would allow server log information to be easily loaded into
    a database for analysis.
  
! * %Add ability to monitor the use of temporary sort files
  * -Add session start time and last statement time to pg_stat_activity
  * -Add a function that returns the start time of the postmaster
  * Allow server logs to be remotely read and removed using SQL commands
***************
*** 158,164 ****
  Data Types
  ==========
  
! * Remove Money type, add money formatting for decimal type
  * Change NUMERIC to enforce the maximum precision, and increase it
  * Add NUMERIC division operator that doesn't round?
  
--- 158,164 ----
  Data Types
  ==========
  
! * %Remove Money type, add money formatting for decimal type
  * Change NUMERIC to enforce the maximum precision, and increase it
  * Add NUMERIC division operator that doesn't round?
  
***************
*** 173,186 ****
  
  * Have sequence dependency track use of DEFAULT sequences,
    seqname.nextval?
! * Disallow changing default expression of a SERIAL column?
  * Fix data types where equality comparison isn't intuitive, e.g. box
! * Prevent INET cast to CIDR if the unmasked bits are not zero, or
    zero the bits
! * Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
  * Allow INET + INT4 to increment the host part of the address, or
    throw an error on overflow
! * Add 'tid != tid ' operator for use in corruption recovery
  
  
  * Dates and Times
--- 173,186 ----
  
  * Have sequence dependency track use of DEFAULT sequences,
    seqname.nextval?
! * %Disallow changing default expression of a SERIAL column?
  * Fix data types where equality comparison isn't intuitive, e.g. box
! * %Prevent INET cast to CIDR if the unmasked bits are not zero, or
    zero the bits
! * %Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
  * Allow INET + INT4 to increment the host part of the address, or
    throw an error on overflow
! * %Add 'tid != tid ' operator for use in corruption recovery
  
  
  * Dates and Times
***************
*** 217,223 ****
  * Arrays
  
  	o Allow NULLs in arrays
! 	o Allow MIN()/MAX() on arrays
  	o Delay resolution of array expression's data type so assignment
  	  coercion can be performed on empty array expressions
  	o Modify array literal representation to handle array index lower bound
--- 217,223 ----
  * Arrays
  
  	o Allow NULLs in arrays
! 	o %Allow MIN()/MAX() on arrays
  	o Delay resolution of array expression's data type so assignment
  	  coercion can be performed on empty array expressions
  	o Modify array literal representation to handle array index lower bound
***************
*** 251,257 ****
    make time reporting more consistent and will allow reporting of
    the statement start time.
  
! * Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
  * Allow to_char() to print localized month names
  * Allow functions to have a schema search path specified at creation time
  * Allow substring/replace() to get/set bit values
--- 251,257 ----
    make time reporting more consistent and will allow reporting of
    the statement start time.
  
! * %Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
  * Allow to_char() to print localized month names
  * Allow functions to have a schema search path specified at creation time
  * Allow substring/replace() to get/set bit values
***************
*** 300,315 ****
  Views / Rules
  =============
  
! * Automatically create rules on views so they are updateable, per SQL99
  
    We can only auto-create rules for simple views.  For more complex
    cases users will still have to write rules.
  
  * Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
  * Allow NOTIFY in rules involving conditionals
! * Have views on temporary tables exist in the temporary namespace
  * Allow temporary views on non-temporary tables
! * Allow RULE recompilation
  
  
  SQL Commands
--- 300,315 ----
  Views / Rules
  =============
  
! * %Automatically create rules on views so they are updateable, per SQL99
  
    We can only auto-create rules for simple views.  For more complex
    cases users will still have to write rules.
  
  * Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
  * Allow NOTIFY in rules involving conditionals
! * %Have views on temporary tables exist in the temporary namespace
  * Allow temporary views on non-temporary tables
! * %Allow RULE recompilation
  
  
  SQL Commands
***************
*** 329,337 ****
  * Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
  * -Allow REINDEX to rebuild all database indexes
  * Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
! * Allow SET CONSTRAINTS to be qualified by schema/table name
! * Allow TRUNCATE ... CASCADE/RESTRICT
! * Add a separate TRUNCATE permission
  
    Currently only the owner can TRUNCATE a table because triggers are not
    called, and the table is locked in exclusive mode.
--- 329,337 ----
  * Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
  * -Allow REINDEX to rebuild all database indexes
  * Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
! * %Allow SET CONSTRAINTS to be qualified by schema/table name
! * %Allow TRUNCATE ... CASCADE/RESTRICT
! * %Add a separate TRUNCATE permission
  
    Currently only the owner can TRUNCATE a table because triggers are not
    called, and the table is locked in exclusive mode.
***************
*** 363,369 ****
    triggers?)
  * Add NOVICE output level for helpful messages like automatic sequence/index
    creation
! * Add COMMENT ON for all cluster global objects (roles, databases
    and tablespaces)
  * -Add an option to automatically use savepoints for each statement in a
    multi-statement transaction.
--- 363,369 ----
    triggers?)
  * Add NOVICE output level for helpful messages like automatic sequence/index
    creation
! * %Add COMMENT ON for all cluster global objects (roles, databases
    and tablespaces)
  * -Add an option to automatically use savepoints for each statement in a
    multi-statement transaction.
***************
*** 416,426 ****
  
  * ALTER
  
! 	o Have ALTER TABLE RENAME rename SERIAL sequence names
! 	o Add ALTER DOMAIN TYPE
! 	o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
! 	o Allow ALTER TABLE to change constraint deferrability and actions
! 	o Disallow dropping of an inherited constraint
  	o -Allow objects to be moved to different schemas
  	o Allow ALTER TABLESPACE to move to different directories
  	o Allow databases to be moved to different tablespaces
--- 416,426 ----
  
  * ALTER
  
! 	o %Have ALTER TABLE RENAME rename SERIAL sequence names
! 	o %Add ALTER DOMAIN TYPE
! 	o %Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
! 	o %Allow ALTER TABLE to change constraint deferrability and actions
! 	o %Disallow dropping of an inherited constraint
  	o -Allow objects to be moved to different schemas
  	o Allow ALTER TABLESPACE to move to different directories
  	o Allow databases to be moved to different tablespaces
***************
*** 429,435 ****
  	  Currently non-global system tables must be in the default database
  	  tablespace. Global system tables can never be moved.
  
! 	o Prevent child tables from altering constraints like CHECK that were
  	  inherited from the parent table
  
  
--- 429,435 ----
  	  Currently non-global system tables must be in the default database
  	  tablespace. Global system tables can never be moved.
  
! 	o %Prevent child tables from altering constraints like CHECK that were
  	  inherited from the parent table
  
  
***************
*** 445,451 ****
  	  store heap rows in hashed groups, perhaps using a user-supplied
  	  hash function.
  
! 	o Add default clustering to system tables
  
  	  To do this, determine the ideal cluster index for each system
  	  table and set the cluster setting during initdb.
--- 445,451 ----
  	  store heap rows in hashed groups, perhaps using a user-supplied
  	  hash function.
  
! 	o %Add default clustering to system tables
  
  	  To do this, determine the ideal cluster index for each system
  	  table and set the cluster setting during initdb.
***************
*** 459,465 ****
  	  processed, with ROLLBACK on COPY failure.
  
  	o -Allow COPY to understand \x as a hex byte
! 	o Have COPY return the number of rows loaded/unloaded?
  	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
--- 459,465 ----
  	  processed, with ROLLBACK on COPY failure.
  
  	o -Allow COPY to understand \x as a hex byte
! 	o %Have COPY return the number of rows loaded/unloaded?
  	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
***************
*** 468,474 ****
  * GRANT/REVOKE
  
  	o Allow column-level privileges
! 	o Allow GRANT/REVOKE permissions to be applied to all schema objects
  	  with one command
  
  	  The proposed syntax is:
--- 468,474 ----
  * GRANT/REVOKE
  
  	o Allow column-level privileges
! 	o %Allow GRANT/REVOKE permissions to be applied to all schema objects
  	  with one command
  
  	  The proposed syntax is:
***************
*** 491,497 ****
  	o Prevent DROP TABLE from dropping a row referenced by its own open
  	  cursor?
  
! 	o Allow pooled connections to list all open WITH HOLD cursors
  
  	  Because WITH HOLD cursors exist outside transactions, this allows
  	  them to be listed so they can be closed.
--- 491,497 ----
  	o Prevent DROP TABLE from dropping a row referenced by its own open
  	  cursor?
  
! 	o %Allow pooled connections to list all open WITH HOLD cursors
  
  	  Because WITH HOLD cursors exist outside transactions, this allows
  	  them to be listed so they can be closed.
***************
*** 585,606 ****
  
  * pg_dump
  
! 	o Have pg_dump use multi-statement transactions for INSERT dumps
! 	o Allow pg_dump to use multiple -t and -n switches [pg_dump]
! 	o Add dumping of comments on composite type columns
! 	o Add dumping of comments on index columns
! 	o Replace crude DELETE FROM method of pg_dumpall --clean for 
            cleaning of roles with separate DROP commands
  	o -Add dumping and restoring of LOB comments
  	o Stop dumping CASCADE on DROP TYPE commands in clean mode
! 	o Add full object name to the tag field.  eg. for operators we need
  	  '=(integer, integer)', instead of just '='.
  	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 CSV output format
  	o Update pg_dump and psql to use the new COPY libpq API (Christopher)
  	o Remove unnecessary abstractions in pg_dump source code
  
--- 585,606 ----
  
  * pg_dump
  
! 	o %Have pg_dump use multi-statement transactions for INSERT dumps
! 	o %Allow pg_dump to use multiple -t and -n switches [pg_dump]
! 	o %Add dumping of comments on composite type columns
! 	o %Add dumping of comments on index columns
! 	o %Replace crude DELETE FROM method of pg_dumpall --clean for 
            cleaning of roles with separate DROP commands
  	o -Add dumping and restoring of LOB comments
  	o Stop dumping CASCADE on DROP TYPE commands in clean mode
! 	o %Add full object name to the tag field.  eg. for operators we need
  	  '=(integer, integer)', instead of just '='.
  	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 CSV output format
  	o Update pg_dump and psql to use the new COPY libpq API (Christopher)
  	o Remove unnecessary abstractions in pg_dump source code
  
***************
*** 618,624 ****
  	o Use backend PREPARE/EXECUTE facility for ecpg where possible
  	o Implement SQLDA
  	o Fix nested C comments
! 	o sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
  	o Make SET CONNECTION thread-aware, non-standard?
  	o Allow multidimensional arrays
  	o Add internationalized message strings
--- 618,624 ----
  	o Use backend PREPARE/EXECUTE facility for ecpg where possible
  	o Implement SQLDA
  	o Fix nested C comments
! 	o %sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
  	o Make SET CONNECTION thread-aware, non-standard?
  	o Allow multidimensional arrays
  	o Add internationalized message strings
***************
*** 653,659 ****
  
  * Allow statement-level triggers to access modified rows
  * Support triggers on columns (Greg Sabino Mullane)
! * Remove CREATE CONSTRAINT TRIGGER
  
    This was used in older releases to dump referential integrity
    constraints.
--- 653,659 ----
  
  * Allow statement-level triggers to access modified rows
  * Support triggers on columns (Greg Sabino Mullane)
! * %Remove CREATE CONSTRAINT TRIGGER
  
    This was used in older releases to dump referential integrity
    constraints.
***************
*** 804,810 ****
  * Improve commit_delay handling to reduce fsync()
  * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
  * -Allow multiple blocks to be written to WAL with one write()
! * Add an option to sync() before fsync()'ing checkpoint files
  * Add program to test if fsync has a delay compared to non-fsync
  
  
--- 804,810 ----
  * Improve commit_delay handling to reduce fsync()
  * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
  * -Allow multiple blocks to be written to WAL with one write()
! * %Add an option to sync() before fsync()'ing checkpoint files
  * Add program to test if fsync has a delay compared to non-fsync
  
  
***************
*** 902,915 ****
    VACUUM can look at just those pages rather than the entire table.  In
    the event of a system crash, the bitmap would probably be invalidated.
  
! * Add system view to show free space map contents
  
  
  * Auto-vacuum
  
  	o -Move into the backend code
  	o Use free-space map information to guide refilling
! 	o Do VACUUM FULL if table is nearly empty?
  	o Improve xid wraparound detection by recording per-table rather
  	  than per-database
  
--- 902,915 ----
    VACUUM can look at just those pages rather than the entire table.  In
    the event of a system crash, the bitmap would probably be invalidated.
  
! * %Add system view to show free space map contents
  
  
  * Auto-vacuum
  
  	o -Move into the backend code
  	o Use free-space map information to guide refilling
! 	o %Do VACUUM FULL if table is nearly empty?
  	o Improve xid wraparound detection by recording per-table rather
  	  than per-database
  
***************
*** 1075,1081 ****
  * Rename some /contrib modules from pg* to pg_*
  * Move some things from /contrib into main tree
  * Move some /contrib modules out to their own project sites
! * Remove warnings created by -Wcast-align
  * Move platform-specific ps status display info from ps_status.c to ports
  * Add optional CRC checksum to heap and index pages
  * Improve documentation to build only interfaces (Marc)
--- 1075,1081 ----
  * Rename some /contrib modules from pg* to pg_*
  * Move some things from /contrib into main tree
  * Move some /contrib modules out to their own project sites
! * %Remove warnings created by -Wcast-align
  * Move platform-specific ps status display info from ps_status.c to ports
  * Add optional CRC checksum to heap and index pages
  * Improve documentation to build only interfaces (Marc)
***************
*** 1106,1111 ****
--- 1106,1112 ----
  * Fix cross-compiling of time zone database via 'zic'
  * Fix sgmltools so PDFs can be generated with bookmarks
  * -Add C code on Unix to copy directories for use in creating new databases
+ * %Clean up compiler warnings (especially with gcc version 4)
  
  
  * Win32
#21Meir Maor
meirmaor@gmail.com
In reply to: Jim C. Nasby (#20)
Re: beginning hackers

IMHO (as a wanbe pgsql hacker) it is more important to mark tasks as
suitable for beginners, if they do not require in depth knowledge of
the pgsql codebase, and not
according to how easy they are in other terms.
for example If a task requires a significant amount of new non trivial
code which has little to
do with existing code and is just plugged in one little place, I would
consider this
task suitable for beginners, as I do not assume beginner pgsql hackers
are incompetent
or even inexperienced programmers they are simply to pgsql.

Meir

Show quoted text

On 8/24/05, Jim C. Nasby <jnasby@pervasive.com> wrote:

On Mon, Aug 22, 2005 at 07:09:10PM -0400, Bruce Momjian wrote:

Jim C. Nasby wrote:

Can someone turn these items into a "beginning hacker's TODO" as has
been discussed before? Or find a way to mark them on the main TODO?

If someone wants to tell me how this should be done and give me whatever
files need to be changed I'd be happy to submit a patch.

Sure, submit a diff against doc/TODO and mark them with something like
%.

Here's my stab at marking items. I picked items that I thought would
either be well-contained or that would be pretty straightforward. But
since I'm not very familiar with the code itself a lot of these could be
way off-base. I tried to err on the side of marking things that might be
boarderline since presumably it's easier for someone to see a marked
item and veto it rather than look at the entire list and try and find
new items. In any case, it wouldn't hurt for someone to make another
pass after this is applied and look for easy items that I missed.

BTW, while I was doing this it struck me that it might make sense to
have a difficulty ranking of, say 1-5, instead of just marking beginner
items. Thoughts?
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

#22Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Jim C. Nasby (#20)
Re: beginning hackers

Thanks, added. I think numbering them is too complicated.

---------------------------------------------------------------------------

Jim C. Nasby wrote:

On Mon, Aug 22, 2005 at 07:09:10PM -0400, Bruce Momjian wrote:

Jim C. Nasby wrote:

Can someone turn these items into a "beginning hacker's TODO" as has
been discussed before? Or find a way to mark them on the main TODO?

If someone wants to tell me how this should be done and give me whatever
files need to be changed I'd be happy to submit a patch.

Sure, submit a diff against doc/TODO and mark them with something like
%.

Here's my stab at marking items. I picked items that I thought would
either be well-contained or that would be pretty straightforward. But
since I'm not very familiar with the code itself a lot of these could be
way off-base. I tried to err on the side of marking things that might be
boarderline since presumably it's easier for someone to see a marked
item and veto it rather than look at the entire list and try and find
new items. In any case, it wouldn't hurt for someone to make another
pass after this is applied and look for easy items that I missed.

BTW, while I was doing this it struck me that it might make sense to
have a difficulty ranking of, say 1-5, instead of just marking beginner
items. Thoughts?
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461

[ Attachment, skipping... ]

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073