private void setQueryHints(QB qb) throws SemanticException { QBParseInfo qbp = getQBParseInfo(qb); String selClauseName = qbp.getClauseNames().iterator().next(); Tree selExpr0 = qbp.getSelForClause(selClauseName).getChild(0); if (selExpr0.getType() != HiveParser.QUERY_HINT) return; String hint = ctx.getTokenRewriteStream().toString( selExpr0.getTokenStartIndex(), selExpr0.getTokenStopIndex()); LOG.debug("Handling query hints: " + hint); ParseDriver pd = new ParseDriver(); try { ASTNode hintNode = pd.parseHint(hint); qbp.setHints(hintNode); } catch (ParseException e) { throw new SemanticException("failed to parse query hint: "+e.getMessage(), e); } }
@Override public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
@Override public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
@Override public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
@Override public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
@Override public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
public int getTokenStopIndex(Object t) { if ( t==null ) return -1; return ((Tree)t).getTokenStopIndex(); }
String hint = ctx.getTokenRewriteStream().toString( selExprList.getChild(0).getTokenStartIndex(), selExprList.getChild(0).getTokenStopIndex()); String msg = String.format("Hint specified for %s." + " Currently we don't support hints in CBO, turn off cbo to use hints.", hint);