Repository: trafodion
Updated Branches:
  refs/heads/master 4a3f79698 -> ab6805dfb


odbc support SQLTablePrivileges


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

Branch: refs/heads/master
Commit: 3ec2f29a196ed0895223dbf1f3c87067273e246a
Parents: d93d17e
Author: Weixin-Xu <xwx@weixin-1.novalocal>
Authored: Tue Jul 10 15:48:28 2018 +0800
Committer: Weixin-Xu <xwx@weixin-1.novalocal>
Committed: Tue Jul 10 15:48:28 2018 +0800

----------------------------------------------------------------------
 .../odbc/src/odbc/nsksrvrcore/srvrothers.cpp    | 66 +++++++++++++++++++-
 1 file changed, 65 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/3ec2f29a/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp 
b/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
index ccbb689..3f76b8c 100644
--- a/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
@@ -5111,7 +5111,71 @@ odbc_SQLSvc_GetSQLCatalogs_sme_(
                     inputParam[2], inputParam[3],
                     uniqueness == 1 ? "" : "and idx.is_unique=1"
                     );
-
+            break;
+        case SQL_API_SQLTABLEPRIVILEGES:
+            convertWildcard(metadataId, TRUE, catalogNm, expCatalogNm);
+            convertWildcardNoEsc(metadataId, TRUE, catalogNm, catalogNmNoEsc);
+            convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm);
+            convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc);
+            convertWildcard(metadataId, TRUE, tableNm, expTableNm);
+            convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc);
+            inputParam[0] = catalogNmNoEsc;
+            inputParam[1] = expCatalogNm;
+            inputParam[2] = schemaNmNoEsc;
+            inputParam[3] = expSchemaNm;
+            inputParam[4] = tableNmNoEsc;
+            inputParam[5] = expTableNm;
+            snprintf(CatalogQuery, sizeof(CatalogQuery), "select 
cast(ob.CATALOG_NAME as varchar(128) ) TABLE_CAT,"
+                    "cast(trim(ob.SCHEMA_NAME) as varchar(128) ) TABLE_SCHEM,"
+                    "cast(trim(ob.OBJECT_NAME) as varchar(128) ) TABLE_NAME,"
+                    "cast(trim(op.GRANTOR_NAME) as varchar(128) ) GRANTOR,"
+                    "cast(trim(op.GRANTEE_NAME) as varchar(128) ) GRANTEE,"
+                    "cast(trim(case op.PRIVILEGES_BITMAP "
+                    "when 1 then 'SELECT' "
+                    "when 2 then 'INSERT' "
+                    "when 3 then 'SELECT,INSERT' "
+                    "when 4 then 'DELETE' "
+                    "when 5 then 'SELECT,DELETE' "
+                    "when 6 then 'INSERT,DELETE' "
+                    "when 7 then 'SELECT,INSERT,DELETE' "
+                    "when 8 then 'UPDATE' "
+                    "when 9 then 'SELECT,UPDATE' "
+                    "when 10 then 'INSERT,UPDATE' "
+                    "when 11 then 'SELECT,INSERT,UPDATE' "
+                    "when 12 then 'DELETE,UPDATE' "
+                    "when 13 then 'SELECT,DELETE,UPDATE' "
+                    "when 14 then 'INSERT,DELETE,UPDATE' "
+                    "when 15 then 'SELECT,INSERT,DELETE,UPDATE' "
+                    "when 32 then 'REFERENCES' "
+                    "when 33 then 'SELECT,REFERENCES' "
+                    "when 34 then 'INSERT,REFERENCES' "
+                    "when 35 then 'SELECT,INSERT,REFERENCES' "
+                    "when 36 then 'DELETE,REFERENCES' "
+                    "when 37 then 'SELECT,DELETE,REFERENCES' "
+                    "when 38 then 'INSERT,DELETE,REFERENCES' "
+                    "when 39 then 'SELECT,INSERT,DELETE,REFERENCES' "
+                    "when 40 then 'UPDATE,REFERENCES' "
+                    "when 41 then 'SELECT,UPDATE,REFERENCES' "
+                    "when 42 then 'INSERT,UPDATE,REFERENCES' "
+                    "when 43 then 'SELECT,INSERT,UPDATE,REFERENCES' "
+                    "when 44 then 'DELETE,UPDATE,REFERENCES' "
+                    "when 45 then 'SELECT,DELETE,UPDATE,REFERENCES' "
+                    "when 46 then 'INSERT,DELETE,UPDATE,REFERENCES' "
+                    "when 47 then 'SELECT,INSERT,DELETE,UPDATE,REFERENCES' 
end) as varchar(128)) PRIVILEGE,"
+                    "cast (trim(case op.GRANTABLE_BITMAP "
+                    "when 0 then 'NO' else 'YES' "
+                    "end) as varchar(128)) IS_GRANTABLE "
+                    "from TRAFODION.\"_PRIVMGR_MD_\".OBJECT_PRIVILEGES as op, 
TRAFODION.\"_MD_\".OBJECTS as ob "
+                    "where ob.OBJECT_UID = op.OBJECT_UID "
+                    "%s"
+                    "and (ob.CATALOG_NAME = '%s' or trim(ob.CATALOG_NAME) LIKE 
'%s' ESCAPE '\\') "
+                    "and (ob.SCHEMA_NAME = '%s' or trim(ob.SCHEMA_NAME) LIKE 
'%s' ESCAPE '\\') "
+                    "and (ob.OBJECT_NAME = '%s' or trim(ob.OBJECT_NAME) LIKE 
'%s' ESCAPE '\\') "
+                    , (strlen(inputParam[4]) == 0 || inputParam[4][0] == '%') 
? " " : "and op.GRANTEE_NAME <> 'DB__ROOT' "
+                    , inputParam[0], inputParam[1]
+                    , inputParam[2], inputParam[3]
+                    , inputParam[4], inputParam[5]
+                    );
             break;
                default :
                        exception_->exception_nr = 
odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_;

Reply via email to