Pick a task to work on

There is new blogpost on this subject!

There are cases where system stores list of things to do, and then there are some worker processes that check the list, pick something to work on, do it, and remove from the list.

Proper solution is to use some kind of queuing system. There is even PgQ which works withing PostgreSQL, but some people are not happy with it, as it requires compilation and installation. So they just use plain selects.

Will that work OK?

Continue reading Pick a task to work on

Waiting for 9.4 – WITH CHECK OPTION support for auto-updatable VIEWs

On 18th of July, Stephen Frost committed patch:

WITH CHECK OPTION support for auto-updatable VIEWs
 
For simple views which are automatically updatable, this patch allows
the user to specify what level of checking should be done on records
being inserted or updated.  For 'LOCAL CHECK', new tuples are validated
against the conditionals of the view they are being inserted into, while
for 'CASCADED CHECK' the new tuples are validated against the
conditionals for all views involved (from the top down).
 
This option is part of the SQL specification.
 
Dean Rasheed, reviewed by Pavel Stehule

Continue reading Waiting for 9.4 – WITH CHECK OPTION support for auto-updatable VIEWs

Waiting for 9.4 – Add SQL Standard WITH ORDINALITY support for UNNEST (and any other SRF)

On 29th of July, Greg Stark committed patch:

Add SQL Standard WITH ORDINALITY support for UNNEST (and any other SRF)
 
Author: Andrew Gierth, David Fetter
Reviewers: Dean Rasheed, Jeevan Chalke, Stephen Frost

Continue reading Waiting for 9.4 – Add SQL Standard WITH ORDINALITY support for UNNEST (and any other SRF)

Waiting for 9.4 – Implement the FILTER clause for aggregate function calls.

On 17th of July, Noah Misch committed patch:

Implement the FILTER clause for aggregate function calls.
 
This is SQL-standard with a few extensions, namely support for
subqueries and outer references in clause expressions.
 
catversion bump due to change in Aggref and WindowFunc.
 
David Fetter, reviewed by Dean Rasheed.

Continue reading Waiting for 9.4 – Implement the FILTER clause for aggregate function calls.

Waiting for 9.4 – Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY.

On 16th of July, Kevin Grittner committed patch:

Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY.
 
This allows reads to continue without any blocking while a REFRESH
runs.  The new data appears atomically as part of transaction
commit.
 
Review questioned the Assert that a matview was not a system
relation.  This will be addressed separately.
 
Reviewed by Hitoshi Harada, Robert Haas, Andres Freund.
Merged after review with security patch f3ab5d4.

Continue reading Waiting for 9.4 – Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY.

Waiting for 9.4 – ALTER TABLE … ALTER CONSTRAINT for FKs

On 28th of June, Simon Riggs committed patch:

ALTER TABLE ... ALTER CONSTRAINT for FKs
 
Allow constraint attributes to be altered,
so the default setting of NOT DEFERRABLE
can be altered to DEFERRABLE and back.
 
Review by Abhijit Menon-Sen

Continue reading Waiting for 9.4 – ALTER TABLE … ALTER CONSTRAINT for FKs

Bloat removal by tuples moving

Looong time ago, I wrote a piece about removing bloat by moving rows away from the end of table, and vacuuming it.

This is/was very slow, and was optimized (to some extent) by Nathan Thom, but his blogpost vanished. Besides, later on we got great tool: pg_reorg (or, as it's currently named: pg_repack).

But recently I was in position where I couldn't pg_reorg. So I had to look for other way. And I found it 🙂

Continue reading Bloat removal by tuples moving

Sprzedam Toyote GT86, prawie nówka, 4 miesiące, bezwypadkowa

Mam do sprzedania (lub do oddania, zależnie jak na to spojrzeć) toyotę GT86. Produkcja 2012, rejestracja 2013 (chyba luty). Przejechane ~ 3000 kilometrów, bezwypadkowa.

Wersja: manualna zmiana biegów, czarne wykończenie, bez nawigacji, kolor pomarańczowy. Zdjęć nie daję, chyba, że bardzo ktoś zechce, bo dupa ze mnie a nie fotograf, a na sieci są tysiące zdjęć tego wozu. A przy jego stanie nie ma znaczenia czy się ogląda zdjęcią nówek z salonu, czy tej ode mnie.

Co z nią jest? Nic. wszystko jest Tip-Top. Jedyne uszkodzenie to lekko zagięta felga – obejrzał ją i przetestował serwis Toyoty (Toyota/Chodzen w Piasecznie) i orzekli, że poza kwesią estetyczną – nic jej nie jest.

W komplecie dodaję opony zimowe (używane do kwietnia) i aktualnie założone letnie – nówki, kupione na samochodzie, i jedne i drugie.

Dziś zrobiłem “przegląd" po 3k km – wymiana oleju, zgodnie z zaleceniami Toyoty.

W samochodzie nie było palone, był trzymany w zadaszonej wiatce. Ogólnie – cód, miód, paluszki lizać. Jeśli lubisz jazdę samochodem – to jest samochód dla Ciebie. Sens istnienia tego samochodu można zobaczyć na sieci, choćby tu:

Cena: samochód jest wzięty w leasing, i mogę ten leasing odstąpić. 4 lata (czyli jeszcze około 3.5 przed nami), z ratą miesięczną 2.7k pln.
W takim układzie, o ile kupującego zaakceptuje toyota leasing (przepisanie leasingu), to dla mnie – 5000 pln.

Alternatywnie – sprzedam za gotówkę, przy czym musiałbym dostać 120000 pln by pokryć koszty leasingu.

No i finalnie: dlaczego sprzedaję takie cudo? Nie znudził się. Żona nie marudzi (zasadniczo nie podoba jej się, że chcę oddać – bo ciężko tu mówić o sprzedaży, gdy nie dostanę z powrotem choćby połowy tego co już wpłaciłem). Problem jest inny – ten samochód chce być jeżdżony. A ja nie mam gdzie. Przez te 4 miesiące dostałem mandatów łącznie na ponad 2 razy więcej niż przez całe życie do tej pory. Nie umiem nią jeździć “legalnie", a jak mi zabiorą prawo jazdy, to i tak się nie nacieszę. Więc może znajdzie się ktoś kto przygarnie …

Explaining the unexplainable – part 5

In previous posts in this series, I talked about how to read EXPLAIN output, and what each line (operation/node) means.

Now, in the final post, I will try to explain how it happens that Pg chooses “Operation X" over “Operation Y".

Continue reading Explaining the unexplainable – part 5