You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ranger.apache.org by Shubham Chaurasia <sh...@gmail.com> on 2019/01/04 10:54:22 UTC

Database metadata scenario in Hive plugin

Hi All,

I am encountering a strange scenario when trying to retrieve table names
using jdbc java.sql.Connection.getMetaData().getTables().

Ranger Policy
------------------------------------
Database: ranger_hive_test
Table: *
Hive Column: *
Allow Conditions: All permissions to the user.
------------------------------------

1) Now when I execute the below method:

  private static void testWithConnMetaData() throws SQLException {

System.out.println("---------------------------testWithConnMetaData-----------------------------");
    try (Connection con = DriverManager.getConnection(url, user, "")) {

      ResultSet res = con.getMetaData().getTables(null, "ranger_hive_test",
"t1", null);
      while (res.next()) {
        System.out.println(res.getString("TABLE_NAME"));
      }
    }

System.out.println("---------------------------testWithConnMetaData-----------------------------");
  }


I get empty resultset.

2) To verify policy and table existence when I execute the same using show
tables query, it gives me right results(table names in ranger_hive_test).
  private static void testWithQuery() throws SQLException {

System.out.println("---------------------------testWithQuery-----------------------------");
    try (Connection con = DriverManager.getConnection(url, user, "")) {
      Statement stmt = con.createStatement();

      String sql = "show tables in ranger_hive_test";
      ResultSet res = stmt.executeQuery(sql);
      while (res.next()) {
        System.out.println(res.getString("tab_name"));
      }
    }

System.out.println("---------------------------testWithQuery-----------------------------");
  }


Is there something I am missing so that I am not getting any results in
method 1 ? Anything else I need to add to policy?

Also surprisingly, when I add "*" to Database field in policy, I start
getting results in method 1.

Thanks,
Shubham