title: Combining row level security with column grants
body: <p>Let's say I have a <code>users</code> table with three columns, <code>public_data</code>, <code>private_data</code>, and <code>system_data</code>, and I have three roles named <code>postgres</code>, <code>authenticated_user</code>, and <code>visitor</code>.</p>
  
  <p><code>postgres</code> is superuser and can access all data (including <code>system_data</code> of course)</p>
  
  <p><code>authenticated_user</code> should be able to access every user's <code>public_data</code>, their own <code>private_data</code>, but not <code>system_data</code></p>
  
  <p><code>visitor</code> can only access every users' <code>public_data</code></p>
  
  <p>How do I set up my tables, roles, grants, and policies to accomplish the above?</p>