Photo credit: Today is a good day on flickr
The whole tab completion machinery is pretty much just throwing darts while blindfolded, but the effort to replace it with something better is so large that we just keep poking at it the way it is...
- Robert Haas
josh@[local] [test] # \d pg_catalog.pg_c[TAB] malloc: *** error for object 0x9: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug Abort trap
* ... So * it is possible to get 'cache lookup failed' error if someone * performs DDL changes while a dump is happening. The window for this * sort of thing is from the acquisition of the transaction snapshot to * getSchemaData() (when pg_dump acquires AccessShareLock on every * table it intends to dump).
$ pg_dump -Fc --clean ...
$ make installcheck
$ pg_dump -Fc -d regression --file=regression.dump
$ pg_restore --clean -d regression -1 regression.dump
pg_restore: [archiver (db)] could not execute query: ERROR: type "widget" does not exist
Command was: DROP FUNCTION public.widget_out(widget);
/* * lazy_truncate_heap - try to truncate off any empty pages at the end */
/* * We need full exclusive lock on the relation in order to do * truncation. If we can't get it, give up rather than waiting --- we * don't want to block other backends, and we don't want to deadlock * (which is quite possible considering we already hold a lower-grade * lock). */
Drawing by Jan Luyken, uploaded by rosewithoutathorn84
Our most recent change is that we now include a regression test for performance for sysbench. For each push into our "staging" tree we run a full test at different steps of "connections". We test both read-only and read-write workloads. ...
Today we generate automated reports for cachegrind, callgrind, and valgrind. We run pahole by hand. ...
All of these need to go into the process. We should never regress on L2 misses or branch predictions. We should never see holes in our structures/classes.
- Brian "Krow" Aker, June 2009
$ pahole --sizes ~/runtime/bin/postgres | sort -k3 -nr | head -5 CopyStateData 440 13 HbaLine 480 9 XLogCtlData 1376 7 VacAttrStats 320 6 Tuplesortstate 488 6
scale | clients | tps | stddev | num -------+---------+-------+--------+----- 1 | 1 | 708.9 | 9.3 | 10 1 | 2 | 607.1 | 8.5 | 10 1 | 4 | 616.7 | 7.2 | 10 10 | 1 | 507.9 | 59.4 | 10 10 | 2 | 483.9 | 60.6 | 10 10 | 4 | 506.0 | 7.4 | 10 50 | 1 | 190.8 | 5.5 | 10 50 | 2 | 191.1 | 2.7 | 10 50 | 4 | 191.3 | 3.4 | 10 100 | 1 | 142.0 | 4.0 | 10 100 | 2 | 158.6 | 4.5 | 10 100 | 4 | 162.1 | 4.4 | 10 250 | 1 | 45.3 | 3.4 | 10 250 | 2 | 50.2 | 1.5 | 10 250 | 4 | 53.8 | 2.0 | 10
Author: Here is a patch to improve performance in this particular
usecase, see the results from this micro-benchmark
Skeptic: What about outside of a micro-benchmark?
Skeptic: Might it negatively impact different workloads?
Skeptic: Changing around this code in HEAD will make it harder to
maintain the back-branches
Skeptic: The patch adds complexity for only a possible small performance gain
Skeptic: Bizarre platforms may not properly implement the new system or library call you are relying on
Skeptic: Forensics of on-disk data may become more difficult
reindexdb --table='foo; ALTER ROLE limited WITH superuser'
Photo credit: theimpulsivebuy on flickr
$ make postgres-US.pdf ... ! TeX capacity exceeded, sorry [number of strings=84278]. \IfFileExists #1#2#3->\openin \@inputcheck #1 \ifeof \@inputcheck \ifx \inpu... l.691151 {} \Seq% ! ==> Fatal error occurred, no output PDF file produced!
Underfull \hbox (badness 10000) in paragraph at lines 1016507--1016535 [] \T1/pcr/m/n/9 src/backend/optimizer/geqo/geqo_main.c\T1/ptm/m/n/10 , rou-t ines [] \T1/pcr/m/n/9 gimme_pool_size \T1/ptm/m/n/10 and [1943.0.23] [1944.0.23]
Overfull \hbox (141.59937pt too wide) in paragraph at lines 78386--78386 []\T1/pcr/m/n/9 createdb: could not connect to database postgres: could not connect to server: No such file or directory
Photo credit: Tjflex on flickr
Start: 2012-06-15
Proposed End: 2012-07-15
Actual End: 2012-08-23
Start: 2012-09-15
Proposed End: 2012-10-15
Actual End: 2012-11-05
Start: 2012-11-15
Proposed End: 2012-12-15
Actual End: 2013-01-17
Start: 2012-01-15
Proposed End: 2012-02-15
Actual End: 2013-04-14