Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.sql.planner;
 
 
 import java.util.Map;
 
 import static java.util.Locale.ENGLISH;
 
 public class SymbolAllocator
 {
     private final Map<SymbolTypesymbols = new HashMap<>();
     private int nextId;
 
     public Symbol newSymbol(String nameHintType type)
     {
         return newSymbol(nameHinttypenull);
     }
 
     public Symbol newHashSymbol()
     {
         return newSymbol("$hashValue".);
     }
 
     public Symbol newSymbol(String nameHintType typeString suffix)
     {
         Preconditions.checkNotNull(nameHint"name is null");
 
         // TODO: workaround for the fact that QualifiedName lowercases parts
         nameHint = nameHint.toLowerCase();
 
         // don't strip the tail if the only _ is the first character
         int index = nameHint.lastIndexOf("_");
         if (index > 0) {
             String tail = nameHint.substring(index + 1);
 
             // only strip if tail is numeric or _ is the last character
             if (Ints.tryParse(tail) != null || index == nameHint.length() - 1) {
                 nameHint = nameHint.substring(0, index);
             }
         }
 
         String unique = nameHint;
 
         if (suffix != null) {
             unique = unique + "$" + suffix;
         }
 
         String attempt = unique;
         while (.containsKey(new Symbol(attempt))) {
             attempt = unique + "_" + nextId();
         }
 
         Symbol symbol = new Symbol(attempt);
         .put(symboltype);
         return symbol;
     }
 
     public Symbol newSymbol(Expression expressionType type)
     {
         return newSymbol(expressiontypenull);
     }
 
     public Symbol newSymbol(Expression expressionType typeString suffix)
     {
         String nameHint = "expr";
         if (expression instanceof QualifiedNameReference) {
             nameHint = ((QualifiedNameReferenceexpression).getName().getSuffix();
         }
         else if (expression instanceof FunctionCall) {
             nameHint = ((FunctionCallexpression).getName().getSuffix();
         }
 
         return newSymbol(nameHinttypesuffix);
     }
 
     public Symbol newSymbol(Field field)
     {
         String nameHint = field.getName().orElse("field");
        return newSymbol(nameHintfield.getType());
    }
    public Map<SymbolTypegetTypes()
    {
        return ;
    }
    private int nextId()
    {
        return ++;
    }
New to GrepCode? Check out our FAQ X