I have completed the 9.0 release notes and you can view them online. There will, of course, be many adjustments to the release notes before 9.0 final.
git clone git://git.postgresql.org/git/postgresql.git pgsql
cd pgsql/
git checkout -b REL8_1_STABLE -t origin/REL8_1_STABLE
./configure --prefix=/home/andrew/foo/inst.5702 --with-pgport=5702 --enable-depend \
--enable-debug --enable-cassert --with-perl -with-openssl
make
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -g -I../../../../src/include -D_GNU_SOURCE -c -o indexvalid.o indexvalid.c -MMD
In file included from ../../../../src/include/executor/execdesc.h:19,
from ../../../../src/include/executor/executor.h:17,
from ../../../../src/include/executor/execdebug.h:17,
from indexvalid.c:19:
../../../../src/include/nodes/execnodes.h:23:29: error: nodes/tidbitmap.h: No such file or directory
In file included from ../../../../src/include/executor/execdesc.h:19,
from ../../../../src/include/executor/executor.h:17,
from ../../../../src/include/executor/execdebug.h:17,
from indexvalid.c:19:
../../../../src/include/nodes/execnodes.h:934: error: expected specifier-qualifier-list before ‘TIDBitmap’
../../../../src/include/nodes/execnodes.h:959: error: expected specifier-qualifier-list before ‘TIDBitmap’
make[4]: *** [indexvalid.o] Error 1
I recently took the time to write down my thoughts on why successfully managing code deployments in an online architecture is so radically different from release management in a traditional software engineering endeavor.
...
Perhaps most challenging is the pace at which competition moves. In the online world, I can have an idea this morning, an implementation this afternoon and every client of my service that shows up tomorrow will see it. In fact, things can and do happen much faster than that. You might think that rapid concept-to-availability push is reckless. You might be right. But, your competition is doing it.
...
foo=# select xmlelement(name options, null,
xmlagg(xmlelement(name option, xmlattributes(key as optname), value)))
from each('a=>1, b=>foo'::hstore);
xmlelement
-----------------------------------------------------------------------------------
<options<><option optname="a">1</option><option optname="b">foo</option></options>
(1 row)
This time we're having a database where sequences were used, but not systematically as a default value of a given column. It's mainly an historic bad idea, but you know the usual excuse with bad ideas and bad code: the first 6 months it's experimental, after that it's historic.
Still, here's a query for 8.4 that will allow you
to list those sequences you have that are not used as a
default value in any of your tables:
WITH seqs AS ( SELECT n.nspname, relname as seqname FROM pg_class c JOIN pg_namespace n on n.oid = c.relnamespace WHERE relkind = 'S' ), attached_seqs AS ( SELECT n.nspname, c.relname as tablename, (regexp_matches(pg_get_expr(d.adbin, d.adrelid), '''([^'']+)'''))[1] as seqname FROM pg_class c JOIN pg_namespace n on n.oid = c.relnamespace JOIN pg_attribute a on a.attrelid = c.oid JOIN pg_attrdef d on d.adrelid = a.attrelid and d.adnum = a.attnum and a.atthasdef WHERE relkind = 'r' and a.attnum > 0 and pg_get_expr(d.adbin, d.adrelid) ~ '^nextval' ) SELECT nspname, seqname, tablename FROM seqs s LEFT JOIN attached_seqs a USING(nspname, seqname) WHERE a.tablename IS NULL;
I hope you don't need the query...
(public service announcement further down!)
I'm starting to get ready for the most mis-named conference so far this year. I mean, seriously. It's called East 2010, and yet it's located approximately 6000 km (that's almost 4000 miles for you Americans) to the west of the prime meridian. That's not even close. Sure, it's to the east of where the West conference is usually held, but really, this reminds me of POSIX timezones...
This will be a somewhat different conference than previous PostgreSQL conferences. It's the first big commercial conference. This has enabled it to change venue from "local university or college where rooms are cheap or free" to a conference hotel in downtown Philadelphia. Whether this is actually good for the talks is yet to be seen, but it's likely going to make some things around the conference easier and more integrated. There will also be a exhibition area - something we have tried for pgday.eu without much interest, but it will hopefully be more successful in this surrounding.
The contents of the conference are also somewhat different, since there is now a clear focus also on "decision makers", something that many PostgreSQL conferences have been lacking in. We may all want it to be true that the decision makers are the people who are actually going to use the product, but we know that's not true. This gives a conference schedule that contains a broader range of talks than we're used to - this can only be good.
Myself, I will be giving an updated version of my security talk, focusing on authentication and SSL. The updates are mainly around the new and changed authentication methods in 9.0, and some minor updates on the SSL part. If you've seen it before it may be an interesting refresher, but you might be better off going to see Greg Smith's benchmarking talk if you haven't...
Now for the second part, which is the public service announcement...
If you're like me, you find the official schedule for East very hard to read and basically useless to get an overview. It's also horrible to use
The upcoming PG East Conference is in my home town, Philadelphia. The conference promises to be a new generation of Postgres conferences, and I want to highlight some of the changes that attendees can expect.
First, as I mentioned before, the hotel venue for this conference is much nicer than typical Postgres conferences. Also, it is located in an area of Philadelphia that is packed with great restaurants and shops.
I have started preparing the release notes for Postgres 9.0. I went into great detail last year about how the release notes are created, so I will not bore you with the mind-numbing details this time. I should be ready with the first draft in a week or two.
Like the last years the PostgreSQL User Group Germany was present with a booth at Chemnitz Linux Days 2010, one of the big open source and community events in germany.
We were able to answer the obvious questions (see my CeBIT report) but since this is actually a community event and not so much business orientated, we were confronted with more technical questions.
In addition to the booth i gave a workshop ("Optimize PostgreSQL") and a talk ("What's new in PostgreSQL 8.5 9.0"), slides here.
I would like to thank Andreas Kretschmer + daughter, Peter Eisentraut and my wife for the help during this two day event.
See you next year.
I'm tired of having to remember to set USE_PGXS=1
when building third-party PostgreSQL extensions like pgTAP. Aren’t
you? I therefore submit a modest proposal for avoiding this
unfortunate idiom.
The PostgreSQL User Group Germany were
given the
opportunity to have a booth at CeBIT 2010 and present
the project. CeBIT is a very big IT-related exhibition and takes
place in Hannover, Germany.
psql mydb < dump.sqland that's quite OK.
ERROR: syntax error at or near "VEIW"you might figure out that for some reason
psql mydb -f dump.sqlis better, because it produces
psql:dump.sql:56: ERROR: syntax error at or near "VEIW"instead, allowing you to actually find the error in your file.
-f form above is not portable. It
depends on the GNU getopt extension that permits options after
nonoption arguments. To be portable, you need to write eitherpsql -d mydb -f dump.sqlor
psql -f dump.sql mydbFrankly, I hardly ever do this because I rarely use a non-GNU system, but keep it in mind when writing scripts or documentation intended to be portable.
-X, which prevents the reading of the
.psqlrc file. Because that file could contain
anything, and you have no idea how it will interact with your
script.CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE FUNCTION
CREATE TYPE
CREATE FUNCTION
ALTER TABLE
ALTER TABLE
CREA
If you have not booked your hotel room for PostgreSQL Conference East 2010, now is definitely the time! If you do not book soon, you will be staying at another hotel (of course, you are still welcome to the conference).
| This article available in Russian. |
People that are carefully watching the novelties in the world of PostgreSQL, not by hearsay familiar with blog of Hubert ‘depesz’ Lubaczewski. A series of his posts «Waiting for X.X» – a real fount of useful information.
He doesn’t forget the upcoming release either. There are already 34 posts from the series “Waiting for 9.0″ on his blog. It would seem there is no chance to keep up with him. But looking through the release notes once again, I discovered a valuable innovation is overlooked. Namely, a new LISTEN/NOTIFY implementation.
Let’s start with dry facts.
At the moment (versions 8.x and below) mechanism uses a
pg_listener system table as a storage. It contains all
the listeners waiting for any notices. If necessary, the table is
scanned and updated.
In the new version this will be replaced with an in-memory queue. First, it will give a huge increase in speed. And secondly, this implementation is also more compatible with Hot Standby usage. It should be noted however, that currently there is not yet any facility for HS slaves to receive notifications generated on the master, but implementation is planned for the future.
Finally, the developers added a second parameter for the NOTIFY command , the so-called «payload». Plans for the introduction of which were before the creation of the earth’s firmament.
This extra parameter represents a simple string literal up to 8000 characters. For everyday needs, I think, it’s enough. In the case of large data is recommended to keep them in the table and send notification with the record identifier.
Why are temporal extensions in PostgreSQL important? Quite simply, managing time data is one of the most common requirements, and current general-purpose database systems don’t provide us with the basic tools to do it. Every general-purpose DBMS falls short both in terms of usability and performance when trying to manage temporal data.
What is already done?
What needs to be done?