[3/3] trafodion git commit: Merge [TRAFODION-2175] PR 1512 Get statement enhancements

2018-04-12 Thread rmarton
Merge [TRAFODION-2175] PR 1512 Get statement enhancements


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/ad1c6761
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/ad1c6761
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/ad1c6761

Branch: refs/heads/master
Commit: ad1c67618de5cab9c63980f9096cd470a78559e4
Parents: d6e2933 021faec
Author: Roberta Marton 
Authored: Wed Apr 11 22:03:24 2018 +
Committer: Roberta Marton 
Committed: Wed Apr 11 22:03:24 2018 +

--
 core/sql/comexe/ComTdbExeUtil.h  |   2 -
 core/sql/executor/ExExeUtil.h|   9 +-
 core/sql/executor/ExExeUtilGet.cpp   | 624 ++--
 core/sql/generator/GenRelExeUtil.cpp | 164 +++
 core/sql/parser/sqlparser.y  |  37 +-
 core/sql/regress/privs1/EXPECTED123  | 773 ++
 core/sql/regress/privs1/EXPECTED125  | 268 ++-
 core/sql/regress/privs1/TEST123  |  46 ++
 core/sql/regress/privs1/TEST125  |  20 +-
 9 files changed, 1658 insertions(+), 285 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/ad1c6761/core/sql/comexe/ComTdbExeUtil.h
--

http://git-wip-us.apache.org/repos/asf/trafodion/blob/ad1c6761/core/sql/executor/ExExeUtilGet.cpp
--

http://git-wip-us.apache.org/repos/asf/trafodion/blob/ad1c6761/core/sql/parser/sqlparser.y
--



[1/3] trafodion git commit: Get statement enhancements

2018-04-12 Thread rmarton
Repository: trafodion
Updated Branches:
  refs/heads/master d6e29337a -> ad1c67618


http://git-wip-us.apache.org/repos/asf/trafodion/blob/021faec6/core/sql/regress/privs1/EXPECTED123
--
diff --git a/core/sql/regress/privs1/EXPECTED123 
b/core/sql/regress/privs1/EXPECTED123
index 0251bda..45d5db9 100644
--- a/core/sql/regress/privs1/EXPECTED123
+++ b/core/sql/regress/privs1/EXPECTED123
@@ -93,6 +93,9 @@ SHOW
 +>  ;
 
 --- SQL operation complete.
+>>create index games_visitor on games(visitor_team_number) no populate;
+
+--- SQL operation complete.
 >>
 >>create table players
 +>  (player_number int not null,
@@ -109,6 +112,32 @@ SHOW
 
 --- SQL operation complete.
 >>
+>>create view home_teams_games as
++>  select t.team_number, g.game_number, g.game_time
++>  from "TEAMS" t,
++>   "GAMES" g
++>  where t.team_number = g.home_team_number
++>  order by 1, game_number, game_time;
+
+--- SQL operation complete.
+>>
+>>create view players_on_team as
++>  select player_name, team_name
++>  from teams t, players p
++>  where p.player_team_number = t.team_number
++>  order by t.team_name;
+
+--- SQL operation complete.
+>>
+>>create view games_by_player as
++>  select player_name, game_time
++>  from players_on_team p, games g, teams t
++>  where p.player_name = t.team_name and
++>t.team_number = g.home_team_number
++>  order by player_name, team_number;
+
+--- SQL operation complete.
+>>
 >>grant select on games to sql_user4;
 
 --- SQL operation complete.
@@ -332,10 +361,13 @@ Privileges for User SQL_USER5
 --ETRAFODION."_LIBMGR_".EVENT_LOG_READER
 --ETRAFODION."_LIBMGR_".JDBC
 SIDU-R-TRAFODION.T123SCH.GAMES
+SR-TRAFODION.T123SCH.GAMES_BY_PLAYER
+SR-TRAFODION.T123SCH.HOME_TEAMS_GAMES
 SIDU-R-TRAFODION.T123SCH.PLAYERS
 S--TRAFODION.T123SCH.PLAYERS  PLAYER_NAME
 S--TRAFODION.T123SCH.PLAYERS  PLAYER_NUMBER
 S--TRAFODION.T123SCH.PLAYERS  PLAYER_TEAM_NUMBER
+SR-TRAFODION.T123SCH.PLAYERS_ON_TEAM
 G--TRAFODION.T123SCH.PLAYERS_SEQUENCE
 SIDU-R-TRAFODION.T123SCH.SB_HISTOGRAMS
 SIDU-R-TRAFODION.T123SCH.SB_HISTOGRAM_INTERVALS
@@ -374,7 +406,10 @@ Privileges for Role T123_OWNERROLE
 ==
 
 SIDU-R-TRAFODION.T123SCH.GAMES
+SR-TRAFODION.T123SCH.GAMES_BY_PLAYER
+SR-TRAFODION.T123SCH.HOME_TEAMS_GAMES
 SIDU-R-TRAFODION.T123SCH.PLAYERS
+SR-TRAFODION.T123SCH.PLAYERS_ON_TEAM
 G--TRAFODION.T123SCH.PLAYERS_SEQUENCE
 SIDU-R-TRAFODION.T123SCH.SB_HISTOGRAMS
 SIDU-R-TRAFODION.T123SCH.SB_HISTOGRAM_INTERVALS
@@ -397,6 +432,164 @@ S--TRAFODION.T123SCH.TEAMS  TEAM_NUMBER
 
 --- SQL operation complete.
 >>
+>>get tables for user sql_user1;
+
+Tables for User SQL_USER1
+=
+
+TRAFODION."T123SCH".GAMES
+TRAFODION."T123SCH".PLAYERS
+TRAFODION."T123SCH".TEAMS
+
+--- SQL operation complete.
+>>get tables for user sql_user2;
+
+Tables for User SQL_USER2
+=
+
+TRAFODION."T123SCH".GAMES
+TRAFODION."T123SCH".PLAYERS
+TRAFODION."T123SCH".TEAMS
+
+--- SQL operation complete.
+>>get tables for user sql_user3;
+
+Tables for User SQL_USER3
+=
+
+TRAFODION."T123SCH".PLAYERS
+TRAFODION."T123SCH".TEAMS
+
+--- SQL operation complete.
+>>get tables for user sql_user4;
+
+Tables for User SQL_USER4
+=
+
+TRAFODION."T123SCH".GAMES
+TRAFODION."T123SCH".PLAYERS
+TRAFODION."T123SCH".TEAMS
+
+--- SQL operation complete.
+>>get tables for user sql_user5;
+
+Tables for User SQL_USER5
+=
+
+TRAFODION."T123SCH".GAMES
+TRAFODION."T123SCH".PLAYERS
+TRAFODION."T123SCH".SB_HISTOGRAMS
+TRAFODION."T123SCH".SB_HISTOGRAM_INTERVALS
+TRAFODION."T123SCH".SB_PERSISTENT_SAMPLES
+TRAFODION."T123SCH".TEAMS
+
+--- SQL operation complete.
+>>
+>>get indexes for user sql_user1;
+
+Indexes for User SQL_USER1
+==
+
+TRAFODION."T123SCH".GAMES_VISITOR
+
+--- SQL operation complete.
+>>get indexes for user sql_user2;
+
+Indexes for User SQL_USER2
+==
+
+TRAFODION."T123SCH".GAMES_VISITOR
+
+--- SQL operation complete.
+>>get indexes for user sql_user3;
+
+--- SQL operation complete.
+>>get indexes for user sql_user4;
+
+Indexes for User SQL_USER4
+==
+
+TRAFODION."T123SCH".GAMES_VISITOR
+
+--- SQL operation complete.
+>>get indexes for user sql_user5;
+
+Indexes for User SQL_USER5
+==
+
+TRAFODION."T123SCH".GAMES_VISITOR
+
+--- SQL operation complete.
+>>
+>>get views for user sql_user1;
+
+--- SQL operation complete.
+>>get views for user sql_user2;
+
+--- SQL operation complete.
+>>get views for user sql_user3;
+
+--- SQL operation complete.
+>>get views for user sql_user4;
+
+--- SQL operation complete.
+>>get views for user sql_user5;
+
+Views for User SQL_USER5
+
+
+TRAFODION."T123SCH".GAMES_BY_PLAYER
+TRAF

[2/3] trafodion git commit: Get statement enhancements

2018-04-12 Thread rmarton
Get statement enhancements

Added support and privilege checks for the following commands:

  get functions for library
  get procedures for library
  get table_mapping functions for library

  get indexes on table
  get objects on table
  get views on table
  get views on view

  get libraries in schema
  get objects in view
  get tables in view
  get views in view

  get indexes for user
  get tables for user
  get libraries for user
  get views for user

Changed "get libraries for schema" to include libraries where the current user
has execute privilege on one of the libraries routines (functions, procedures,
or table_mapping functions).

Addressed a performance issue when determining if the user has column level
privileges. If the user has granted privileges against native Hive tables
through EsgynDB, we need to get the column name from Hive. The call to get the
column, by calling hivemd, is very expensive. This change checks to see if the
requested user has been granted any column level privileges on a hive table.
If so, we will go ahead and do the mapping (call hivemd). If not, then we will
not include the hivemd fragment for the query.  Since we are scanning the column
privileges table anyway, we also see if the requested user (or their roles) has
been granted any privileges. If so, we include the column privileges check in
the query.

Commented out get statements that we do not support at this time.


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/021faec6
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/021faec6
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/021faec6

Branch: refs/heads/master
Commit: 021faec6a18336cfefd11b30d100a8fe4e3da1ee
Parents: ee2cff9
Author: Roberta Marton 
Authored: Tue Apr 10 18:35:39 2018 +
Committer: Roberta Marton 
Committed: Tue Apr 10 18:35:39 2018 +

--
 core/sql/comexe/ComTdbExeUtil.h  |   2 -
 core/sql/executor/ExExeUtil.h|   9 +-
 core/sql/executor/ExExeUtilGet.cpp   | 624 ++--
 core/sql/generator/GenRelExeUtil.cpp | 164 +++
 core/sql/parser/sqlparser.y  |  37 +-
 core/sql/regress/privs1/EXPECTED123  | 773 ++
 core/sql/regress/privs1/EXPECTED125  | 268 ++-
 core/sql/regress/privs1/TEST123  |  46 ++
 core/sql/regress/privs1/TEST125  |  20 +-
 9 files changed, 1658 insertions(+), 285 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/021faec6/core/sql/comexe/ComTdbExeUtil.h
--
diff --git a/core/sql/comexe/ComTdbExeUtil.h b/core/sql/comexe/ComTdbExeUtil.h
index 9024afe..bb29172 100644
--- a/core/sql/comexe/ComTdbExeUtil.h
+++ b/core/sql/comexe/ComTdbExeUtil.h
@@ -2542,9 +2542,7 @@ public:
 PRIVILEGES_FOR_ROLE_,
 
 USERS_,
-CURRENT_USER_,
 
-CATALOGS_FOR_USER_,
 INDEXES_FOR_USER_,
 LIBRARIES_FOR_USER_,
 MVGROUPS_FOR_USER_,

http://git-wip-us.apache.org/repos/asf/trafodion/blob/021faec6/core/sql/executor/ExExeUtil.h
--
diff --git a/core/sql/executor/ExExeUtil.h b/core/sql/executor/ExExeUtil.h
index 428ccdf..3615c10 100644
--- a/core/sql/executor/ExExeUtil.h
+++ b/core/sql/executor/ExExeUtil.h
@@ -2499,9 +2499,16 @@ private:
 const char *schName,
 const char *objName);
 
+  Int32 colPrivsFrag(
+const char *authName,
+const char *catName,
+const NAString &privWhereClause,
+NAString &colPrivsStmt);
+
   NAString getGrantedPrivCmd(
 const NAString &roleList,
-const char * cat);
+const char * cat,
+const NAString &inColumn = NAString("object_uid"));
 
   char * getRoleList(
 const Int32 userID,

http://git-wip-us.apache.org/repos/asf/trafodion/blob/021faec6/core/sql/executor/ExExeUtilGet.cpp
--
diff --git a/core/sql/executor/ExExeUtilGet.cpp 
b/core/sql/executor/ExExeUtilGet.cpp
index 97815ef..249241f 100644
--- a/core/sql/executor/ExExeUtilGet.cpp
+++ b/core/sql/executor/ExExeUtilGet.cpp
@@ -182,7 +182,7 @@ static const QueryString getRolesForUserQuery[] =
   {" ; "}
 };
 
-static const QueryString getPrivsForAuthsQuery[] = 
+static const QueryString getPrivsForAuthsQuery[] =
 {
   {" select translate(rtrim(object_name) using ucs2toutf8), "},
   {"case when bitextract(privileges_bitmap,63,1) = 1 then 'S' "},
@@ -201,8 +201,31 @@ static const QueryString getPrivsForAuthsQuery[] =
   {"  else '-' end as privs "},
   {" from %s.\"%s\".%s "},
   {" where grantee_id %s "},
-
   {" union "},
+  {"  (select translate(rtrim(schema_name) using ucs2toutf8), "},
+  {"case when bitextract(privileges_bitmap,63,1) = 1 then 'S' "},
+  {"  else '-' e

[2/2] trafodion git commit: PR-1510 [TRAFOFION-3020] FIx for parser regressions issue

2018-04-12 Thread ansharma
PR-1510 [TRAFOFION-3020] FIx for parser regressions issue


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/82710576
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/82710576
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/82710576

Branch: refs/heads/master
Commit: 82710576e463f4c21256e2bccc16e6cbeb8ef25b
Parents: ad1c676 927df72
Author: Anoop Sharma 
Authored: Thu Apr 12 20:17:49 2018 +
Committer: Anoop Sharma 
Committed: Thu Apr 12 20:17:49 2018 +

--
 core/sql/parser/sqlparser.y | 1 -
 1 file changed, 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/82710576/core/sql/parser/sqlparser.y
--



[1/2] trafodion git commit: [TRAFODION-3020] regression issue

2018-04-12 Thread ansharma
Repository: trafodion
Updated Branches:
  refs/heads/master ad1c67618 -> 82710576e


[TRAFODION-3020] regression issue


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/927df724
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/927df724
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/927df724

Branch: refs/heads/master
Commit: 927df7240050324817640a9ec2c2f0880f405b69
Parents: 6ca1d0f
Author: Liu Ming 
Authored: Mon Apr 9 04:41:57 2018 -0400
Committer: Liu Ming 
Committed: Mon Apr 9 04:41:57 2018 -0400

--
 core/sql/parser/sqlparser.y | 1 -
 1 file changed, 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/927df724/core/sql/parser/sqlparser.y
--
diff --git a/core/sql/parser/sqlparser.y b/core/sql/parser/sqlparser.y
index 3697a57..b7fa098 100755
--- a/core/sql/parser/sqlparser.y
+++ b/core/sql/parser/sqlparser.y
@@ -2590,7 +2590,6 @@ static void enableMakeQuotedStringISO88591Mechanism()
 %typedatetime_value_function
 %typedatetime_misc_function
 %typedatetime_misc_function_used_as_default
-%typesequence_as_default 
 %type   format_attributes
 %typeoptional_constraint_attributes
 %typeconstraint_attributes



[2/2] trafodion git commit: [TRAFODION-2205] PR 1516 invalid char at create schema when authorization name is long

2018-04-12 Thread rmarton
[TRAFODION-2205] PR 1516 invalid char at create schema when authorization name 
is long


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/3dd0eca4
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/3dd0eca4
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/3dd0eca4

Branch: refs/heads/master
Commit: 3dd0eca447ebcfbadf81c78730f64a2709652b03
Parents: 8271057 affe1f6
Author: Roberta Marton 
Authored: Thu Apr 12 22:52:07 2018 +
Committer: Roberta Marton 
Committed: Thu Apr 12 22:52:07 2018 +

--
 core/sql/cli/Cli.cpp |  12 +--
 core/sql/cli/Context.cpp | 125 +-
 core/sql/cli/Context.h   |   6 --
 core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp |   6 +-
 core/sql/sqlcomp/CmpSeabaseDDLschema.cpp |   2 +-
 core/sql/sqlcomp/PrivMgrPrivileges.cpp   |   2 +-
 6 files changed, 14 insertions(+), 139 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/3dd0eca4/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
--



[1/2] trafodion git commit: [TRAFODION-2205] invalid char at create schema when authorization name is long

2018-04-12 Thread rmarton
Repository: trafodion
Updated Branches:
  refs/heads/master 82710576e -> 3dd0eca44


[TRAFODION-2205] invalid char at create schema when authorization name is long

There is code that converts the user ID to its username.  The buffer size
requested was not big enough to hold the return value.  In addition, the buffer
size check was returning an error but did not add an error to the ComDiags area;
therefore the returned error was ignored.
- Changed max len in calls to getAuthNameFromAuthID to the correct size.
- Set up the Diags area when buffer size is too small so the error is reported
  correctly, returns error 20235:

"Error returned while converting auth ID to auth name, status: xx ID: xx."

Also removed redundant methods:
-  getDBUserNameFromID - calls getAuthNameFromID instead
-  getDBUserIDFromName - calls GetAuthIDFromName instead


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/affe1f60
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/affe1f60
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/affe1f60

Branch: refs/heads/master
Commit: affe1f60ff02610d40a9d58702b12d9c9473de34
Parents: ee2cff9
Author: Roberta Marton 
Authored: Thu Apr 12 16:07:02 2018 +
Committer: Roberta Marton 
Committed: Thu Apr 12 16:07:02 2018 +

--
 core/sql/cli/Cli.cpp |  12 +--
 core/sql/cli/Context.cpp | 125 +-
 core/sql/cli/Context.h   |   6 --
 core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp |   6 +-
 core/sql/sqlcomp/CmpSeabaseDDLschema.cpp |   2 +-
 core/sql/sqlcomp/PrivMgrPrivileges.cpp   |   2 +-
 6 files changed, 14 insertions(+), 139 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafodion/blob/affe1f60/core/sql/cli/Cli.cpp
--
diff --git a/core/sql/cli/Cli.cpp b/core/sql/cli/Cli.cpp
index 4a83a14..a06aadb 100644
--- a/core/sql/cli/Cli.cpp
+++ b/core/sql/cli/Cli.cpp
@@ -6182,10 +6182,10 @@ Lng32 SQLCLI_GetDatabaseUserName (
   ContextCli &currContext = *(cliGlobals->currContext());
   ComDiagsArea &diags = currContext.diags();
 
-  retcode = currContext.getDBUserNameFromID(user_id,
-string_value,
-max_string_len,
-len_of_item);
+  retcode = currContext.getAuthNameFromID(user_id,
+  string_value,
+  max_string_len,
+ *len_of_item);
 
   return CliEpilogue(cliGlobals, NULL, retcode);
 }
@@ -6206,8 +6206,8 @@ Lng32 SQLCLI_GetDatabaseUserID (
   ContextCli &currContext = *(cliGlobals->currContext());
   ComDiagsArea &diags = currContext.diags();
 
-  retcode = currContext.getDBUserIDFromName(string_value,
-numeric_value);
+  retcode = currContext.getAuthIDFromName(string_value,
+  *numeric_value);
 
   return CliEpilogue(cliGlobals, NULL, retcode);
 }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/affe1f60/core/sql/cli/Context.cpp
--
diff --git a/core/sql/cli/Context.cpp b/core/sql/cli/Context.cpp
index 09f1783..c4dd6c7 100644
--- a/core/sql/cli/Context.cpp
+++ b/core/sql/cli/Context.cpp
@@ -4359,128 +4359,6 @@ RETCODE ContextCli::getAuthNameFromID(
 //*** End of ContextCli::getAuthNameFromID 
*
 
 
-
-
-
-
-// Public method to map an integer user ID to a user name
-RETCODE ContextCli::getDBUserNameFromID(Int32 userID, // IN
-char *userNameBuffer, // OUT
-Int32 maxBufLen,  // IN
-Int32 *requiredLen)   // OUT optional
-{
-  RETCODE result = SUCCESS;
-  char usersNameFromUsersTable[MAX_USERNAME_LEN + 1];
-  Int32 userIDFromUsersTable;
-  std::vector roleIDs;
-  if (requiredLen)
-*requiredLen = 0;
-  
-  // Cases to consider
-  // * userID is the current user ID
-  // * SYSTEM_USER and PUBLIC_USER have special integer user IDs and
-  //   are not registered in the USERS table
-  // * other users
-
-  NABoolean isCurrentUser =
-(userID == (Int32) databaseUserID_ ? TRUE : FALSE);
-
-  const char *currentUserName = NULL;
-  if (isCurrentUser)
-  {
-currentUserName = databaseUserName_;
-  }
-  else
-  {
-// See if the USERS row exists
-result = authQuery(USERS_QUERY_BY_USER_ID,
-   NULL,// IN user name (ignored)
-   userID,  // IN user ID
-   usersNameFromUsersTable, //OUT
-