nowości w postgresie 8.2 – … returning

dziś pierwszy odcinek o zmianach w postgresie 8.2. tematem odcinka są zapytania “… returning".

do zapytań modyfikujących dane – INSERT INTO, UPDATE, DELETE FROM zostało dodane rozszerzenie “RETURNING".

składnia wygląda następująco:

  • INSERT INTO tabelka (pola) VALUES (costam) RETURNING wyrażenie;
  • UPDATE tabelka SET pole = X WHERE cośtam RETURNING wyrażenie;
  • DELETE FROM tabelka WHERE cośtam RETURNING wyrażenie;

przykłady użycia dla INSERT:

# CREATE TABLE x (id serial PRIMARY KEY, ble INT4);
NOTICE:  CREATE TABLE will create implicit sequence "x_id_seq" for serial column "x.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "x_pkey" for table "x"
CREATE TABLE
# insert into x (ble) values ('123') returning id;
id
----
1
(1 row)
INSERT 0 1
# insert into x (ble) values ('123') returning id, ble + 123;
id | ?column?
----+----------
2 |      246
(1 row)
INSERT 0 1
# insert into x (ble) values ('123') returning *;
id | ble
----+-----
3 | 123
(1 row)
INSERT 0 1
# insert into x (ble) values ('123') returning *, now(), (select count(*) from pg_class);
id | ble |              now              | ?column?
----+-----+-------------------------------+----------
4 | 123 | 2006-12-07 22:52:24.573777+01 |      209
(1 row)
INSERT 0 1
# select * from x;
id | ble
----+-----
1 | 123
2 | 123
3 | 123
4 | 123
(4 rows)
# insert into x (ble) select ble + 2 from x returning *;
id | ble
----+-----
5 | 125
6 | 125
7 | 125
8 | 125
(4 rows)
INSERT 0 4

miłe, czyż nie? głównym celem jest możliwość automatycznego pobierania wartości typu id – nadawanych z sekwencji. ale zadziała to także zwracając dane modyfikowane przez triggery.

to co jest po “RETURNING" musi być zgodne formatowo z tym co jest w standardowym select'cie między SELECT a FROM.

przykłady użycia dla UPDATE:

# update x set ble = ble * 2 where id % 2 = 0 returning *;
id | ble
----+-----
2 | 246
4 | 246
6 | 250
8 | 250
(4 rows)
UPDATE 4

zwracam uwagę na to, że returning zwraca nowe wartości! czyli tak po triggerowemu mówiąc: retyrning * oznacza return NEW; a nie return OLD;!

przykłady użycia dla DELETE:

# delete from x where id % 2 = 1 returning *;
id | ble
----+-----
1 | 123
3 | 123
5 | 125
7 | 125
(4 rows)
DELETE 4

jak widać składnia wszędzie jest podobna, miła łatwa i prosta. a do tego niesie sporo ułatwień. mnie osobiście cieszy INSERT … returning id; bo załatwia mi w piękny sposób odpowiadanie ludziom pytającym o id, i reagującym nerwowo na sugestie: select currval() : “ale czy jak dwa połączenia wstawią rekordy …" 🙂

problemy gastryczne przyczyna przymusowego lądowania.

wewnętrzny lot z dallas do waszyngtonu przymusowo lądował gdy kilkoro pasażerów zgłosiło załodze w czasie lotu, że czują zapach siarki.
pilot wylądował w nashville, pasażerowie zostali wyprowadzeni. i zaczęła się jazda 🙂 przeszukania, rewizje, psy szukające bomb. całość zajęła 3 godziny w czasie których ustalono, że zapach pochodził z zapalonej przez jedną z pasażerek zapałki.

pasażerka została w nashville, reszta pasażerów została spakowana z powrotem do samolotu i lot się dokończył.

jak o tym przeczytałem jedna rzecz mi nie pasowała – po co zapalać zapałkę? w samolotach raczej nie wolno palić.

i co się okazało? okazało się, że kobieta zapaliła zapałkę aby jej zapachem ukryć fakt iż puściła bąka. po prostu super.

kolejna kultowa firma przejęta przez nudnego molocha

jakiś czas temu dell przejął alienware'a. teraz dowiedziałem się (z pewnym opóźnieniem), że inny producent kultowych komputerów – voodoo pc “padł ofiarą" innego molocha – hp.
jeśli nie kojarzycie – maszyny voodoo, to absolutny top (tak jak i alienware'y) – najnowsze cuda, najmocniejsze komponenty. cud, miód i rachunki z dużą ilością cyfr.

co interesujące – chodzą pogłoski, że dzięki know-how voodoo, hp chce wejść na rynek … konsol do gier.

byłoby to mocno interesujące – hp, będący teraz największym producentem komputerów na świecie – wszedłby na rynek na którym zasadniczo jest tylko 3 graczy na świecie, w dodatku jeden z nich właśnie poddał partię.

co z tego wyjdzie – zobaczymy. pozostaje miec nadzieję, że mimo wszystko zostanie kilku niezależnych producentów – by, jak już uzbieram, mieć gdzie kupić naprawdę unikatowego laptopa za np. $15000 🙂

co nowego w 8.2?

eh,

gdzie nie spojrzę informacje o postgresie 8.2.

i informacje o tym co nowego.

stwierdziłem, że zrobię inaczej – zamiast suchych “dodano to i to" zrobię serię wpisów gdzie będę omawiał nowe feature'y wraz z przykładami użycia oraz opisem technologii.

pierwszy odcinek – dziś wieczorem lub jutro.

niagara 2 – zapowiedzi

sun zapowiedział, że prace nad chipem niagara 2 są na ukończeniu – pierwsze serwery maja opuścić fabryki w drugiej połowie 2007 roku.

dla przypomnienia – niagara to dosyć rewolucyjna idea procesór masywnie wielowątkowych.

niagara1 8 rdzeni, każdy z nich może przetwarzać jednocześnie 4 ciągu instrukcji. daje to razem możliwośc wykonywania 32 wątków jednocześnie – na pełnej prędkości.

niestety – prędkość nie jest za duża – ze względu na ograniczenia technologiczne, niagara była i jest tylko 1 ghz.

nowa niagara ma móc przetwarzać dwa razy tyle wątków jednocześnie – 64. i ciągnąć ledwie tylko trochę więcej prądu (70-80 watów, kontra 70 watów niagary 1).

na pewno nie sa to procesory do stacji roboczych. nie są to też procesory do maszyn robiących jakieś obliczenia. ale jeśli tym co potrzebujecie jest masowa równoległość – niagara może być świetnym wyjściem.

google zmieni świat?

nie, nie chodzi o kolejny produkt firmy z mountain view.

na cnn.com pojawił się artykuł głoszący interesującą opinię: google jest za mądre.

zaczęło się od tego, że autor artykuły spotkał się z człowiekiem który założył jakąś tam firmę która została przejęta przez google'a. wrażenia – wszyscy są niesamowicie inteligentni. cytując: “przez 10 dni pracy tam nie spotkałem nikogo głupiego! to dziwne". czy wydaje się wam to zabawne? pomyślcie o waszych miejscach pracy!

google chce zatrudniać best of the best of the best. i zatrudniają. ale to oznacza, że pojawia sie problem. na każdym spotkaniu – w kafeterii, sali konferencyjnej czy gdziekolwiek spotykają się ludzie przyzwyczajeni do tego, że są naj-. a tu nie. tu zawsze jest ktoś lepszy. to frustruje. oczywiście fajnie jest pracować w mocnym zespole, ale praca w czymś tak topowym może doprowadzić do jakichś urazów – kompletny brak możliwości zaspokojenia ludzkiej cechy “bycia podziwianym". jak mam być podziwiany za urodę i męskość w towarzystwie brada pitt'a, clooney'a i fabia? no way!

autor artykułu przewiduje, że część (spora część) z ludzi z google odejdzie. będą mieli pieniądze, wiedzę, rewelacyjne kontakty i ma mało lat by iść na emeryturę. co zrobię? założą kolejne firmy – startupy!

jako przykład autor podaje paypala. firma ta w momencie przejęcie przez ebaya pozbyła sie olbrzymiej ilości (kilkudziesięciu) super inteligentnych gości. z pieniędzmi. efekt? linkedin. youtube. a to tylko 2 topowe przykłady. do tego dochodzą inne firmy które odniosły sukces np. na rynkach lokalnych – jak np. fenomenalny yelp.

jeśli takie było “pokłosie" po paypalu, to jakie będzie po google'u? zmieniające oblicze świata.

nowy (?) interesujący load-balancer

poniekąd przypadkiem natknąłem się na informację o nowym (albo i nie za nowym), mocno interesującym programie do load-balancingu (z dodatkami).

program nazywa się perlbal, jest w perlu i jest (lub był) używany przez kilka sporych serwisów: livejournal, sixapart, wikipedia. szczegółów nie znam, ale na pewno potestuję i dam wam znać jak będę miał jakieś wyniki.

z ciekawostek mogę pokazać wpis na japońskim blogu (po japońsku) z którego wynika, że perlbal jest szybszy od lighttpd, albo wpis na livejournalu w/g którego wikimedia/wikipedia wybrały perlbala zamiast squida.

aha – właśnie sprawdziłem – wikipedia jest squidowana (przynajmniej w/g nagłówków http) – ale tak czy inaczej wygląda to interesująco.

wracamy na księżyc

ostatni raz człowiek był na księżycu w 1972 roku – z wyprawą apollo 17. od tamtej pory co prawda latamy w kosmos, ale już nie schodzimy na księżyc.

nasa ogłosiła właśnie wejście w życie planu w/g którego do 2024 na księżycu ma powstać stała baza kosmiczna.

plany są ambitne:

  • 2009 – rozpoczęcie testów nowych pojazdów mających zastąpić wysłużone wahadłowce
  • 2010 – zaprzestanie eksploatacji wahadłowców
  • 2014 – pierwsze loty załogowe (pierwsze nowymi pojazdami)
  • 2020 – lądowanie na księżycu
  • 2024 – baza na księżycu ukończona i funkcjonalna.

całość ma pomóc w późniejszych planach załogowego lotu na marsa i dalszym podbojom kosmosu.

co z tego wyjdzie? ciężko powiedzieć. budżet przedsięwzięcia jest olbrzymi (określono go jako: setki miliardów dolarów) – na tyle, że sama nasa go nie udźwignie i stacja na księżycu ma być kooperacją – usa, europa, rosja i japonia. udział chińczyków jest mało prawdopodobny.