SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
How to contribute to
     PostgreSQL
or, 50 Ways To Love Your Project
Contribution Pie
       Core Code

Other Code




                   Everything Else
PostgreSQL Constellation

                                Specialty DB

Applications
                                                 GUIs


                             Core Distribution




               Admin Tools                        Drivers


                               Replication/HA
The 50 Ways
Code
1. Contribute Code to
      the Core
    (more on this later)
2. Review Code
we need this more than new code!
3. Squash Bugs
survey the mailing lists,
   and squash away
pgsql-bugs and all others
4. Contribute
         to an Add-In
find something on pgFoundry or /contrib
            you care about
5. Become a Driver
      Maintainer
DBD::Pg, PDO, JDBC, ODBC, libpqxx,
      psychoPg2, ecpg, etc.
Non-Code
Packaging
6. Create/Maintain an OS Package
  SuSE, Solaris, OpenBSD, AIX, Windows


7. Create/Maintain Packages for Add-ins
  Or just help OS package maintainers pick add-ins.
Applications
8. Port a popular application to PostgreSQL
  or just help maintain one
9. Create a new PostgreSQL application
  show people how to use cool PG features
9. Improve an existing PostgreSQL application
  make it #1 in its area and people will use the DB
10. Get your company to open-source an App
  have they done something cool with Postgres?
Translation
do you know a non-English language?
 PostgreSQL needs your help!
11. Translate the main docs
12. Translate add-in docs
13. Translate the website
14. Translate questions by non-English speakers
  when they need help not available in their language
PostgreSQL
  Needs
  Writers
15. Write main docs
join pgsql-docs -- learn SGML!
16. Write add-in docs
   some have no docs at all
17. Write a HOWTO
 solved a problem on your own? show
              others how
developer wiki, TechDocs, O'Reilly, etc.
18. Write a porting guide
 MySQL, Oracle, Informix, SQL Server
19. Write promotional
       content
flyers, website info, press releases
20. Write a case study
we have many companies waiting to do
           case studies
          pgsql-advocacy
20. Write a magazine
        article
php|arch, LinuxMag, LWN, Dr. Dobb's,
            Oreillynet, etc.
21. Write a book
APress, NoStarch, SAMS, etc.
education books needed most
22. Just Blog It
We             Designers!
Are you talented with graphics? We could use
 your help. Heck, I could use your help.
23. Contribute to the website design
    pgsql-www list
24. Design advocacy materials
    flyers, brochures: pgsql-advocacy list
25. Create logos & Graphics
    t-shirts and banners too
User Groups
local user groups help grow the PostgreSQL
  community
26. Lead a PostgreSQL User Group
    arrange monthly meetings
27. Present at someone else's UG
 Linux UG, sysadmins, Perl, Rails, MSDN, etc.
Conferences
28. Speak at a technology conference
    hundreds every year
    keep track & submit a paper
    ask Funds Group for help with travel
29. Work in PostgreSQL booth
    sign-up sheet for the OSCON booth
    in the back of the room.
30. Organize a PostgreSQL mini-conference
    like this one!
Infrastructure
               Sysadmins wanted!
31. Help maintain & improve the postgresql.org
 infrastructure
    hundreds of volunteer-hours needed
32. Donate a server or virtual server
33. Organize a PostgreSQL mini-conference
    like this one!
At Work

34. Persuade your company to do more projects
 with PostgreSQL
35. Get your company to provide a testimonial
    and get on the postgresql.org home page
36. Convince your company to do a case study
    we need more highly technical ones
Help other users
If you got help as a newbie, you can
            return the favor.
        37. On mailing lists
      (-newbie, -SQL, -general)
            38. On IRC
 39. On other projects' mailing lists
      40. In other languages
You can never
have too much
Testing
41. Test new patches
try them out and see what breaks
42. Run a pgbuildfarm
      instance
    www.pgbuildfarm.org
43. Help improve the
    pgbuildfarm
 we want it to test more things
44. Do performance
       tests
 compare versions & settings
45. Check
standards/spec
  compliance
SQL, ODBC, JDBC, APIs
46. Test integration
does the new version work with all
         drivers & tools?
47. Test applications
 try porting yours to the beta,
 or popular OSS applications
Education

48. Get your school / alma mater to include
 PostgreSQL in the cirriculum


49. Participate in Summer of Code
    student, mentor, recruiter, admin
50. Money
donations gladly accepted
       through SPI
So, you still wanna write
      some code?
Life of a Patch


a contribution success story in examples
You have an idea
You research if we've
 discussed it before
You research applicable
      standards
You survey other users
 From: "Raymond O'Donnell" <rod ( at ) iol ( dot ) ie>
 To: pgsql-general ( at ) postgresql ( dot ) org
 Subject: Male/female
 Date: Fri, 08 Dec 2006 15:23:11 -0000

 Just wondering.....how do list member represent gender when storing
 details of people in a database?

 I've done it two ways:

 * A bool column, with the understanding that true/false represents
 one gender or the other.

 * Create a domain, something like:
 CREATE DOMAIN gender_domain
   AS character varying(7)
   NOT NULL
    CONSTRAINT gender_domain_check CHECK ((((VALUE)::text =
 'male'::text) OR ((VALUE)::text = 'Female'::text)))

 I personally prefer the second, as it's self-documenting...is there
 any other/better way of doing it?
You propose your idea
   on pgsql-hackers
               (or other developer list)
From: Jeff Davis <pgsql ( at ) j-davis ( dot ) com>
To: pgsql-hackers ( at ) postgresql ( dot ) org
Subject: Would this SPI function be useful?
Date: Mon, 22 Jan 2007 17:51:26 -0800

Would it be useful to have an SPI function that returns the OID and
namespace of the function being executed?

The reason I bring this up is due to a discussion on the PostGIS lists
about making the installation able to work in any namespace from one
generic SQL script.

The problem they have is that, because the functions don't know what
schema they reside in, they don't know how to call out to other
functions in the same namespace.

It might be useful to have a few basic functions that allow developers
of add-ons to access information like that. What come to my mind are:

SPI_get_my_oid();
SPI_get_my_nspname();

Regards,
Tom Lane says
          your idea sucks
From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us>
To: Newbie hacker
Subject: Re: New data type idea
Date: Wed, 06 Jun 2007 19:41:26 -0400

Search the archives of this list on “URL data type” and you'll see a host of
reasons why it's a really bad idea. You should think about these things
more before you post them. Besides, who needs this?

            regards, tom lane
No, not really

From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us>
To: Newbie hacker
Subject: Re: New data type idea
Date: Wed, 06 Jun 2007 19:41:26 -0400

I'm not sure that you could apply the complex rules for URLs to a data type
constraint without it being a huge performance drag. Did you have something
in mind for this?


            regards, tom lane
If you're lucky, you get a
         lot of feedback
From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net>
To: pgsql-hackers ( at ) postgresql ( dot ) org
Subject: Re: [PATCHES] Enums patch v2                      From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca>
Date: Tue, 19 Dec 2006 10:58:48 +0100                      To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net>
                                                           Subject: Re: Idea for new data type
Heikki Linnakangas wrote:                                  Date: Tue, 6 Feb 2007 11:46:24 -0500
> I'm sorry I missed the original discussions, but I have to ask: Why
> do we want enums in core? The only potential advantage I can see over
> using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote:
                                                           On Tue,
                                                           > Andrew Sullivan wrote:
                                                           > >
The difference is that foreign-key-referenced data is part of your data
                                                           > >As a data point, some time ago (7.2 days) I used to do this as a
whereas enums would be part of the type system used >matter of completeness, and never had a collision.
                                                           > to model the data.
                                                           >
                                                           > The point I at least have been trying to make is that extensions
         From: Neil Conway <neilc ( at ) samurai ( dot ) com >
         To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org>
         Subject: Re: Asynchronous I/O Support
         Date: Sun, 15 Oct 2006 14:26:12 -0400

          On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote:
          > Sure, I even implemented it once. Didn't get any faster.

          Did you just do something akin to s/read/aio_read/ etc., or something
          more ambitious? I think that really taking advantage of the ability to
          have multiple I/O requests outstanding would take some leg work.

          > Maybe one of these days I should work out if my current system supports
          > it, and give it another go...



                                   Even negative feedback is useful.
If you don't, find out who
   should be interested.
From: "Dragan Zubac" <zubacdragan ( at ) gmail ( dot ) com>
To: Andrew Sullivan
Subject: URL Data type
Date: Tue, 26 Sep 2007 22:39:18 +0200

Andrew:
Given the kind of data you work with, would you find a URL data type
    helpful?   Can you check over my idea below?

...
Then you go off and
develop a specification
  CREATE TABLE tabname (
        ...
        ...
    ) PARTITION BY
    HASH(expr)
   | RANGE(expr)
   | LIST(expr)
   [PARTITIONS num_partitions] /* will apply to HASH
  only for now*/
   [PARTITION partition_name CHECK(...),
    PARTITION partition_name CHECK(...)
    ...
   ];
You post the
                          specification
From: NikhilS <nikkhils ( at ) gmail ( dot ) com>
To: pgsql-hackers ( at ) postgresql ( dot ) org
Subject: Auto creation of Partitions
Date: Tue, 6 Mar 2007 17:27:50 +0530

Hi,

This is to get feedback to meet the following TODO:
Simplify ability to create partitioned tables
This would allow creation of partitioned tables without requiring creation of rules for
    INSERT/UPDATE/DELETE, and constraints for rapid partition selection. Options could
    include range and hash partition selection.


There was some discussion on the pgsql mailing lists, which lead to the above TODO:
http://archives.postgresql.org/pgsql-hackers/2006-09/msg00189.php
http://archives.postgresql.org/pgsql-hackers/2006-08/msg01874.php

We can have the following syntax to support auto creation of partitions in Postgresql:

 CREATE TABLE tabname (
     ...
     ...
  ) PARTITION BY
You get more feedback
From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net>
To: pgsql-hackers ( at ) postgresql ( dot ) org
Subject: Re: [PATCHES] Enums patch v2                      From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca>
Date: Tue, 19 Dec 2006 10:58:48 +0100                      To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net>
                                                           Subject: Re: Idea for new data type
Heikki Linnakangas wrote:                                  Date: Tue, 6 Feb 2007 11:46:24 -0500
> I'm sorry I missed the original discussions, but I have to ask: Why
> do we want enums in core? The only potential advantage I can see over
> using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote:
                                                           On Tue,
                                                           > Andrew Sullivan wrote:
                                                           > >
The difference is that foreign-key-referenced data is part of your data
                                                           > >As a data point, some time ago (7.2 days) I used to do this as a
whereas enums would be part of the type system used >matter of completeness, and never had a collision.
                                                           > to model the data.
                                                           >
                                                           > The point I at least have been trying to make is that extensions
         From: Neil Conway <neilc ( at ) samurai ( dot ) com >
         To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org>
         Subject: Re: Asynchronous I/O Support
         Date: Sun, 15 Oct 2006 14:26:12 -0400

          On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote:
          > Sure, I even implemented it once. Didn't get any faster.

          Did you just do something akin to s/read/aio_read/ etc., or something
          more ambitious? I think that really taking advantage of the ability to
          have multiple I/O requests outstanding would take some leg work.

          > Maybe one of these days I should work out if my current system supports
          > it, and give it another go...
If you don't, remind
people until you do.

 From: NikhilS <nikkhils ( at ) gmail ( dot ) com>
 To: pgsql-hackers ( at ) postgresql ( dot ) org
 Subject: Re: Auto creation of Partitions
 Date: Tue, 16 Mar 2007 17:27:50 +0530

 Hey! I haven't seen any comments on the spec I
     posted 10 days ago. This is on the TODO
     list; how about a little feedback?
You do several drafts of
  the specification.
     table customers       For such a modulo node, the executor would have to
           |               start multiple index scans, i.e.:
           |                                         table sample
  split @ name >= 'N'                                      |
    /                                                     |
  /                                                 'id' modulo 4
part1                part2                         /    |    |     
                                                 /      |    |       
                                             part1 part2 part3 part4

      A combination of the two would look like:

                                table invoices
                                       |
                                       |
                             split @ id >= 50000
                               /               
                             /                   
                    hash(id) modulo 3          part4
                       /    |      
                      /     |        
                   part1   part2     part3
The specification gets
done, or the discussion
      bogs down.
  Follow-Ups:                    From: Gregory Stark

  From: Tom Lane                 From: Markus Schiltknecht

                                 From: Simon Riggs
  From: Martijn van Oosterhout
  References:                    From: Joshua D. Drake

  From: NikhilS                  From: Markus Schiltknecht

  From: Markus Schiltknecht      From: Martijn van Oosterhout

                                 From: Luke Lonergan
  From: Simon Riggs
                                 From: Simon Riggs
  From: Gregory Stark
                                 From: Shane Ambler
  From: Markus Schiltknecht
                                 From: NikhilS

                                 From: Simon Riggs
You write some code.
+ void
+ DefinePartitions(CreateStmt *stmt)
+ {
+   CreateStmt     *childStmt;
+   RangeVar       inr;
+   Oid            childOid;
+   PartitionAttrs *partAttr;
+
+   if (stmt->partAttr == NULL)
+       return;
+
+   Assert(IsA(stmt->partAttr, PartitionAttrs));
+   partAttr = (PartitionAttrs *)(stmt->partAttr);
+
+   /*
+    * All the partitions will inherit from the parent,
set the parent in the
+    * inhRelations structure
You create a proof-of-
   concept patch,
     and post it.
Auto Partitioning Patch - WIP version 1


From: NikhilS <nikkhils ( at ) gmail ( dot ) com>
To: pgsql-patches ( at ) postgresql ( dot ) org
Subject: Auto Partitioning Patch - WIP version 1
Date: Fri, 30 Mar 2007 12:28:02 +0530

Hi,

Please find attached the WIP version 1 of the auto partitioning
    patch. There was discussion on this a while back on -hackers
    at:
You get more feedback.
From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net>
To: pgsql-hackers ( at ) postgresql ( dot ) org
Subject: Re: [PATCHES] Enums patch v2                      From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca>
Date: Tue, 19 Dec 2006 10:58:48 +0100                      To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net>
                                                           Subject: Re: Idea for new data type
Heikki Linnakangas wrote:                                  Date: Tue, 6 Feb 2007 11:46:24 -0500
> I'm sorry I missed the original discussions, but I have to ask: Why
> do we want enums in core? The only potential advantage I can see over
> using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote:
                                                           On Tue,
                                                           > Andrew Sullivan wrote:
                                                           > >
The difference is that foreign-key-referenced data is part of your data
                                                           > >As a data point, some time ago (7.2 days) I used to do this as a
whereas enums would be part of the type system used >matter of completeness, and never had a collision.
                                                           > to model the data.
                                                           >
                                                           > The point I at least have been trying to make is that extensions
         From: Neil Conway <neilc ( at ) samurai ( dot ) com >
         To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org>
         Subject: Re: Asynchronous I/O Support
         Date: Sun, 15 Oct 2006 14:26:12 -0400

          On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote:
          > Sure, I even implemented it once. Didn't get any faster.

          Did you just do something akin to s/read/aio_read/ etc., or something
          more ambitious? I think that really taking advantage of the ability to
          have multiple I/O requests outstanding would take some leg work.

          > Maybe one of these days I should work out if my current system supports
          > it, and give it another go...
You develop a beta
           patch.

Auto Partitioning Patch - WIP version 6


From: NikhilS <nikkhils ( at ) gmail ( dot ) com>
To: pgsql-patches ( at ) postgresql ( dot ) org
Subject: Auto Partitioning Patch - WIP version 6
Date: Fri, 30 Mar 2007 12:28:02 +0530

Hi,

Please find attached the WIP version 6 of the auto partitioning
    patch. I've fixed the race condition pointed out with 5 ...
You apply PostgreSQL
    format and commenting
          standards.
                   Chapter 45. PostgreSQL Coding Conventions
                   Table of Contents
                   45.1. Formatting
                   45.2. Reporting Errors Within the Server
                   45.3. Error Message Style Guide
                   45.3.1. What goes where
                   45.3.2. Formatting
                   45.3.3. Quotation marks
                   45.3.4. Use of quotes
                   45.3.5. Grammar and punctuation


+   * ------------------------------------------------------------------------------
+   *     DefinePartitions
+   *     Create new partitions. They end up inheriting from the parent
+   *     relation.
+   *     Once they have been created, rules need to be assigned to the parent to
+   *     provide the UPDATEs/INSERTs/DELETEs to percolate down to the children
+   *         Callers expect this function to end with CommandCounterIncrement if it
+   *         makes any changes.
+   * ------------------------------------------------------------------------------
+   */
You submit to pgsql-
          patches.
From: Magnus Hagander <magnus ( at ) hagander ( dot ) net>
To: pgsql-patches <pgsql-patches ( at ) postgresql ( dot ) org>
Subject: SSPI authentication - patch
Date: Wed, 18 Jul 2007 12:16:42 +0200

Attached   is the patch to support SSPI authentication in libpq. With this
patch, I   can authenticate windows clients against a linux server using
kerberos   *without* reqiring setting up MIT kerberos on the windows side.
Protocol   has not changed at all.
A hacker reviews your
           patch.
From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us>
To: Magnus Hagander <magnus ( at ) hagander ( dot ) net>
Subject: Re: SSPI authentication - patch
Date: Fri, 20 Jul 2007 12:47:35 -0400

Magnus Hagander <magnus ( at ) hagander ( dot ) net> writes:
> Stephen Frost wrote:
>> That's true, but if we used upper-case with something NEW (SSPI) while
>> keeping it the same for the OLD (KRB5, and I'd vote GSSAPI) then we're
>> not breaking backwards compatibility while also catering to the masses.
>> I guess I don't see too many people using SSPI w/ an MIT KDC, and it
>> wasn't possible previously anyway.
>>
>> What do you think?

> Hmm. It makes the default a lot less clear, and opens up for confusion.
> So I'm not so sure I like it :-)
You revise & debug

From: Magnus Hagander <magnus ( at ) hagander ( dot ) net>
To: pgsql-patches <pgsql-patches ( at ) postgresql ( dot ) org>
Subject: Re: SSPI authentication - patch
Date: Thu, 19 Jul 2007 13:53:15 +0200

On Wed, Jul 18, 2007 at 12:16:42PM +0200, Magnus Hagander wrote:
> Attached is the patch to support SSPI authentication in libpq. With this
> patch, I can authenticate windows clients against a linux server using
> kerberos *without* reqiring setting up MIT kerberos on the windows side.
> Protocol has not changed at all.

Here's an updated version of this patch. This version has full SSPI support
in the server as well, so I can do both kerberos and NTLM between two
windows machines using the negotiate method.
Eventually your patch
is accepted in the queue
From: Bruce Momjian <bruce ( at ) momjian ( dot ) us>
To: Simon Riggs <simon ( at ) 2ndquadrant ( dot ) com>
Subject: Re: Synchronous Commit Doc Patch
Date: Tue, 17 Jul 2007 01:09:25 -0400 (EDT)

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.
You write the
                documentation.
23.4. Warm Standby Servers for High Availability
Continuous archiving can be used to create a high availability (HA) cluster configuration with one or more
standby servers ready to take over operations if the primary server fails. This capability is widely referred
to as warm standby or log shipping.

The primary and standby server work together to provide this capability, though the servers are only
loosely coupled. The primary server operates in continuous archiving mode, while each standby server
operates in continuous recovery mode, reading the WAL files from the primary. No changes to the
database tables are required to enable this capability, so it offers low administration overhead in
comparison with some other replication approaches. This configuration also has relatively low performance
impact on the primary server.
Feature freeze hits
You are called back to
help make your patch
integrate with others.
Your patch is applied by
     a committer.
PostgreSQL Weekly News - July 15 2007
Applied Patches
Neil Conway committed:

- In pgsql/src/bin/pg_dump/pg_dump.c, fix up the indentation of a comment that was mangled
by pgindent, and add dashes to the start/end of the comment block to try to prevent this
happening in the future.

Magnus Hagander committed:

- Stefan Kaltenbrunner's patch to support finding gssapi functions in the library "gss", as
required by Solaris 10 and possibly others.

- In pgsql/src/bin/pg_ctl/pg_ctl.c, silence compile warning on win32, per Stefan Kaltenbrunner
and reports from the buildfarm.
PostgreSQL does a
     release.
PostgreSQL 8.2 Press Kit
Contents

  Text of Original Release Additional Features Where to Download Documentation
License Contacts Quoted Company Information Corporate Support Additional Software
Translations

Original Press Release

5 December 2006, Washington DC (LISA Conference): The PostgreSQL Global
Development Group today announces the release of version 8.2 of the PostgreSQL object-
relational database management system. This 14th public release adds features, maturity,
and performance requested by business users, delivering manageability comparable to
leading enterprise database systems. Version 8.2 is expected to drive even more
migrations toward PostgreSQL.
Your patch is now a
      feature.
Now you get to maintain
it for the rest of your life!
From: Joe Conway <mail ( at ) joeconway ( dot ) com>
To: Robert Treat <xzilla ( at ) users ( dot ) sourceforge ( dot ) net>
Subject: Re: dblink connection security
Date: Sun, 01 Jul 2007 14:12:09 -0700

Robert Treat wrote:
Joe Conway <mail ( at ) joeconway ( dot ) com> writes:
Well certainly dbi-link has the exact same issue.
dbi-link only works in plperlu, so you've already decided your superuser only.

How so -- it is fundamentally no different than dblink, which is C language
(also untrusted).

I think the issue is that once the superuser creates said functions, usage of
the functions is automatically granted to PUBLIC, no? Being an untrusted
language just means that it takes a superuser to create the functions using
that language, not to use the functions themselves.
Joe
Patch Lifecycle
              Specification
Research                        Write Code


           Revise Spec
                                             Revise Patch   Write Docs


             Maintain Forever



                                                            Doc Patch
                Integrate                       Submit

   Release                       Queue
A PostgreSQL Year
RC and Branch


                                     Best time to
   Development Period              submit new stuff
      (5-6 months)



Deadline for new major features   Revise & Debug Patch
                    (1 month)
Feature Freeze
                                       Write Docs,
   Integration & Review           do integration/testing
       (3-4 months)


Beta     Beta Testing              Start discusing next
         (1-2 months)                  year's ideas

RC and Branch
Other tips on submitting
●   Don't get discouraged.
    –   Be prepared to argue.
    –   One hacker rejecting your idea doesn't mean
        everyone does.
    –   Committers (esp. Tom Lane) are often more
        concerned about maintainability than cool stuff.
●   Be flexible: you will have to make changes.
    –   Corporate coding standards are generally lower
        than the project's.
Other tips on submitting
●   Don't use the wrong arguments
    –   “MySQL/Oracle does it this way.”
    –   “Based on this hot academic trend.”
●   Some things make a patch harder to accept
    –   New syntax
    –   Backwards compatibility issues
    –   High code counts
●   Don't get discouraged.
Now, go write some
      code.
or contribute in some easier way
Contact Information
●   Josh Berkus                                       ●   Upcoming events
    –   www.powerpostgresql.com                              –   LinuxWorldExpo San
    –   josh@postgresql.org                                      Francisco, August 6-9
    –   blogs.ittoolbox.com/
                                                             –   Sun TechDays Milan,
        database/soup                                            Rome -- This
                                                                 September
●   PostgreSQL on Solaris
    –   www.sun.com/
        postgresql




                 This talk is copyright 2007 Josh Berkus, and is licensed under the creative commons attribution license

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
 
How the Postgres Query Optimizer Works
How the Postgres Query Optimizer WorksHow the Postgres Query Optimizer Works
How the Postgres Query Optimizer Works
 
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...
Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...
 
PostgreSQL query planner's internals
PostgreSQL query planner's internalsPostgreSQL query planner's internals
PostgreSQL query planner's internals
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Task parallel library presentation
Task parallel library presentationTask parallel library presentation
Task parallel library presentation
 
Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0
 
PostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability MethodsPostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability Methods
 
Escaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw LayersEscaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw Layers
 
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group ReplicationPercona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in Kotlin
 
PostgreSQL Replication Tutorial
PostgreSQL Replication TutorialPostgreSQL Replication Tutorial
PostgreSQL Replication Tutorial
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11
 
Using Optimizer Hints to Improve MySQL Query Performance
Using Optimizer Hints to Improve MySQL Query PerformanceUsing Optimizer Hints to Improve MySQL Query Performance
Using Optimizer Hints to Improve MySQL Query Performance
 
PostgreSQL, performance for queries with grouping
PostgreSQL, performance for queries with groupingPostgreSQL, performance for queries with grouping
PostgreSQL, performance for queries with grouping
 
GIT_In_90_Minutes
GIT_In_90_MinutesGIT_In_90_Minutes
GIT_In_90_Minutes
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
 
HandsOn ProxySQL Tutorial - PLSC18
HandsOn ProxySQL Tutorial - PLSC18HandsOn ProxySQL Tutorial - PLSC18
HandsOn ProxySQL Tutorial - PLSC18
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestrator
 

Similar a 50 Ways To Love Your Project

Databases benoitg 2009-03-10
Databases benoitg 2009-03-10Databases benoitg 2009-03-10
Databases benoitg 2009-03-10
benoitg
 
All about word press
All about word pressAll about word press
All about word press
Dan Beil
 
PostgreSQL versus MySQL - What Are The Real Differences
PostgreSQL versus MySQL - What Are The Real DifferencesPostgreSQL versus MySQL - What Are The Real Differences
PostgreSQL versus MySQL - What Are The Real Differences
All Things Open
 
NoSQL - No Security?
NoSQL - No Security?NoSQL - No Security?
NoSQL - No Security?
Gavin Holt
 

Similar a 50 Ways To Love Your Project (20)

Databases benoitg 2009-03-10
Databases benoitg 2009-03-10Databases benoitg 2009-03-10
Databases benoitg 2009-03-10
 
Whats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig KerstiensWhats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
Whats wrong with postgres | PGConf EU 2019 | Craig Kerstiens
 
How to contribute PostgreSQL
How to contribute PostgreSQLHow to contribute PostgreSQL
How to contribute PostgreSQL
 
Os Solomon
Os SolomonOs Solomon
Os Solomon
 
Super Sizing Youtube with Python
Super Sizing Youtube with PythonSuper Sizing Youtube with Python
Super Sizing Youtube with Python
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 
Micro services
Micro servicesMicro services
Micro services
 
UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015UnConference for Georgia Southern Computer Science March 31, 2015
UnConference for Georgia Southern Computer Science March 31, 2015
 
10 ways to accelerate software development by dave thomas at yow! nights hk
10 ways to accelerate software development by dave thomas at yow! nights hk10 ways to accelerate software development by dave thomas at yow! nights hk
10 ways to accelerate software development by dave thomas at yow! nights hk
 
All about word press
All about word pressAll about word press
All about word press
 
Drupal Basics
Drupal BasicsDrupal Basics
Drupal Basics
 
Austin Web Architecture
Austin Web ArchitectureAustin Web Architecture
Austin Web Architecture
 
The Past, Present, and Future of Hadoop at LinkedIn
The Past, Present, and Future of Hadoop at LinkedInThe Past, Present, and Future of Hadoop at LinkedIn
The Past, Present, and Future of Hadoop at LinkedIn
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
 
Devry CIS 246 Full Course Latest
Devry CIS 246 Full Course LatestDevry CIS 246 Full Course Latest
Devry CIS 246 Full Course Latest
 
LinkedIn
LinkedInLinkedIn
LinkedIn
 
PostgreSQL versus MySQL - What Are The Real Differences
PostgreSQL versus MySQL - What Are The Real DifferencesPostgreSQL versus MySQL - What Are The Real Differences
PostgreSQL versus MySQL - What Are The Real Differences
 
SQL Server Dev ToolKit
SQL Server Dev ToolKitSQL Server Dev ToolKit
SQL Server Dev ToolKit
 
Roadmap
RoadmapRoadmap
Roadmap
 
NoSQL - No Security?
NoSQL - No Security?NoSQL - No Security?
NoSQL - No Security?
 

Más de PostgreSQL Experts, Inc.

Elephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and VariantsElephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and Variants
PostgreSQL Experts, Inc.
 

Más de PostgreSQL Experts, Inc. (20)

Shootout at the PAAS Corral
Shootout at the PAAS CorralShootout at the PAAS Corral
Shootout at the PAAS Corral
 
Shootout at the AWS Corral
Shootout at the AWS CorralShootout at the AWS Corral
Shootout at the AWS Corral
 
Fail over fail_back
Fail over fail_backFail over fail_back
Fail over fail_back
 
PostgreSQL Replication in 10 Minutes - SCALE
PostgreSQL Replication in 10  Minutes - SCALEPostgreSQL Replication in 10  Minutes - SCALE
PostgreSQL Replication in 10 Minutes - SCALE
 
HowTo DR
HowTo DRHowTo DR
HowTo DR
 
Give A Great Tech Talk 2013
Give A Great Tech Talk 2013Give A Great Tech Talk 2013
Give A Great Tech Talk 2013
 
Pg py-and-squid-pypgday
Pg py-and-squid-pypgdayPg py-and-squid-pypgday
Pg py-and-squid-pypgday
 
92 grand prix_2013
92 grand prix_201392 grand prix_2013
92 grand prix_2013
 
Five steps perform_2013
Five steps perform_2013Five steps perform_2013
Five steps perform_2013
 
7 Ways To Crash Postgres
7 Ways To Crash Postgres7 Ways To Crash Postgres
7 Ways To Crash Postgres
 
PWNage: Producing a newsletter with Perl
PWNage: Producing a newsletter with PerlPWNage: Producing a newsletter with Perl
PWNage: Producing a newsletter with Perl
 
10 Ways to Destroy Your Community
10 Ways to Destroy Your Community10 Ways to Destroy Your Community
10 Ways to Destroy Your Community
 
Open Source Press Relations
Open Source Press RelationsOpen Source Press Relations
Open Source Press Relations
 
5 (more) Ways To Destroy Your Community
5 (more) Ways To Destroy Your Community5 (more) Ways To Destroy Your Community
5 (more) Ways To Destroy Your Community
 
Preventing Community (from Linux Collab)
Preventing Community (from Linux Collab)Preventing Community (from Linux Collab)
Preventing Community (from Linux Collab)
 
Development of 8.3 In India
Development of 8.3 In IndiaDevelopment of 8.3 In India
Development of 8.3 In India
 
PostgreSQL and MySQL
PostgreSQL and MySQLPostgreSQL and MySQL
PostgreSQL and MySQL
 
8.4 Upcoming Features
8.4 Upcoming Features 8.4 Upcoming Features
8.4 Upcoming Features
 
Elephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and VariantsElephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and Variants
 
Writeable CTEs: The Next Big Thing
Writeable CTEs: The Next Big ThingWriteable CTEs: The Next Big Thing
Writeable CTEs: The Next Big Thing
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

50 Ways To Love Your Project

  • 1. How to contribute to PostgreSQL or, 50 Ways To Love Your Project
  • 2. Contribution Pie Core Code Other Code Everything Else
  • 3. PostgreSQL Constellation Specialty DB Applications GUIs Core Distribution Admin Tools Drivers Replication/HA
  • 6. 1. Contribute Code to the Core (more on this later)
  • 7. 2. Review Code we need this more than new code!
  • 8. 3. Squash Bugs survey the mailing lists, and squash away pgsql-bugs and all others
  • 9. 4. Contribute to an Add-In find something on pgFoundry or /contrib you care about
  • 10. 5. Become a Driver Maintainer DBD::Pg, PDO, JDBC, ODBC, libpqxx, psychoPg2, ecpg, etc.
  • 12. Packaging 6. Create/Maintain an OS Package SuSE, Solaris, OpenBSD, AIX, Windows 7. Create/Maintain Packages for Add-ins Or just help OS package maintainers pick add-ins.
  • 13. Applications 8. Port a popular application to PostgreSQL or just help maintain one 9. Create a new PostgreSQL application show people how to use cool PG features 9. Improve an existing PostgreSQL application make it #1 in its area and people will use the DB 10. Get your company to open-source an App have they done something cool with Postgres?
  • 14. Translation do you know a non-English language? PostgreSQL needs your help! 11. Translate the main docs 12. Translate add-in docs 13. Translate the website 14. Translate questions by non-English speakers when they need help not available in their language
  • 15. PostgreSQL Needs Writers
  • 16. 15. Write main docs join pgsql-docs -- learn SGML!
  • 17. 16. Write add-in docs some have no docs at all
  • 18. 17. Write a HOWTO solved a problem on your own? show others how developer wiki, TechDocs, O'Reilly, etc.
  • 19. 18. Write a porting guide MySQL, Oracle, Informix, SQL Server
  • 20. 19. Write promotional content flyers, website info, press releases
  • 21. 20. Write a case study we have many companies waiting to do case studies pgsql-advocacy
  • 22. 20. Write a magazine article php|arch, LinuxMag, LWN, Dr. Dobb's, Oreillynet, etc.
  • 23. 21. Write a book APress, NoStarch, SAMS, etc. education books needed most
  • 25. We Designers! Are you talented with graphics? We could use your help. Heck, I could use your help. 23. Contribute to the website design pgsql-www list 24. Design advocacy materials flyers, brochures: pgsql-advocacy list 25. Create logos & Graphics t-shirts and banners too
  • 26. User Groups local user groups help grow the PostgreSQL community 26. Lead a PostgreSQL User Group arrange monthly meetings 27. Present at someone else's UG Linux UG, sysadmins, Perl, Rails, MSDN, etc.
  • 27. Conferences 28. Speak at a technology conference hundreds every year keep track & submit a paper ask Funds Group for help with travel 29. Work in PostgreSQL booth sign-up sheet for the OSCON booth in the back of the room. 30. Organize a PostgreSQL mini-conference like this one!
  • 28. Infrastructure Sysadmins wanted! 31. Help maintain & improve the postgresql.org infrastructure hundreds of volunteer-hours needed 32. Donate a server or virtual server 33. Organize a PostgreSQL mini-conference like this one!
  • 29. At Work 34. Persuade your company to do more projects with PostgreSQL 35. Get your company to provide a testimonial and get on the postgresql.org home page 36. Convince your company to do a case study we need more highly technical ones
  • 30. Help other users If you got help as a newbie, you can return the favor. 37. On mailing lists (-newbie, -SQL, -general) 38. On IRC 39. On other projects' mailing lists 40. In other languages
  • 31. You can never have too much Testing
  • 32. 41. Test new patches try them out and see what breaks
  • 33. 42. Run a pgbuildfarm instance www.pgbuildfarm.org
  • 34. 43. Help improve the pgbuildfarm we want it to test more things
  • 35. 44. Do performance tests compare versions & settings
  • 36. 45. Check standards/spec compliance SQL, ODBC, JDBC, APIs
  • 37. 46. Test integration does the new version work with all drivers & tools?
  • 38. 47. Test applications try porting yours to the beta, or popular OSS applications
  • 39. Education 48. Get your school / alma mater to include PostgreSQL in the cirriculum 49. Participate in Summer of Code student, mentor, recruiter, admin
  • 40. 50. Money donations gladly accepted through SPI
  • 41. So, you still wanna write some code?
  • 42. Life of a Patch a contribution success story in examples
  • 43. You have an idea
  • 44. You research if we've discussed it before
  • 46. You survey other users From: "Raymond O'Donnell" <rod ( at ) iol ( dot ) ie> To: pgsql-general ( at ) postgresql ( dot ) org Subject: Male/female Date: Fri, 08 Dec 2006 15:23:11 -0000 Just wondering.....how do list member represent gender when storing details of people in a database? I've done it two ways: * A bool column, with the understanding that true/false represents one gender or the other. * Create a domain, something like: CREATE DOMAIN gender_domain AS character varying(7) NOT NULL CONSTRAINT gender_domain_check CHECK ((((VALUE)::text = 'male'::text) OR ((VALUE)::text = 'Female'::text))) I personally prefer the second, as it's self-documenting...is there any other/better way of doing it?
  • 47. You propose your idea on pgsql-hackers (or other developer list) From: Jeff Davis <pgsql ( at ) j-davis ( dot ) com> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Would this SPI function be useful? Date: Mon, 22 Jan 2007 17:51:26 -0800 Would it be useful to have an SPI function that returns the OID and namespace of the function being executed? The reason I bring this up is due to a discussion on the PostGIS lists about making the installation able to work in any namespace from one generic SQL script. The problem they have is that, because the functions don't know what schema they reside in, they don't know how to call out to other functions in the same namespace. It might be useful to have a few basic functions that allow developers of add-ons to access information like that. What come to my mind are: SPI_get_my_oid(); SPI_get_my_nspname(); Regards,
  • 48. Tom Lane says your idea sucks From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us> To: Newbie hacker Subject: Re: New data type idea Date: Wed, 06 Jun 2007 19:41:26 -0400 Search the archives of this list on “URL data type” and you'll see a host of reasons why it's a really bad idea. You should think about these things more before you post them. Besides, who needs this? regards, tom lane
  • 49. No, not really From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us> To: Newbie hacker Subject: Re: New data type idea Date: Wed, 06 Jun 2007 19:41:26 -0400 I'm not sure that you could apply the complex rules for URLs to a data type constraint without it being a huge performance drag. Did you have something in mind for this? regards, tom lane
  • 50. If you're lucky, you get a lot of feedback From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Re: [PATCHES] Enums patch v2 From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca> Date: Tue, 19 Dec 2006 10:58:48 +0100 To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net> Subject: Re: Idea for new data type Heikki Linnakangas wrote: Date: Tue, 6 Feb 2007 11:46:24 -0500 > I'm sorry I missed the original discussions, but I have to ask: Why > do we want enums in core? The only potential advantage I can see over > using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote: On Tue, > Andrew Sullivan wrote: > > The difference is that foreign-key-referenced data is part of your data > >As a data point, some time ago (7.2 days) I used to do this as a whereas enums would be part of the type system used >matter of completeness, and never had a collision. > to model the data. > > The point I at least have been trying to make is that extensions From: Neil Conway <neilc ( at ) samurai ( dot ) com > To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org> Subject: Re: Asynchronous I/O Support Date: Sun, 15 Oct 2006 14:26:12 -0400 On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote: > Sure, I even implemented it once. Didn't get any faster. Did you just do something akin to s/read/aio_read/ etc., or something more ambitious? I think that really taking advantage of the ability to have multiple I/O requests outstanding would take some leg work. > Maybe one of these days I should work out if my current system supports > it, and give it another go... Even negative feedback is useful.
  • 51. If you don't, find out who should be interested. From: "Dragan Zubac" <zubacdragan ( at ) gmail ( dot ) com> To: Andrew Sullivan Subject: URL Data type Date: Tue, 26 Sep 2007 22:39:18 +0200 Andrew: Given the kind of data you work with, would you find a URL data type helpful? Can you check over my idea below? ...
  • 52. Then you go off and develop a specification CREATE TABLE tabname ( ... ... ) PARTITION BY HASH(expr) | RANGE(expr) | LIST(expr) [PARTITIONS num_partitions] /* will apply to HASH only for now*/ [PARTITION partition_name CHECK(...), PARTITION partition_name CHECK(...) ... ];
  • 53. You post the specification From: NikhilS <nikkhils ( at ) gmail ( dot ) com> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Auto creation of Partitions Date: Tue, 6 Mar 2007 17:27:50 +0530 Hi, This is to get feedback to meet the following TODO: Simplify ability to create partitioned tables This would allow creation of partitioned tables without requiring creation of rules for INSERT/UPDATE/DELETE, and constraints for rapid partition selection. Options could include range and hash partition selection. There was some discussion on the pgsql mailing lists, which lead to the above TODO: http://archives.postgresql.org/pgsql-hackers/2006-09/msg00189.php http://archives.postgresql.org/pgsql-hackers/2006-08/msg01874.php We can have the following syntax to support auto creation of partitions in Postgresql: CREATE TABLE tabname ( ... ... ) PARTITION BY
  • 54. You get more feedback From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Re: [PATCHES] Enums patch v2 From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca> Date: Tue, 19 Dec 2006 10:58:48 +0100 To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net> Subject: Re: Idea for new data type Heikki Linnakangas wrote: Date: Tue, 6 Feb 2007 11:46:24 -0500 > I'm sorry I missed the original discussions, but I have to ask: Why > do we want enums in core? The only potential advantage I can see over > using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote: On Tue, > Andrew Sullivan wrote: > > The difference is that foreign-key-referenced data is part of your data > >As a data point, some time ago (7.2 days) I used to do this as a whereas enums would be part of the type system used >matter of completeness, and never had a collision. > to model the data. > > The point I at least have been trying to make is that extensions From: Neil Conway <neilc ( at ) samurai ( dot ) com > To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org> Subject: Re: Asynchronous I/O Support Date: Sun, 15 Oct 2006 14:26:12 -0400 On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote: > Sure, I even implemented it once. Didn't get any faster. Did you just do something akin to s/read/aio_read/ etc., or something more ambitious? I think that really taking advantage of the ability to have multiple I/O requests outstanding would take some leg work. > Maybe one of these days I should work out if my current system supports > it, and give it another go...
  • 55. If you don't, remind people until you do. From: NikhilS <nikkhils ( at ) gmail ( dot ) com> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Re: Auto creation of Partitions Date: Tue, 16 Mar 2007 17:27:50 +0530 Hey! I haven't seen any comments on the spec I posted 10 days ago. This is on the TODO list; how about a little feedback?
  • 56. You do several drafts of the specification. table customers For such a modulo node, the executor would have to | start multiple index scans, i.e.: | table sample split @ name >= 'N' | / | / 'id' modulo 4 part1 part2 / | | / | | part1 part2 part3 part4 A combination of the two would look like: table invoices | | split @ id >= 50000 / / hash(id) modulo 3 part4 / | / | part1 part2 part3
  • 57. The specification gets done, or the discussion bogs down. Follow-Ups: From: Gregory Stark From: Tom Lane From: Markus Schiltknecht From: Simon Riggs From: Martijn van Oosterhout References: From: Joshua D. Drake From: NikhilS From: Markus Schiltknecht From: Markus Schiltknecht From: Martijn van Oosterhout From: Luke Lonergan From: Simon Riggs From: Simon Riggs From: Gregory Stark From: Shane Ambler From: Markus Schiltknecht From: NikhilS From: Simon Riggs
  • 58. You write some code. + void + DefinePartitions(CreateStmt *stmt) + { + CreateStmt *childStmt; + RangeVar inr; + Oid childOid; + PartitionAttrs *partAttr; + + if (stmt->partAttr == NULL) + return; + + Assert(IsA(stmt->partAttr, PartitionAttrs)); + partAttr = (PartitionAttrs *)(stmt->partAttr); + + /* + * All the partitions will inherit from the parent, set the parent in the + * inhRelations structure
  • 59. You create a proof-of- concept patch, and post it. Auto Partitioning Patch - WIP version 1 From: NikhilS <nikkhils ( at ) gmail ( dot ) com> To: pgsql-patches ( at ) postgresql ( dot ) org Subject: Auto Partitioning Patch - WIP version 1 Date: Fri, 30 Mar 2007 12:28:02 +0530 Hi, Please find attached the WIP version 1 of the auto partitioning patch. There was discussion on this a while back on -hackers at:
  • 60. You get more feedback. From: Peter Eisentraut <peter_e ( at ) gmx ( dot ) net> To: pgsql-hackers ( at ) postgresql ( dot ) org Subject: Re: [PATCHES] Enums patch v2 From: Andrew Sullivan <ajs ( at ) crankycanuck ( dot ) ca> Date: Tue, 19 Dec 2006 10:58:48 +0100 To: Andrew Dunstan <andrew ( at ) dunslane ( dot ) net> Subject: Re: Idea for new data type Heikki Linnakangas wrote: Date: Tue, 6 Feb 2007 11:46:24 -0500 > I'm sorry I missed the original discussions, but I have to ask: Why > do we want enums in core? The only potential advantage I can see over > using a look-up table and FK references is performance. Feb 06, 2007 at 11:43:24AM -0500, Andrew Dunstan wrote: On Tue, > Andrew Sullivan wrote: > > The difference is that foreign-key-referenced data is part of your data > >As a data point, some time ago (7.2 days) I used to do this as a whereas enums would be part of the type system used >matter of completeness, and never had a collision. > to model the data. > > The point I at least have been trying to make is that extensions From: Neil Conway <neilc ( at ) samurai ( dot ) com > To: Martijn van Oosterhout <kleptog ( at ) svana ( dot ) org> Subject: Re: Asynchronous I/O Support Date: Sun, 15 Oct 2006 14:26:12 -0400 On Sun, 2006-10-15 at 19:56 +0200, Martijn van Oosterhout wrote: > Sure, I even implemented it once. Didn't get any faster. Did you just do something akin to s/read/aio_read/ etc., or something more ambitious? I think that really taking advantage of the ability to have multiple I/O requests outstanding would take some leg work. > Maybe one of these days I should work out if my current system supports > it, and give it another go...
  • 61. You develop a beta patch. Auto Partitioning Patch - WIP version 6 From: NikhilS <nikkhils ( at ) gmail ( dot ) com> To: pgsql-patches ( at ) postgresql ( dot ) org Subject: Auto Partitioning Patch - WIP version 6 Date: Fri, 30 Mar 2007 12:28:02 +0530 Hi, Please find attached the WIP version 6 of the auto partitioning patch. I've fixed the race condition pointed out with 5 ...
  • 62. You apply PostgreSQL format and commenting standards. Chapter 45. PostgreSQL Coding Conventions Table of Contents 45.1. Formatting 45.2. Reporting Errors Within the Server 45.3. Error Message Style Guide 45.3.1. What goes where 45.3.2. Formatting 45.3.3. Quotation marks 45.3.4. Use of quotes 45.3.5. Grammar and punctuation + * ------------------------------------------------------------------------------ + * DefinePartitions + * Create new partitions. They end up inheriting from the parent + * relation. + * Once they have been created, rules need to be assigned to the parent to + * provide the UPDATEs/INSERTs/DELETEs to percolate down to the children + * Callers expect this function to end with CommandCounterIncrement if it + * makes any changes. + * ------------------------------------------------------------------------------ + */
  • 63. You submit to pgsql- patches. From: Magnus Hagander <magnus ( at ) hagander ( dot ) net> To: pgsql-patches <pgsql-patches ( at ) postgresql ( dot ) org> Subject: SSPI authentication - patch Date: Wed, 18 Jul 2007 12:16:42 +0200 Attached is the patch to support SSPI authentication in libpq. With this patch, I can authenticate windows clients against a linux server using kerberos *without* reqiring setting up MIT kerberos on the windows side. Protocol has not changed at all.
  • 64. A hacker reviews your patch. From: Tom Lane <tgl ( at ) sss ( dot ) pgh ( dot ) pa ( dot ) us> To: Magnus Hagander <magnus ( at ) hagander ( dot ) net> Subject: Re: SSPI authentication - patch Date: Fri, 20 Jul 2007 12:47:35 -0400 Magnus Hagander <magnus ( at ) hagander ( dot ) net> writes: > Stephen Frost wrote: >> That's true, but if we used upper-case with something NEW (SSPI) while >> keeping it the same for the OLD (KRB5, and I'd vote GSSAPI) then we're >> not breaking backwards compatibility while also catering to the masses. >> I guess I don't see too many people using SSPI w/ an MIT KDC, and it >> wasn't possible previously anyway. >> >> What do you think? > Hmm. It makes the default a lot less clear, and opens up for confusion. > So I'm not so sure I like it :-)
  • 65. You revise & debug From: Magnus Hagander <magnus ( at ) hagander ( dot ) net> To: pgsql-patches <pgsql-patches ( at ) postgresql ( dot ) org> Subject: Re: SSPI authentication - patch Date: Thu, 19 Jul 2007 13:53:15 +0200 On Wed, Jul 18, 2007 at 12:16:42PM +0200, Magnus Hagander wrote: > Attached is the patch to support SSPI authentication in libpq. With this > patch, I can authenticate windows clients against a linux server using > kerberos *without* reqiring setting up MIT kerberos on the windows side. > Protocol has not changed at all. Here's an updated version of this patch. This version has full SSPI support in the server as well, so I can do both kerberos and NTLM between two windows machines using the negotiate method.
  • 66. Eventually your patch is accepted in the queue From: Bruce Momjian <bruce ( at ) momjian ( dot ) us> To: Simon Riggs <simon ( at ) 2ndquadrant ( dot ) com> Subject: Re: Synchronous Commit Doc Patch Date: Tue, 17 Jul 2007 01:09:25 -0400 (EDT) Your patch has been added to the PostgreSQL unapplied patches list at: http://momjian.postgresql.org/cgi-bin/pgpatches It will be applied as soon as one of the PostgreSQL committers reviews and approves it.
  • 67. You write the documentation. 23.4. Warm Standby Servers for High Availability Continuous archiving can be used to create a high availability (HA) cluster configuration with one or more standby servers ready to take over operations if the primary server fails. This capability is widely referred to as warm standby or log shipping. The primary and standby server work together to provide this capability, though the servers are only loosely coupled. The primary server operates in continuous archiving mode, while each standby server operates in continuous recovery mode, reading the WAL files from the primary. No changes to the database tables are required to enable this capability, so it offers low administration overhead in comparison with some other replication approaches. This configuration also has relatively low performance impact on the primary server.
  • 69. You are called back to help make your patch integrate with others.
  • 70. Your patch is applied by a committer. PostgreSQL Weekly News - July 15 2007 Applied Patches Neil Conway committed: - In pgsql/src/bin/pg_dump/pg_dump.c, fix up the indentation of a comment that was mangled by pgindent, and add dashes to the start/end of the comment block to try to prevent this happening in the future. Magnus Hagander committed: - Stefan Kaltenbrunner's patch to support finding gssapi functions in the library "gss", as required by Solaris 10 and possibly others. - In pgsql/src/bin/pg_ctl/pg_ctl.c, silence compile warning on win32, per Stefan Kaltenbrunner and reports from the buildfarm.
  • 71. PostgreSQL does a release. PostgreSQL 8.2 Press Kit Contents Text of Original Release Additional Features Where to Download Documentation License Contacts Quoted Company Information Corporate Support Additional Software Translations Original Press Release 5 December 2006, Washington DC (LISA Conference): The PostgreSQL Global Development Group today announces the release of version 8.2 of the PostgreSQL object- relational database management system. This 14th public release adds features, maturity, and performance requested by business users, delivering manageability comparable to leading enterprise database systems. Version 8.2 is expected to drive even more migrations toward PostgreSQL.
  • 72. Your patch is now a feature.
  • 73. Now you get to maintain it for the rest of your life! From: Joe Conway <mail ( at ) joeconway ( dot ) com> To: Robert Treat <xzilla ( at ) users ( dot ) sourceforge ( dot ) net> Subject: Re: dblink connection security Date: Sun, 01 Jul 2007 14:12:09 -0700 Robert Treat wrote: Joe Conway <mail ( at ) joeconway ( dot ) com> writes: Well certainly dbi-link has the exact same issue. dbi-link only works in plperlu, so you've already decided your superuser only. How so -- it is fundamentally no different than dblink, which is C language (also untrusted). I think the issue is that once the superuser creates said functions, usage of the functions is automatically granted to PUBLIC, no? Being an untrusted language just means that it takes a superuser to create the functions using that language, not to use the functions themselves. Joe
  • 74. Patch Lifecycle Specification Research Write Code Revise Spec Revise Patch Write Docs Maintain Forever Doc Patch Integrate Submit Release Queue
  • 75. A PostgreSQL Year RC and Branch Best time to Development Period submit new stuff (5-6 months) Deadline for new major features Revise & Debug Patch (1 month) Feature Freeze Write Docs, Integration & Review do integration/testing (3-4 months) Beta Beta Testing Start discusing next (1-2 months) year's ideas RC and Branch
  • 76. Other tips on submitting ● Don't get discouraged. – Be prepared to argue. – One hacker rejecting your idea doesn't mean everyone does. – Committers (esp. Tom Lane) are often more concerned about maintainability than cool stuff. ● Be flexible: you will have to make changes. – Corporate coding standards are generally lower than the project's.
  • 77. Other tips on submitting ● Don't use the wrong arguments – “MySQL/Oracle does it this way.” – “Based on this hot academic trend.” ● Some things make a patch harder to accept – New syntax – Backwards compatibility issues – High code counts ● Don't get discouraged.
  • 78. Now, go write some code. or contribute in some easier way
  • 79. Contact Information ● Josh Berkus ● Upcoming events – www.powerpostgresql.com – LinuxWorldExpo San – josh@postgresql.org Francisco, August 6-9 – blogs.ittoolbox.com/ – Sun TechDays Milan, database/soup Rome -- This September ● PostgreSQL on Solaris – www.sun.com/ postgresql This talk is copyright 2007 Josh Berkus, and is licensed under the creative commons attribution license