Github user zellerh commented on a diff in the pull request:

    https://github.com/apache/incubator-trafodion/pull/618#discussion_r72117627
  
    --- Diff: core/sql/optimizer/NATable.cpp ---
    @@ -3676,6 +3676,54 @@ NAType* getSQColTypeForHive(const char* hiveType, 
NAMemory* heap)
                                        CharInfo::IMPLICIT);
       } 
     
    +  if ( !strncmp(hiveType, "decimal", 7) )
    +  {
    +    Int16 i=0, pstart=0, pend=0, sstart=0, send=0, p=0, s = 0;
    +    Int16 hiveTypeLen = strlen(hiveType);
    +    char pstr[16], sstr[16];
    +    memset(pstr,0,sizeof(pstr));
    +    memset(sstr,0,sizeof(sstr));
    +
    +    for( i = 0; i < hiveTypeLen; i++ )
    +    {
    +      if(hiveType[i] == '(' )
    +      {
    +        pstart = i+1;
    +      }
    +      else if(hiveType[i] == ',')
    +      {
    +        pend = i;
    +        sstart = i+1;
    +      }
    +      else if(hiveType[i] == ')')
    +      {
    +        send = i;
    +      }
    +      else
    +       continue;
    +    }
    +    if(pend - pstart > 0)
    +    {
    +      strncpy(pstr,hiveType+pstart, pend-pstart);
    --- End diff --
    
    General question, this is machine-generated code, so we probably don't have 
to check for errors the same way as if this would be human-generated input? If 
we want to do a complete check, then maybe also check for syntax like 
decimal-extra-chars(6,0). The above check pointed out by Suresh is still 
needed, since we should always check for buffer overruns.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to