iterate over a table in PostgreSQL vs SAS
I have struggled how to achieve something like this in SAS.
(you can read it as pseudocode but it's real PL/PgSQL):
DO $this$
DECLARE my_table name;
BEGIN;
-- iterate over table names
FOR my_table IN SELECT nazwa FROM tabele
LOOP
sql := 'CREATE TABLE XXX_backup AS SELECT * FROM XXX';
sql := replace(sql, 'XXX', my_table);
execute sql;
END LOOP;
END;
$this$ language plpgsql;
After consulting a collegue [thx Ludwik] and exploring this helpful doc:
Performing Multiple Statements for Each Record in a SAS® Data Set, tadam:
%MACRO COPYTABLES(SCANFILE,SCANFIELD);
*get number of tables;
DATA _NULL_;
IF 0 THEN SET &SCANFILE NOBS=X;
CALL SYMPUT('RECCOUNT',X);
STOP;
RUN;
*iterate;
%DO I=1 %TO &RECCOUNT;
*get table name;
DATA _NULL_;
SET &SCANFILE (FIRSTOBS=&I);
CALL SYMPUT('TABLENAME',&SCANFIELD);
STOP;
RUN;
*copy;
DATA &TABLENAME._backup;
SET &TABLENAME;
RUN;
%END;
%MEND COPYSETS;
%COPYSETS(tabele,nazwa);
When you switch from procedural coding to macro coding, you have twist your brain upside down...
I had to read a white paper (SAS docs lacking examples) and scratch my head for a moment before writing this simple procedural loop in SAS 4GL.
Now tell me that SAS isn't weird ;-)
american dream
Hosanna! wreszcie obejrzę film widmo który ścigał mnie przez ostatnie kilka lat. Właściwie - od czasu gdy po raz pierwszy zobaczyłem Arizona Dream. [ BTW - zasadniczo jestem WYZNAWCĄ Kusturicy ]
No i właśnie teraz, w kolekcji kolegi [ misiekbest - dzięki! ] wyhaczyłem North By Northwest. I skojarzyłem że to właśnie z tego filmu pochodzi sławna scena z ucieczką przed samolotem na spalonej słońcem równinie.
Damn, jakie to amerykańskie. Dlaczego mnie tak to rusza?
Ktoś powie - to oczywiste dlaczego amerykańskie kino cię rusza. Może kilka kluczowych motywów rodem z holywood przegrywanych mediami na okrągło przez wiele lat przepaliło ci mózg?
a może po prostu COŚ w tym jest.
To COŚ to kilka podstaw w które Stany Zjednoczone kiedyś wierzyły. I które manifestują się we wzorcu kina drogi.
Świat jest wielki, a dla Ciebie znajdzie się w nim miejsce.
Życie to droga. Droga na Zachód.
Droga to wolność.
Wolność jest najważniejsza. Twoja wolność kończy się tam gdzie zaczyna się cudza krzywda.
Masz prawo do obrony wolności zawsze i wszędzie.
Czy te wartości są prawdziwe? A może to tylko sen?
W głowie kręcą mi się skojarzenia filmowe i trochę literackie.
Truposz, chyba najmocniej przegryzione kino drogi jakie istnieje. droga to konieczność, droga to oświecenie.
Fandango, o dojrzewaniu w drodze.
Natural Born Killers, o tym że w drodze możesz być chociaż przez chwilę wolnym człowiekiem - nawet jeśli bardzo z tobą źle.
Proza Faulknera i proza Hemingwaya. Gdzieś tam są korzenie.
Z Faulknerem mam takie skojarzenie:
Pamiętaj, że każda droga prowadzi przez czyjąś wieś. I oczy tych ludzi będą na Ciebie patrzeć i Cię oceniać. Czy tego chcesz czy nie. Czy ci co pochopnie oceniają, są wystarczającą przeszkodą na Twojej drodze aby się zatrzymać?
Z kolei Hemingway uczy że życie to podróż, i że nie trzeba się roztkliwiać. Otwórz oczy i spójrz na horyzont. Spójrz na innych ludzi. Obserwuj ich, co robią. Nie oceniaj pochopnie. Żyj i umrzyj kiedy zechcesz.
Ech. Kończę "blogować" (podobno to teraz "niemodne", ale to temat na inny wpis) i idę oglądać Hitchcocka.
Globalne ocieplenie wg Eskimosów
Angaangaq, szaman Inuków:
Nigdy nie używam określenia zmiana klimatu. Klimat Matki Ziemi zawsze się zmieniał. Dziś jednak stanowczo za szybko topnieje nasz lód. Naukowcy wciąż spierają się, jakie są tego przyczyny. Gdyby zapytano nas, podalibyśmy odpowiedź. Lód nie topnieje z powodu benzyny ani węgla. Topnieje z powodu opon samochodowych, których używają niemal wszyscy. Zawsze kiedy samochód jest w ruchu, zużywają się opony. Wiatr unosi ich malutkie cząsteczki wysoko w powietrze. Krążą wokół całej planety i zimny wiatr Północy spycha je z powrotem na dół. Zamarzają, wiążą się i spadają na ziemię razem ze śniegiem. To właśnie te malutkie czarne drobinki tak mocno się rozgrzewają, gdy tylko wyjdzie słońce, że roztapiają wszystko wokół siebie.
Komu bardziej wierzyć w sprawie topnienia lodu niż Eskimosom? W końcu mają kilkadziesiąt określeń na różne rodzaje śniegu...
W każdym razie, dla mnie to brzmi o wiele bardziej przekonująco niż teoria, jakoby cywilizacyjna emisja CO2 powodowała efekt cieplarniany.
Wyczytane u Geseko von Lüpke, Dawna mądrość na nowe czasy. Rozmowy z uzdrawiaczami i szamanami XXI wieku, ISBN 978-83-7554-129-8
- jest też wywiad z przed-celtyckimi strażnikami drzew z Anglii - MNIAM, dla tych co tak jak ja chodząc po lesie głaszczą drzewa i rozglądają się za entami.
Bezbarwne
Po lekturze mini-wywiadu z niejakim p. Olechowskim, wczesnym kandydatem na urząd Prezydenta RP:
Mówiąc o agresji we współczesnej polityce, Olechowski część odpowiedzialności złożył na media, które zestawiają z sobą antagonistycznych polityków. - Od pewnego czasu, dzięki dziennikarzom powstał model wojownika. (...) A celem polityka nie jest przecież pokonanie drugiego polityka, ale to by w Polsce się żyło lepiej - zaznaczył.
A kogo mają zestawiać? Poklepujących się po plecach koleżków? Polityka to z definicji konflikt interesów.
- Bo mnie "wnerwia", to co się dzieje w Polsce, bo obserwuje beznadziejne zakleszczenie w polskiej polityce. Prezydent ma być łupem politycznym, a przecież konstytucyjnie to nie jest urząd partyjny - odpowiedział Olechowski na pytanie o przyczyny swojej kandydatury.
Stanowisko które ma władzę zawsze będzie łupem politycznym.
Olechowski "jedzie Tuskiem" czyli miłość, do przodu, obejmijmy się. Nie, konfliktu nie ma, please move along.
- Gdyby prezydent nic nie mógł, wybory nie byłyby w centrum zainteresowania Polaków i urząd ten nie byłby obiektem tak zażartej walki polityków - dodał.
I co to ma znaczyć? Czy Olechowski jest zwolennikiem urzędów/stanowisk które nic nie mogą? Słodko.
Olechowski podkreślił też, że jest przeciwny zmianom w konstytucji. - Pozwoliła nam zastopować pomysły "gorących głów", które chciały wprowadzić na przykład płatne studia - zaznaczył.
Brawo! A kiedy ostatnio był pan Olechowski (albo ktoś z jego rodziny) na bezpłatnych studiach?
Co za obłuda! Jak można bez mrugnięcia okiem głosić tak bezbarwne, do bólu zachowawcze poglądy. Jak betoniarka której jedynym zadaniem jest cementowanie status quo.
Nie wiem do jakiego "targetu" w Polsce trafia taka naiwność, oczywiście w 100% obłudna - nie posądzam Olechowskiego że wierzy w ten bełkot który sprzedaje.
postgresql and some grsec kernels = FAIL
Short message: Do not run postgres on some grsec - patched kernels.
Disclaimer: I write this just because I didn't find any clear explanations of the problem on the net, and I feel that such note can be useful for other who have this problem. I'm not an expert on grsec.
The story
A friend of mine had a problem with his postgres server (PostgreSQL 8.3.8).
The application (Perl/Java) was quite simple but it generated heavy load on the machine.
While running some INSERT/UPDATE queries, there happened random segmentation faults, like this one:
Dec 7 07:24:45 nsXXXXXX kernel: postgres[22481]: segfault at 7fda5e1d5000 ip 00007fda604553c3 sp 00007fffe41faf28 error 4 in libc-2.9.so [7fda603d1000+168000]
Dec 7 07:24:45 nsXXXXXX kernel: grsec: From XX.YY.ZZ.51: Segmentation fault occurred at 00007fda5e1d5000 in /usr/lib/postgresql/8.3/bin/postgres[postgres:22481] uid/euid:103/103 gid/egid:114/114, parent /usr/lib/postgresql/8.3/bin/postgres[postgres:29857] uid/euid:103/103 gid/egid:114/114
As you imagine, one of the backends went away. It happened few times a day.
After one of these segfaults, the server detected some corrupted pages ("ERROR: compressed data is corrupt") - effectively, the database was trashed, junk, byebye. Not possible to pg_dump, randomly damaged pages.
So you understand, this made the server completely useless.
After taking some advice from the community, and investigating some false traces (bad memory? OOM/overcommit?) we finally tracked this down to nonstandard kernel version:
# uname -a
Linux nsXXXXXX.ovh.net 2.6.31.5-grsec-xxxx-grs-ipv4-64 #2 SMP Thu Nov 5 12:36:20 UTC 2009 x86_64 GNU/Linux
I was a bit suspicious about this, and my friend found some grsec problems reported by users (but not postgres-related).
So we gave it a try. And Voila! After replacing the kernel with non-grsec version, the problem went away.
Of course the database had to be rebuilt.
Lesson learned.
UPDATE:
This for sure does not apply to ALL grsec'ed kernels. But it definitely applies to this version which we had problems with - it comes from the hosting provider ovh.pl