PostgreSQL 9.0

  Selena Deckelmann
selenamarie@gmail.com

   PDXPUG Day 2010


    July 18, 2010
Many thanks to:

    Mark Wong
markwkm@gmail.com

   Gabrielle Roth
 gorthx@gmail.com
Introductions




             __      __
            / ~~~/  . o O ( PostgreSQL? )
      ,----(      oo    )
     /      ...
PostgreSQL




    - Current version 8.4.4
    - 9.0 is in Beta
    - Release in August?
    - Get it here:
      http://w...
Contents




   Full list of features:
   http://developer.postgresql.org/pgdocs/postgres/
   release-9-0.html
To boldly go...


   ___________________          _-_
   __(==========/_=_/ ____.---’---‘---.____
               _     ---...
Seriously. It’s a big release




      - New feature patches: 204
      - Submitters: 84
      - 2189 files changed, 21422...
Add the ability to make mass permission changes per
schema using the new GRANT/REVOKE IN SCHEMA
clause (Petr Jelinek)




...
Add ALTER DEFAULT PRIVILEGES command to control
privileges of newly-created objects (Petr Jelinek)




  postgres# ALTER D...
Install server-side language PL/pgSQL by default (Bruce
Momjian)




                             Yes.

   Also recall: CR...
Implement anonymous functions using the DO statement,
a.k.a anonymous blocks (Petr Jelinek, Joshua Tolley,
Hannu Valtonen)...
More DO...




  DO $$
  for i in range(10):
     plpy.notice(i)
  $$ language ’plpythonu’;
MOAR DO...


  DO $$
  HAI
      I HAS A VAR ITZ 0
      IM IN YR LOOP
          VAR R SUM OF VAR AN 1
          VISIBLE V...
Allow function calls to supply parameter names and match
them to named parameters in the function definition
(Pavel Stehule...
Add support for to char() scientific notation output
(’EEEE’) (Pavel Stehule, Brendan Jurd)

   postgres=# create table exp...
Con’t


   postgres=# SELECT * from exponents_demo ;
          example
   --------------------------
                    1...
Con’t


   postgres=# SELECT to_char(example, ’9.9EEEE’)
   AS lookyhere
   FROM exponents_demo ;
    lookyhere
   -------...
RADIUS Authentication (Magnus Hagander)




  #host database user CIDR-address auth-method [auth-opt
  host   all       al...
Add samehost and samenet designations to pg hba.conf
(Stef Walter)




   # IPv4 local connections:
   host all all       ...
Log changed parameter values when postgresql.conf is
reloaded (Peter Eisentraut)



   LOG: parameter "log_rotation_age" c...
Add an SQL state option (%e) to log line prefix
(Guillaume Smet)

   e.g.:

   log_line_prefix = ’<%t %d %u %e>’


   gives...
Add new EXPLAIN (BUFFERS) to report query buffer
activity (Itagaki Takahiro)

  # EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM
...
Allow EXPLAIN output in XML, JSON, and YAML
formats (Robert Haas, Greg Sabino Mullane)



  EXPLAIN
  SELECT * FROM user_h...
Con’t

   EXPLAIN (FORMAT XML)
   SELECT * FROM user_history ORDER BY "timestamp";
   QUERY PLAN
   ----------------------...
Con’t

   ...
         <Plans>                                             +
           <Plan>                            ...
Con’t


   EXPLAIN (FORMAT YAML)
   SELECT * FROM user_history ORDER BY "timestamp";
   QUERY PLAN
   --------------------...
Con’t



        Plans:                         +
          - Node Type: Seq Scan        +
            Parent Relationship...
Add WHEN clause to CREATE TRIGGER to allow control
over whether a trigger is fired (Takahiro Itagaki)




  CREATE TRIGGER ...
Allow NOTIFY to pass an optional string to listeners
(Joachim Wieland)



   lfnw-9.0=# LISTEN l9_0;
   LISTEN
   lfnw-9.0...
Have columns defined with storage type MAIN remain on
the main heap page unless it cannot fit (Kevin Grittner)




   8k pag...
Add pg stat reset single table counters() and
pg stat reset single function counters() to allow the
resetting of statistic...
Add pg last xlog receive location() and
pg last xlog replay location(), which can be used to
monitor standby server WAL ac...
Hot Standby/Streaming Replication




   . . . drumroll . . .
And now for something completely different...




                   Pg Android App Contest!

   http://wiki.postgresql.org...
Odds & Ends

     VACUUM FULL is dead! Long live VACUUM FULL (like
     CLUSTER).
     Add deferrable unique constraints (...
Final Notes




   These slides:
        http://www.slideshare.net/selenamarie
   Try it!
        http://www.postgresql.or...
Acknowledgements


  Gabrielle Roth
  Mark Wong
  Magnus Hagander
  Hayley Jane Wakenshaw

            __      __
        ...
License




   This work is licensed under a Creative Commons Attribution 3.0
   Unported License. To view a copy of this ...
Upcoming SlideShare
Loading in...5
×

Pdxpugday2010 pg90

1,336

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,336
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Pdxpugday2010 pg90

  1. 1. PostgreSQL 9.0 Selena Deckelmann selenamarie@gmail.com PDXPUG Day 2010 July 18, 2010
  2. 2. Many thanks to: Mark Wong markwkm@gmail.com Gabrielle Roth gorthx@gmail.com
  3. 3. Introductions __ __ / ~~~/ . o O ( PostgreSQL? ) ,----( oo ) / __ __/ /| ( |( ^ /___ / | |__| |__|-"
  4. 4. PostgreSQL - Current version 8.4.4 - 9.0 is in Beta - Release in August? - Get it here: http://www.postgresql.org/ftp/source/9.0beta3/ http://www.postgresql.org/developer/beta
  5. 5. Contents Full list of features: http://developer.postgresql.org/pgdocs/postgres/ release-9-0.html
  6. 6. To boldly go... ___________________ _-_ __(==========/_=_/ ____.---’---‘---.____ _ ----._________.----/ / / ‘-_-’ __,--‘.‘-’..’-_ /____ || ‘--.____,-’ Based on overwhelming user demand, this release of PostgreSQL adds features that have been requested for years, like easy-to-use replication, a mass permission facility, and anonymous code blocks.
  7. 7. Seriously. It’s a big release - New feature patches: 204 - Submitters: 84 - 2189 files changed, 214227 insertions(+), 125369 deletions(-)
  8. 8. Add the ability to make mass permission changes per schema using the new GRANT/REVOKE IN SCHEMA clause (Petr Jelinek) postgres# GRANT SELECT,INSERT,UPDATE ON ALL TABLES IN SCHEMA conference TO selena;
  9. 9. Add ALTER DEFAULT PRIVILEGES command to control privileges of newly-created objects (Petr Jelinek) postgres# ALTER DEFAULT PRIVILEGES IN SCHEMA conference GRANT INSERT ON TABLES TO selena; Use psql’s ddp command to get info about existing assignments of default privileges.
  10. 10. Install server-side language PL/pgSQL by default (Bruce Momjian) Yes. Also recall: CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE name
  11. 11. Implement anonymous functions using the DO statement, a.k.a anonymous blocks (Petr Jelinek, Joshua Tolley, Hannu Valtonen) DO $$ BEGIN FOR x IN 1..10 LOOP RAISE NOTICE ’Now at %’, x; END LOOP; END;$$;
  12. 12. More DO... DO $$ for i in range(10): plpy.notice(i) $$ language ’plpythonu’;
  13. 13. MOAR DO... DO $$ HAI I HAS A VAR ITZ 0 IM IN YR LOOP VAR R SUM OF VAR AN 1 VISIBLE VAR BOTH SAEM VAR AN 10, O RLY? YA RLY, GTFO OIC IM OUTTA YR LOOP KTHXBYE $$ language ’pllolcode’;
  14. 14. Allow function calls to supply parameter names and match them to named parameters in the function definition (Pavel Stehule) (Demo.)
  15. 15. Add support for to char() scientific notation output (’EEEE’) (Pavel Stehule, Brendan Jurd) postgres=# create table exponents_demo (example numeric); CREATE TABLE postgres=# INSERT INTO exponents_demo VALUES (’10000000’), (’2.54’), (’3.1415’), (’666’), (’6.02e+23’), (’5.29e-11’), (’8675309’) ;
  16. 16. Con’t postgres=# SELECT * from exponents_demo ; example -------------------------- 10000000 2.54 3.1415 666 602000000000000000000000 0.0000000000529 8675309 (7 rows)
  17. 17. Con’t postgres=# SELECT to_char(example, ’9.9EEEE’) AS lookyhere FROM exponents_demo ; lookyhere ----------- 1.0e+07 2.5e+00 3.1e+00 6.7e+02 6.0e+23 5.3e-11 8.7e+06 (7 rows)
  18. 18. RADIUS Authentication (Magnus Hagander) #host database user CIDR-address auth-method [auth-opt host all all 0.0.0.0/0 radius radiusserver=1.2.3.4 radiussecret=canttouchthis radiusport=1234 radiusidentifier=gabscooldatabase
  19. 19. Add samehost and samenet designations to pg hba.conf (Stef Walter) # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all samehost md5 host all all samenet md5
  20. 20. Log changed parameter values when postgresql.conf is reloaded (Peter Eisentraut) LOG: parameter "log_rotation_age" changed to "7d" LOG: parameter "port" cannot be changed without restarting LOG: parameter "log_rotation_age" changed to "1d" LOG: parameter "log_min_messages" changed to "notice" LOG: parameter "autovacuum" changed to "off" <2010-04-22 14:00:50 PDT >LOG: parameter "log_line_prefix <2010-04-22 14:00:50 PDT >LOG: parameter "log_statement"
  21. 21. Add an SQL state option (%e) to log line prefix (Guillaume Smet) e.g.: log_line_prefix = ’<%t %d %u %e>’ gives you something like: <2010-04-22 21:02:02 PDT postgres postgres 00000> LOG: statement: ALTER TABLE drop_column_demo DROP COLUMN <2010-04-22 21:02:54 PDT postgres postgres 00000> LOG: statement: GRANT SELECT on drop_column_demo to groth <2010-04-22 21:02:54 PDT postgres postgres 42704> ERROR: role "groth" does not exist
  22. 22. Add new EXPLAIN (BUFFERS) to report query buffer activity (Itagaki Takahiro) # EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM pg_attribute; QUERY PLA ----------------------------------------------------------- Seq Scan on pg_attribute (cost=0.00..52.35 rows=1935 widt (actual time=0.010..0.948 rows=1935 loops=1) Buffers: shared hit=16 read=17 Total runtime: 1.841 ms (3 rows) selena@postgres:5432=# EXPLAIN (ANALYZE, BUFFERS) SELECT * ----------------------------------------------------------- Seq Scan on pg_attribute (cost=0.00..52.35 rows=1935 widt (actual time=0.010..0.589 rows=1935 loops=1) Buffers: shared hit=33 Total runtime: 0.992 ms
  23. 23. Allow EXPLAIN output in XML, JSON, and YAML formats (Robert Haas, Greg Sabino Mullane) EXPLAIN SELECT * FROM user_history ORDER BY "timestamp"; QUERY PLAN ----------------------------------------------------------- Sort (cost=18494.32..18852.33 rows=143204 width=34) Sort Key: "timestamp" -> Seq Scan on user_history (cost=0.00..2559.04 rows=1 (3 rows)
  24. 24. Con’t EXPLAIN (FORMAT XML) SELECT * FROM user_history ORDER BY "timestamp"; QUERY PLAN ----------------------------------------------------------- <explain xmlns="http://www.postgresql.org/2009/explain"> + <Query> + <Plan> + <Node-Type>Sort</Node-Type> + <Startup-Cost>18494.32</Startup-Cost> + <Total-Cost>18852.33</Total-Cost> + <Plan-Rows>143204</Plan-Rows> + <Plan-Width>34</Plan-Width> + <Sort-Key> + <Item>"timestamp"</Item> + </Sort-Key> + ...
  25. 25. Con’t ... <Plans> + <Plan> + <Node-Type>Seq Scan</Node-Type> + <Parent-Relationship>Outer</Parent-Relationship>+ <Relation-Name>user_history</Relation-Name> + <Alias>user_history</Alias> + <Startup-Cost>0.00</Startup-Cost> + <Total-Cost>2559.04</Total-Cost> + <Plan-Rows>143204</Plan-Rows> + <Plan-Width>34</Plan-Width> + </Plan> + </Plans> + </Plan> + </Query> + </explain> (1 row)
  26. 26. Con’t EXPLAIN (FORMAT YAML) SELECT * FROM user_history ORDER BY "timestamp"; QUERY PLAN ------------------------------------- - Plan: + Node Type: Sort + Startup Cost: 18494.32 + Total Cost: 18852.33 + Plan Rows: 143204 + Plan Width: 34 + Sort Key: + - ""timestamp"" + ...
  27. 27. Con’t Plans: + - Node Type: Seq Scan + Parent Relationship: Outer + Relation Name: user_history+ Alias: user_history + Startup Cost: 0.00 + Total Cost: 2559.04 + Plan Rows: 143204 + Plan Width: 34 (1 row)
  28. 28. Add WHEN clause to CREATE TRIGGER to allow control over whether a trigger is fired (Takahiro Itagaki) CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] } ON table [ FOR [ EACH ] { ROW | STATEMENT } ] [ WHEN ( condition ) ] EXECUTE PROCEDURE function_name ( arguments )
  29. 29. Allow NOTIFY to pass an optional string to listeners (Joachim Wieland) lfnw-9.0=# LISTEN l9_0; LISTEN lfnw-9.0=# NOTIFY l9_0, ’need coffee...’; NOTIFY Asynchronous notification "l9_0" with payload "need coffee..." received from server process with PID 10480. Also, now in-memory (faster!)
  30. 30. Have columns defined with storage type MAIN remain on the main heap page unless it cannot fit (Kevin Grittner) 8k page size Before: a tuple might get TOAST’d prematurely LIVE DEMO!
  31. 31. Add pg stat reset single table counters() and pg stat reset single function counters() to allow the resetting of statistics counters for individual tables and indexes (Magnus Hagander) (Discuss.)
  32. 32. Add pg last xlog receive location() and pg last xlog replay location(), which can be used to monitor standby server WAL activity (Simon, Fujii Masao, Heikki) (Discuss.)
  33. 33. Hot Standby/Streaming Replication . . . drumroll . . .
  34. 34. And now for something completely different... Pg Android App Contest! http://wiki.postgresql.org/wiki/AndroidAppContest
  35. 35. Odds & Ends VACUUM FULL is dead! Long live VACUUM FULL (like CLUSTER). Add deferrable unique constraints (Dean Rasheed) vacuumdb –analyze-only (Bruce Momjian) GRANT/REVOKE IN SCHEMA (Petr Jelinek) pg table size and pg indexes size (Bernd Helmle) Remove the use of flat files for system table bootstrapping (Tom, Alvaro) DROP COLUMN IF EXISTS (Andreas Freund) 64-bit Windows support (Tsutomu Yamada, Magnus Hagander) Improvements to PL/Perl (Tim Bunce) /contrib/passwordcheck (Laurenz Albe)
  36. 36. Final Notes These slides: http://www.slideshare.net/selenamarie Try it! http://www.postgresql.org/ftp/source/9.0beta3/ http://www.postgresql.org/developer/beta http://wiki.postgresql.org/wiki/HowToBetaTest
  37. 37. Acknowledgements Gabrielle Roth Mark Wong Magnus Hagander Hayley Jane Wakenshaw __ __ / ~~~/ . o O ( Thank you! ) ,----( oo ) / __ __/ /| ( |( ^ /___ / | |__| |__|-"
  38. 38. License This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, (a) visit http://creativecommons.org/licenses/by/3.0/us/; or, (b) send a letter to Creative Commons, 171 2nd Street, Suite 300, San Francisco, California, 94105, USA.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×