<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cojack blog &#187; ltree</title>
	<atom:link href="http://www.cojack.pl/tag/ltree/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cojack.pl</link>
	<description>Programowanie oraz Open Source powodem do życia</description>
	<lastBuildDate>Sat, 26 Nov 2011 18:43:28 +0000</lastBuildDate>
	<language>PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PostgreSQL – Ltree cz.2</title>
		<link>http://www.cojack.pl/postgresql-ltree-cz-2</link>
		<comments>http://www.cojack.pl/postgresql-ltree-cz-2#comments</comments>
		<pubDate>Sun, 27 Jun 2010 09:37:08 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[ltree]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=425</guid>
		<description><![CDATA[ Nadeszła w końcu ta chwila, w której miałem wolny czas by usiąść i dokończyć implementację ltree. Udało mi się, uzyskałem to co chciałem, i to na czym by każdemu programiście zależało. Działa tak jak ja chce, a nie tak jak baza chce. Do rzeczy, w ostatnim i zarazem pierwszym ...]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="100" alt="PostgreSQL" src="http://www.cojack.pl/wp-content/arch-postgresql.png" title="PostgreSQL" class="alignleft"> Nadeszła w końcu ta chwila, w której miałem wolny czas by usiąść i dokończyć implementację ltree. Udało mi się, uzyskałem to co chciałem, i to na czym by każdemu programiście zależało. Działa tak jak ja chce, a nie tak jak baza chce. Do rzeczy, w ostatnim i zarazem pierwszym wpisie o ltree w postgresie nie mogłem sobie poradzić z sortowaniem, kombinowałem razem z depeszem jak by go tu posortować, w końcu jakieś rozwiązanie padło. Tylko te rozwiązanie depesz wziął z swojej struktury drzewiastej, otóż mówię temu stanowcze NIE! Dlaczego? Ltree zostało napisane po to by nie robić nic rekursywnie, to po prostu miażdży podejście do drzew w każdym calu, żadne nested sety i inne śmiecie z rightem i leftem. Tam to idzie zęby połamać a nie to ugryźć. Poza tym jest to mało optymalne, to już wolę id, parent_id (taki joke).</p>
<h3>Sortowanie w ltree</h3>
<p>Rozwiązanie było bliżej niż można było się tego spodziewać. Miałem z trylion pomysłów jak to rozkminić. Pomyślałem o liczbie rzeczywistej której każda kolejna część po przecinku będzie przedstawiała nr zagłębienia, tylko to nie jest tak łatwo oprogramować i mogłyby wyjść niezłe kaszany, także odpuściłem sobie to. I olśniło mnie ARRAY! No jacha! To przecież jest tak proste i oczywiste że nie wiem o czym my rozmawiamy. Sam sobie ten problem urodziłem, a powodem tego było iż nikt wcześniej nie pisał o tym, w necie to nawet nie ma słowa o tym module, parę rzeczy znajdziemy w manualu i stronie twórców.  Ale nikt nie pokwapił się z implementacją tego z sortowaniem i się nie podzielił.</p>
<h3>Implementacja ltree z sortowaniem</h3>
<p>Otóż sprawa jest banalnie prosta (teraz już jest):</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;idCategory&quot;</span>  SERIAL <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;categoryPath&quot;</span>   LTREE<span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;ordering&quot;</span> <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>I mógłbym powiedzieć amen. Alę dodam jeszcze:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,1,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy.Astrophysics'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,1,1,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy.Cosmology'</span><span style="color: #66cc66;">.</span> <span style="color: #ff0000;">'{1,1,1,2}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy.Planets'</span><span style="color: #66cc66;">.</span> <span style="color: #ff0000;">'{1,1,1,3}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Amateurs_Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Swiming'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,2}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Football'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,3}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Chess'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,4}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Basketball'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,5}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Voleyball'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,6}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Checkers'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,7}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Cards'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,8}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Skis'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,9}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Post_Cards'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,10}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Book'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,2,11}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Stars'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,1}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Galaxies'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,2}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Astronauts'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,3}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Planets'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,4}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Sun'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,5}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Earth'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,6}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Asteroids'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,7}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.UFO'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,8}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Milk_Way'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,9}'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> category <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span><span style="color: #66cc66;">,</span> ordering <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Space_Ships'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'{1,3,1,1,10}'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>To powyżej to demo do tabeli, o zapomniałbym o indeksach:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #ff0000;">&quot;categoryPath_gist_idx&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> gist<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #ff0000;">&quot;categoryPath_idx&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> btree<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #ff0000;">&quot;ordering_gist_idx&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> gist<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #ff0000;">&quot;ordering_idx&quot;</span> <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> btree<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;categoryPath&quot;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>I sobie protestujcie sami jak to świetnie działa. W następnym i przy okazji ostatnim wpisie o ltree, przedstawię wszystkie metody do zarządzania drzewem, oraz widoki.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/postgresql-ltree-cz-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PostgreSQL &#8211; Ltree</title>
		<link>http://www.cojack.pl/postgresql-ltree</link>
		<comments>http://www.cojack.pl/postgresql-ltree#comments</comments>
		<pubDate>Wed, 30 Dec 2009 00:15:46 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[ltree]]></category>
		<category><![CDATA[menu drzewiaste]]></category>
		<category><![CDATA[menu wielopoziomowe]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://cojack.os-cms.pl/?p=284</guid>
		<description><![CDATA[ Tym razem nie będzie nic o implementacji pewnej struktury drzewiastej w php. Natomiast zajmiemy się dziś sql. A dokładniej PostgreSQL, od dłuższego czasu nie mogłem ogarnąć modułu w postgresql, który nazywa się ltree, jak sama cząstkowa nazwy wskazuje i łatwo się domyślić że chodzi tutaj o reprezentację i strukturę ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="PostgreSQL" src="http://cojack.os-cms.pl/wp-content/arch-postgresql.png" alt="" height="100" width="100"> Tym razem nie będzie nic o implementacji pewnej struktury drzewiastej w php. Natomiast zajmiemy się dziś sql. A dokładniej PostgreSQL, od dłuższego czasu nie mogłem ogarnąć modułu w postgresql, który nazywa się <strong>ltree</strong>, jak sama cząstkowa nazwy wskazuje i łatwo się domyślić że chodzi tutaj o reprezentację i strukturę drzewa. Co najlepsze, przeprowadzone benchmarki przez jego twórców wykazują na największy w śród tymczasowych ogólnie dostępnych wzorców tego typu struktury czas dostępu do danych.</p>
<p><strong>Trochę historii</strong><br />
W 2002 roku, dwóch programistów: Teodor Sigaev oraz Oleg Bartunov, wypuściło na światło dzienne moduł ltree (kiedy zaczęli, brak danych). Podeszli do tego dość ogólnego problemu z wielkim dystansem, za to teraz mamy potężne narzędzie całkowicie za darmo. Następne wydania miały na celu wyeliminowanie błędów zgłoszonych przez użytkowników oraz rozszerzyć możliwości o nowe możliwości w indeksie GIST. Więcej na temat samych wydań jak zwykle w paczce do pobrania z ich strony na dole.</p>
<p><strong>Z czym to się je?</strong><br />
Ltree jak już wyżej wspomniałem jest modułem do PosgreSQL&#8217;a mający za zadanie przechowywanie danych w sposób przedstawiający strukturę drzewiastą. Implementacja jak najbardziej wydajna. A więc zacznijmy.</p>
<p>W zależności od dystrybucji z jakiej korzystamy, możemy mieć lub nie dodatkową paczkę dla postgresql&#8217;a która powinna się nazywać mniej więcej tak: <strong>postgresql-contrib</strong></p>
<p>Po zainstalowaniu tych dodatków mamy masę innych rzeczy, z których nie koniecznie będziemy korzystać. Ale nas interesuje ltree, ścieżka ltree.sql u mnie to:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>postgresql<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8.4</span><span style="color: #000000; font-weight: bold;">/</span>contrib<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>a żeby wyszukać gdzie my to mamy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">locate</span> ltree.sql</pre></div></div>

<p>po wcześniejszym updatedb.</p>
<p>powinniśmy mieć tam plik ltree.sql, musimy ten plik wrzucić do naszej bazy danych. No to jedziemy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">psql nazwaDB <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>postgresql<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8.4</span><span style="color: #000000; font-weight: bold;">/</span>contrib<span style="color: #000000; font-weight: bold;">/</span>ltree.sql</pre></div></div>

<p>powinniśmy mieć wszystko ładnie wrzucone do bazy danych. Teraz zostało nam już tylko utworzenie tabeli i ogień.</p>
<p>Przykładowa tabela z naszym drzewem.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span>
   <span style="color: #ff0000;">&quot;id&quot;</span>  SERIAL <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;path&quot;</span>   LTREE<span style="color: #66cc66;">,</span>
   <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #993333; font-weight: bold;">SMALLINT</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>mamy tutaj tabelę którą nazywamy tree, i teraz nowy typ danych <strong>LTREE</strong>. Nie ma co tu dużo tłumaczyć zaraz sami zobaczycie jak to działa.</p>
<p>Pozostało nam jeszcze założyć indeksy na kolumny:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> path_gist_idx <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> gist<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> path_idx <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #993333; font-weight: bold;">USING</span> btree<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>oraz możemy sobie w prosty sposób komentarze na kolumny powrzucać:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">COMMENT <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #993333; font-weight: bold;">COLUMN</span> <span style="color: #ff0000;">&quot;tree&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;path&quot;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #ff0000;">'Scieżka drzewa'</span>;</pre></div></div>

<p>Żeby zobaczyć komentarz w psql należy wykonać polecenie:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">\d<span style="color: #66cc66;">+</span> <span style="color: #ff0000;">&quot;nazwaTabeli&quot;</span></pre></div></div>

<p>A teraz dane przykładowe do drzewa:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy.Astrophysics'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Astronomy.Cosmology'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Hobbies.Amateurs_Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Stars'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Galaxies'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #ff0000;">&quot;tree&quot;</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;path&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;sort&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Collections.Pictures.Astronomy.Astronauts'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Jak zauważyliście, dane w ścieżce drzewa nie mogą posiadać wolnej przestrzeni, więc należy ją zamienić na np &#8222;_&#8221;, co nie jest żadnym problemem.</p>
<p>Ścieżka rysuje się mniej więcej tak:<br />
<br />
<img title="Ltree - path" src="http://cojack.os-cms.pl/wp-content/path_ltree.png" alt=""><br />
<br />
Pobierzmy sobie teraz całe drzewko:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">ltree<span style="color: #339933;">=&gt;</span> SELECT <span style="color: #339933;">*</span> FROM tree<span style="color: #339933;">;</span>
 id <span style="color: #339933;">|</span>                     path                      <span style="color: #339933;">|</span> <span style="color: #990000;">sort</span>
<span style="color: #339933;">----+-----------------------------------------------+------</span>
  <span style="color: #cc66cc;">1</span> <span style="color: #339933;">|</span> Top                                           <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">2</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Science                                   <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">3</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Science<span style="color: #339933;">.</span>Astronomy                         <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">4</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Science<span style="color: #339933;">.</span>Astronomy<span style="color: #339933;">.</span>Astrophysics            <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">5</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Science<span style="color: #339933;">.</span>Astronomy<span style="color: #339933;">.</span>Cosmology               <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">6</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Hobbies                                   <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">7</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Hobbies<span style="color: #339933;">.</span>Amateurs_Astronomy                <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">8</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections                               <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">3</span>
  <span style="color: #cc66cc;">9</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections<span style="color: #339933;">.</span>Pictures                      <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">10</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections<span style="color: #339933;">.</span>Pictures<span style="color: #339933;">.</span>Astronomy            <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">11</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections<span style="color: #339933;">.</span>Pictures<span style="color: #339933;">.</span>Astronomy<span style="color: #339933;">.</span>Stars      <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">12</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections<span style="color: #339933;">.</span>Pictures<span style="color: #339933;">.</span>Astronomy<span style="color: #339933;">.</span>Galaxies   <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">13</span> <span style="color: #339933;">|</span> Top<span style="color: #339933;">.</span>Collections<span style="color: #339933;">.</span>Pictures<span style="color: #339933;">.</span>Astronomy<span style="color: #339933;">.</span>Astronauts <span style="color: #339933;">|</span>    <span style="color: #cc66cc;">3</span>
<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">13</span> rows<span style="color: #009900;">&#41;</span></pre></div></div>

<p>I wszystko wygląda fajnie co? Ale tu się zaczynają schody z którymi ja sam nie potrafiłem sobie poradzić. I po raz któryś poprosiłem depesz&#8217;a o pomoc. Sprawa ma się tak: Jak pobrać drzewo z posortowanymi gałęziami względem głębokości? No i tutaj był mój pies pogrzebany. Ale z pomocą przyszedł depesz, ale do sedna sprawy. Dodajmy sobie z 3 rekordy do naszej tabeli:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> tree <span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span>sort<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Programing'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> tree <span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span>sort<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Chemia'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> tree <span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span>sort<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Top.Science.Fizyka'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Teraz nasze drzewko będzie wyglądało tak:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"> id <span style="color: #66cc66;">|</span>                     path                      <span style="color: #66cc66;">|</span> sort
<span style="color: #808080; font-style: italic;">----+-----------------------------------------------+------</span>
  <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span> Top                                           <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science                                   <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Astronomy                         <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Astronomy<span style="color: #66cc66;">.</span>Astrophysics            <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Astronomy<span style="color: #66cc66;">.</span>Cosmology               <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Hobbies                                   <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">7</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Hobbies<span style="color: #66cc66;">.</span>Amateurs_Astronomy                <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">8</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections                               <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
  <span style="color: #cc66cc;">9</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections<span style="color: #66cc66;">.</span>Pictures                      <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections<span style="color: #66cc66;">.</span>Pictures<span style="color: #66cc66;">.</span>Astronomy            <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">11</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections<span style="color: #66cc66;">.</span>Pictures<span style="color: #66cc66;">.</span>Astronomy<span style="color: #66cc66;">.</span>Stars      <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">12</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections<span style="color: #66cc66;">.</span>Pictures<span style="color: #66cc66;">.</span>Astronomy<span style="color: #66cc66;">.</span>Galaxies   <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">13</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Collections<span style="color: #66cc66;">.</span>Pictures<span style="color: #66cc66;">.</span>Astronomy<span style="color: #66cc66;">.</span>Astronauts <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
 <span style="color: #cc66cc;">14</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Programing                        <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">15</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Chemia                            <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
 <span style="color: #cc66cc;">16</span> <span style="color: #66cc66;">|</span> Top<span style="color: #66cc66;">.</span>Science<span style="color: #66cc66;">.</span>Fizyka                            <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">4</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span> <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Co nas w ogóle nie zadowala, próbowałem na różne sposoby:</p>
<p>1 by depesz:</p>
<blockquote><p>
10:12 <    depesz> cojack: i think you will need to sort on subltree(path, 0, nlevel(path)-2), sort;
</p></blockquote>
<p>No to jedziemy</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">ltree<span style="color: #66cc66;">=&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> tree <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> subltree<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span> nlevel<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> sort;
ERROR:  invalid positions</pre></div></div>

<p>A dziwne bo wcześniej działało ^^</p>
<p>2 moja</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> subpath<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> title<span style="color: #66cc66;">,</span> nlevel<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> depth<span style="color: #66cc66;">,</span> sort <span style="color: #993333; font-weight: bold;">FROM</span> tree <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> subltree<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span> nlevel<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ASC</span>;
 id <span style="color: #66cc66;">|</span>       title        <span style="color: #66cc66;">|</span> depth <span style="color: #66cc66;">|</span> sort
<span style="color: #808080; font-style: italic;">----+--------------------+-------+------</span>
  <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span> Top                <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">8</span> <span style="color: #66cc66;">|</span> Collections        <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
  <span style="color: #cc66cc;">9</span> <span style="color: #66cc66;">|</span> Pictures           <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">|</span> Astronomy          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">13</span> <span style="color: #66cc66;">|</span> Astronauts         <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
 <span style="color: #cc66cc;">12</span> <span style="color: #66cc66;">|</span> Galaxies           <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">11</span> <span style="color: #66cc66;">|</span> Stars              <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span> Hobbies            <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">7</span> <span style="color: #66cc66;">|</span> Amateurs_Astronomy <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span> Science            <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span> Astronomy          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span> Astrophysics       <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span> Cosmology          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">15</span> <span style="color: #66cc66;">|</span> Chemia             <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
 <span style="color: #cc66cc;">16</span> <span style="color: #66cc66;">|</span> Fizyka             <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">4</span>
 <span style="color: #cc66cc;">14</span> <span style="color: #66cc66;">|</span> Programing         <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span> <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>I tutaj można zauważyć że mamy już względnie posortowane według kategorii ale wciąż brak posortowania względem sort po prostu, no i trzecia ostateczna (chyba) propozycja wg depesza podejście drugie:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">WITH</span> RECURSIVE rec <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*,</span> btrim<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span> sort<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'0000000'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> ordering <span style="color: #993333; font-weight: bold;">FROM</span> tree <span style="color: #993333; font-weight: bold;">WHERE</span> nlevel<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>
<span style="color: #993333; font-weight: bold;">UNION</span> <span style="color: #993333; font-weight: bold;">ALL</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> t2<span style="color: #66cc66;">.*,</span> t1<span style="color: #66cc66;">.</span>ordering <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">'/'</span> <span style="color: #66cc66;">||</span> btrim<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span> t2<span style="color: #66cc66;">.</span>sort<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'0000000'</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> ordering <span style="color: #993333; font-weight: bold;">FROM</span> rec t1<span style="color: #66cc66;">,</span> tree t2 <span style="color: #993333; font-weight: bold;">WHERE</span> t1<span style="color: #66cc66;">.</span>path @<span style="color: #66cc66;">&gt;</span> t2<span style="color: #66cc66;">.</span>path <span style="color: #993333; font-weight: bold;">AND</span> nlevel<span style="color: #66cc66;">&#40;</span>t1<span style="color: #66cc66;">.</span>path<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">=</span> nlevel<span style="color: #66cc66;">&#40;</span>t2<span style="color: #66cc66;">.</span>path<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> id<span style="color: #66cc66;">,</span> subpath<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> title<span style="color: #66cc66;">,</span> nlevel<span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> depth<span style="color: #66cc66;">,</span> sort <span style="color: #993333; font-weight: bold;">FROM</span> rec <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> ordering;
&nbsp;
 id <span style="color: #66cc66;">|</span>       title        <span style="color: #66cc66;">|</span> depth <span style="color: #66cc66;">|</span> sort
<span style="color: #808080; font-style: italic;">----+--------------------+-------+------</span>
  <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span> Top                <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span> Science            <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span> Astronomy          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span> Astrophysics       <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
  <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span> Cosmology          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">14</span> <span style="color: #66cc66;">|</span> Programing         <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">15</span> <span style="color: #66cc66;">|</span> Chemia             <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
 <span style="color: #cc66cc;">16</span> <span style="color: #66cc66;">|</span> Fizyka             <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">4</span>
  <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span> Hobbies            <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">7</span> <span style="color: #66cc66;">|</span> Amateurs_Astronomy <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
  <span style="color: #cc66cc;">8</span> <span style="color: #66cc66;">|</span> Collections        <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
  <span style="color: #cc66cc;">9</span> <span style="color: #66cc66;">|</span> Pictures           <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">|</span> Astronomy          <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">11</span> <span style="color: #66cc66;">|</span> Stars              <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">1</span>
 <span style="color: #cc66cc;">12</span> <span style="color: #66cc66;">|</span> Galaxies           <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">2</span>
 <span style="color: #cc66cc;">13</span> <span style="color: #66cc66;">|</span> Astronauts         <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">3</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span> <span style="color: #993333; font-weight: bold;">ROWS</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Dziękuje nie mam do Pana więcej pytań, rozwalił mnie jego poziom wiedzy.</p>
<p>To co tutaj przedstawiłem to tylko przedsmak tego co dzięki tej sposobności możemy doświadczyć, a są to:</p>
<ol>
<li>ACL</li>
<li>RBAC</li>
<li>Hierarchia grup</li>
<li>Drzewa ^^</li>
</ol>
<p>Nie będę opisywał funkcji jakie są dostępne w tym module, a na pewno nie w tym wpisie. Chciałem przedstawić że coś takiego istnieje, gdyż bardzo mało osób wie o tym, nie zdaje sobie sprawy z potężnej mocy jaką to posiada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/postgresql-ltree/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

