Github user robertamarton commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1721#discussion_r225014733
--- 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;
+ }
+
+ }
+
+
+ }
+ else
+ {
+ 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 += "/"+ NAString("DB__ROOT") ;
+ if (stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRWXU|S_IRWXG|S_IRWXO)) // these
permissions
+ //need to change when we have isolated user support so only
DB_ROOT
+ //can access this directory. Right now we allow all to access
this directory
+ {
+ return -1;
+ }
+
+ }
+ cachedLibPath += "/" + schemaName;
+ if ( stat(cachedLibPath, &statbuf) != 0)
+ {
+ if (mkdir(cachedLibPath,S_IRWXU|S_IRWXG|S_IRWXO))
+ {
+ return -1;
+ }
+
+ }
+
+ }
+
+
+
+ cachedLibName += libPrefix + "_" ;
+ cachedLibName += redefTimeString;
+ cachedLibName += libSuffix ;
--- End diff --
If the passed in name does not contain a suffix (lastDot is NA_NPOS)?
Should that we an error - illformed name or internal error?
---