Github user robertamarton commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1721#discussion_r225014714
--- Diff: core/sql/common/ComMisc.cpp ---
@@ -357,3 +358,119 @@ NABoolean ComTrafReservedColName(
return FALSE;
}
+
+
+Int32 ComGenerateUdrCachedLibName(NAString libname,Int64 redeftime,
NAString schemaName, NAString userid, NAString &cachedLibName, NAString
&cachedLibPath)
+{
+ NAString libPrefix, libSuffix;
+ struct stat statbuf;
+ NAString redefTimeString = Int64ToNAString(redeftime);
+ size_t lastDot = libname.last('.');
+ if (lastDot != NA_NPOS)
+ {
+ libSuffix = libname(lastDot,libname.length()-lastDot);
+ libPrefix = libname(0,lastDot);
+ }
+
+ //when isolated user support is added
+ if (userid.length()!=0)
+ {
+
+ cachedLibPath = getenv("TRAF_HOME") ;
+ cachedLibPath += "/udr";
+ if ( stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRWXU|S_IRWXG|S_IRWXO))
+ {
+ return -1;
+ }
+
+ }
+ cachedLibPath += "/";
+ cachedLibPath += getenv("MY_UDR_CACHE_LIBDIR");
+ if ( stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRWXU|S_IRWXG|S_IRWXO))
+ {
+ return -1;
+ }
+
+ }
+ cachedLibPath += "/"+ userid ;
+ if (stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRUSR|S_IWUSR|S_IXUSR))//Only this
user has
+ //permission to read/write/execute in this directory and below.
+ {
+ return -1;
+ }
+
+ }
+ cachedLibPath += "/" + schemaName;
+ if ( stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRWXU|S_IRWXG|S_IRWXO))
+ {
+ return -1;
--- End diff --
Is it possible to retrieve the actually error on why mkdir failed? If so,
we could return this and make error 4316 more meaningful. Could return an
additional parameter that returns error details, for example: Error occurred
while extracting library to local cache : unable to mkdir <directory name>,
error xx
---