-SELECT coords(x,y,z),ruler,planet,race,score,size,value,scorerank,sizerank,
- valuerank, xp, xprank, alliance, relationship, nick, planet_status, hit_us, channel
-FROM current_planet_stats WHERE (x = $1 AND y = $2 and z = $3) OR nick ILIKE $4 LIMIT 1
+WITH p AS (SELECT pid,coords(x,y,z),ruler,planet,race,score,size,value,scorerank,sizerank,
+ valuerank, xp, xprank, alliance, relationship, nick, planet_status, hit_us, channel
+ FROM current_planet_stats
+ WHERE (x = $1 AND y = $2 and z = $3) OR nick ILIKE $4 LIMIT 1
+), t AS (SELECT tag,bool_or(uid = $5) AS own,max(time) AS time
+ FROM planet_tags
+ WHERE pid = (SELECT pid FROM p)
+ AND ($6 OR uid = $5)
+ GROUP BY tag
+ ORDER BY time DESC
+), tags AS (SELECT array_to_string(array_agg(tag || CASE WHEN own THEN '*' ELSE '' END),' ') AS tags
+ FROM t
+)
+SELECT * FROM p, tags;