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?


---

Reply via email to