[3/3] trafodion git commit: Merge [TRAFODION-2175] PR 1512 Get statement enhancements
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
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
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
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
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
[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
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 -