Github user robertamarton commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/1288#discussion_r148654412
--- Diff: core/sql/sqlcomp/CmpSeabaseDDLcommentOn.cpp ---
@@ -0,0 +1,202 @@
+/**********************************************************************
+// @@@ START COPYRIGHT @@@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+// @@@ END COPYRIGHT @@@
+**********************************************************************/
+
+/* -*-C++-*-
+
*****************************************************************************
+ *
+ * File: CmpSeabaseDDLcommentOn.cpp
+ * Description: Implements ddl operations for Seabase indexes.
+ *
+ *
+ * Created: 8/17/2017
+ * Language: C++
+ *
+ *
+
*****************************************************************************
+ */
+
+#define SQLPARSERGLOBALS_FLAGS // must precede all #include's
+#define SQLPARSERGLOBALS_NADEFAULTS
+
+#include "ComObjectName.h"
+
+#include "CmpDDLCatErrorCodes.h"
+#include "ElemDDLHbaseOptions.h"
+
+#include "SchemaDB.h"
+#include "CmpSeabaseDDL.h"
+#include "CmpDescribe.h"
+
+#include "ExpHbaseInterface.h"
+
+#include "ExExeUtilCli.h"
+#include "Generator.h"
+
+#include "ComCextdecs.h"
+#include "ComUser.h"
+
+#include "NumericType.h"
+
+#include "PrivMgrCommands.h"
+
+#include "StmtDDLCommentOn.h"
+
+#include "PrivMgrComponentPrivileges.h"
+#include "PrivMgrCommands.h"
+#include "ComUser.h"
+
+
+void CmpSeabaseDDL::doSeabaseCommentOn(StmtDDLCommentOn *commentOnNode,
+ NAString &currCatName,
+ NAString &currSchName)
+{
+ Lng32 cliRC;
+ Lng32 retcode;
+
+ enum ComObjectType enMDObjType = COM_UNKNOWN_OBJECT;
+
+ ComObjectName objectName(commentOnNode->getObjectName());
+ ComAnsiNamePart currCatAnsiName(currCatName);
+ ComAnsiNamePart currSchAnsiName(currSchName);
+ objectName.applyDefaults(currCatAnsiName, currSchAnsiName);
+
+ enum StmtDDLCommentOn::COMMENT_ON_TYPES commentObjectType =
commentOnNode->getObjectType();
+
+ switch (commentObjectType)
+ {
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_TABLE:
+ enMDObjType = COM_BASE_TABLE_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_COLUMN:
+ enMDObjType = COM_BASE_TABLE_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_INDEX:
+ enMDObjType = COM_INDEX_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_SCHEMA:
+ enMDObjType = COM_PRIVATE_SCHEMA_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_VIEW:
+ enMDObjType = COM_VIEW_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_LIBRARY:
+ enMDObjType = COM_LIBRARY_OBJECT;
+ break;
+
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_PROCEDURE:
+ case StmtDDLCommentOn::COMMENT_ON_TYPE_FUNCTION:
+ enMDObjType = COM_USER_DEFINED_ROUTINE_OBJECT;
+ break;
+
+ default:
+ break;
+
+ }
+
+ NAString catalogNamePart = objectName.getCatalogNamePartAsAnsiString();
+ NAString schemaNamePart = objectName.getSchemaNamePartAsAnsiString(TRUE);
+ NAString objNamePart = objectName.getObjectNamePartAsAnsiString(TRUE);
+
+ const NAString extObjName = objectName.getExternalName(TRUE);
+
+ ExeCliInterface cliInterface(STMTHEAP, NULL, NULL,
+
CmpCommon::context()->sqlSession()->getParentQid());
+ Int64 objUID = 0;
+ Int32 objectOwnerID = SUPER_USER;
+ Int32 schemaOwnerID = SUPER_USER;
+ Int64 objectFlags = 0;
+
+ // Verify that the requester has COMMENT privilege.
+ if (isAuthorizationEnabled() && !ComUser::isRootUserID())
+ {
+ NAString privMgrMDLoc;
--- End diff --
There is a method called isDDLOperationAuthorized. I would call this
method instead of making checks here. isDDLOperationAuthorized, for example,
allows the object owner to perform the request and also checks to see if a
role, that the user has been granted is the owner.
---