OSDN Git Service

Mask more unplivileged columns in pg_store_plans view.
authorKyotaro Horiguchi <horiguchi.kyotaro@lab.ntt.co.jp>
Fri, 25 Apr 2014 05:54:02 +0000 (14:54 +0900)
committerKyotaro Horiguchi <horiguchi.kyotaro@lab.ntt.co.jp>
Fri, 3 Apr 2015 05:55:13 +0000 (14:55 +0900)
queryid, planid and queryid_stmt were newly masked for unplivileged
users following pg_stat_statements.

pg_store_plans.c

index 01c9578..a4613dd 100644 (file)
@@ -1048,10 +1048,19 @@ pg_store_plans(PG_FUNCTION_ARGS)
 
                values[i++] = ObjectIdGetDatum(entry->key.userid);
                values[i++] = ObjectIdGetDatum(entry->key.dbid);
-               values[i++] = Int64GetDatumFast(queryid);
-               values[i++] = Int64GetDatumFast(planid);
+               if (is_superuser || entry->key.userid == userid)
+               {
+                       values[i++] = Int64GetDatumFast(queryid);
+                       values[i++] = Int64GetDatumFast(planid);
+                       values[i++] = Int64GetDatumFast(queryid_stmt);
+               }
+               else
+               {
+                       values[i++] = Int64GetDatumFast(0);
+                       values[i++] = Int64GetDatumFast(0);
+                       values[i++] = Int64GetDatumFast(0);
+               }
 
-               values[i++] = Int64GetDatumFast(queryid_stmt);
 
                if (is_superuser || entry->key.userid == userid)
                {