What's the difference between ALL_TABLES and TABLES?
ALL_TABLES shows tables and views.
TABLES shows only tables:

dbadmin=&gt; create or replace view test as select now() ;
CREATE VIEW
dbadmin=&gt; 
dbadmin=&gt; select * from test;
              now              
-------------------------------
 2018-08-13 13:04:24.500297-04
(1 row)

dbadmin=&gt; 
dbadmin=&gt; select * from all_tables where table_type = 'VIEW';
 schema_name |     table_id      | table_name | table_type | remarks 
-------------+-------------------+------------+------------+---------
 public      | 45035996273742356 | test       | VIEW       | 
(1 row)

dbadmin=&gt; 
dbadmin=&gt; 
dbadmin=&gt; 
dbadmin=&gt; select table_name, owner_name from tables where table_name = 'test' ;
 table_name | owner_name 
------------+------------
(0 rows)

dbadmin=&gt; 
dbadmin=&gt; 


There is also a system table called views:

dbadmin=&gt; 
dbadmin=&gt; 
dbadmin=&gt; 
dbadmin=&gt; select table_name, owner_name from views ;
 table_name | owner_name 
------------+------------
 test       | dbadmin
(1 row)


A user can select from tables, all_tables and views to see which tables and vies he has permissions for.
I believe I got this from 
http://www.vertica-forums.com/viewtopic.php?t=726

Here is a tool I use as DBADMIN to summarize permissions:

 SELECT X.object_type,
        X.object_schema,
        X.object_name,
        X.permissions,
        X.grantor,
        X.owner,
        X."grant_sql (for permissions that have '*')"
 FROM ( SELECT 1 AS ordinal,
        g.object_schema,
        g.object_name,
        g.object_type,
        CASE WHEN (g.privileges_description = 'USAGE'::varchar(5)) THEN (g.privileges_description || ' (READONLY access) '::varchar(19)) WHEN (g.privileges_description ~~ '%CREATE%'::varchar(8)) THEN (g.privileges_description || ' (can read, create &amp; drop tables) '::varchar(34)) ELSE NULL END AS permissions,
        g.grantor,
        s.schema_owner AS owner,
        CASE WHEN (g.privileges_description ~~ '%*%'::varchar(3)) THEN (('grant &lt;INSERT, SELECT, UPDATE, DELETE, REFERENCES&gt; on '::varchar(54) || g.object_name) || ' to &lt;user_name&gt; ; '::varchar(18)) ELSE NULL END AS "grant_sql (for permissions that have '*')"
 FROM (v_catalog.grants g JOIN v_catalog.schemata s ON ((g.object_name = s.schema_name)))
 WHERE (g.object_type = 'SCHEMA'::varchar(6)) UNION  SELECT 2 AS ordinal,
        g.object_schema,
        ((t.table_schema || '.'::varchar(1)) || t.table_name) AS object_name,
        g.object_type,
        g.privileges_description AS permissions,
        g.grantor,
        t.owner_name AS owner,
        CASE WHEN (g.privileges_description ~~ '%*%'::varchar(3)) THEN (('grant &lt;usage, create&gt; on '::varchar(25) || g.object_name) || ' to &lt;user_name&gt; ; '::varchar(18)) ELSE NULL END AS "grant_sql (for permissions that have '*')"
 FROM (v_catalog.grants g JOIN v_catalog.tables t ON (((g.object_schema = t.table_schema) AND (g.object_name = t.table_name))))
 WHERE (g.object_type = 'TABLE'::varchar(5))) X
 ORDER BY X.ordinal,
          X.object_name;