/** * Get the parser metadata. * * @return {@link SqlAbstractParserImpl.Metadata} implementation of * underlying parser. */ public SqlAbstractParserImpl.Metadata getMetadata() { return parser.getMetadata(); } }
/** * Parses an SQL statement. * * @return top-level SqlNode representing stmt * @throws SqlParseException if there is a parse error */ public SqlNode parseStmt() throws SqlParseException { try { return parser.parseSqlStmtEof(); } catch (Throwable ex) { if ((ex instanceof EigenbaseContextException) && (originalInput != null)) { ((EigenbaseContextException) ex).setOriginalStatement( originalInput); } throw parser.normalizeException(ex); } }
/** * Parses a SQL expression. * * @throws SqlParseException if there is a parse error */ public SqlNode parseExpression() throws SqlParseException { try { return parser.parseSqlExpressionEof(); } catch (Throwable ex) { if ((ex instanceof EigenbaseContextException) && (originalInput != null)) { ((EigenbaseContextException) ex).setOriginalStatement( originalInput); } throw parser.normalizeException(ex); } }
private SqlParser(String s, SqlAbstractParserImpl parser, Quoting quoting, Casing unquotedCasing, Casing quotedCasing) { this.originalInput = s; this.parser = parser; parser.setTabSize(1); parser.setQuotedCasing(quotedCasing); parser.setUnquotedCasing(unquotedCasing); switch (quoting) { case DOUBLE_QUOTE: parser.switchTo("DQID"); break; case BACK_TICK: parser.switchTo("BTID"); break; case BRACKET: parser.switchTo("DEFAULT"); break; } }
/** * Return an array of SQL reserved and keywords * * @return an of SQL reserved and keywords */ public List<String> getReservedAndKeyWords() { Collection<String> c = SqlAbstractParserImpl.getSql92ReservedWords(); List<String> l = Arrays.asList( getParserImpl().getMetadata().getJdbcKeywords().split(",")); List<String> al = new ArrayList<String>(); al.addAll(c); al.addAll(l); return al; }
/** * Uses reflection to invoke a method on this parser. The method must be * public and have no parameters. * * @param parserImpl Parser * @param name Name of method. For example "ReservedFunctionName". * @return Result of calling method */ private Object virtualCall( SqlAbstractParserImpl parserImpl, String name) throws Throwable { Class<?> clazz = parserImpl.getClass(); try { final Method method = clazz.getMethod(name, (Class[]) null); return method.invoke(parserImpl, (Object[]) null); } catch (NoSuchMethodException e) { throw Util.newInternal(e); } catch (IllegalAccessException e) { throw Util.newInternal(e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); throw parserImpl.normalizeException(cause); } }
Set<String> keywords, String name) { parserImpl.ReInit(new StringReader("1")); try { Object o = virtualCall(parserImpl, name);
/** * Return an array of SQL reserved and keywords * * @return an of SQL reserved and keywords */ public List<String> getReservedAndKeyWords() { Collection<String> c = SqlAbstractParserImpl.getSql92ReservedWords(); List<String> l = Arrays.asList( getParserMetadata().getJdbcKeywords().split(",")); List<String> al = new ArrayList<String>(); al.addAll(c); al.addAll(l); return al; }
/** * Uses reflection to invoke a method on this parser. The method must be * public and have no parameters. * * @param parserImpl Parser * @param name Name of method. For example "ReservedFunctionName". * * @return Result of calling method */ private Object virtualCall( SqlAbstractParserImpl parserImpl, String name) throws Throwable { Class<?> clazz = parserImpl.getClass(); try { final Method method = clazz.getMethod(name, (Class []) null); return method.invoke(parserImpl, (Object []) null); } catch (NoSuchMethodException e) { throw Util.newInternal(e); } catch (IllegalAccessException e) { throw Util.newInternal(e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); throw parserImpl.normalizeException(cause); } }
String name) parserImpl.ReInit(new StringReader("1")); try { Object o = virtualCall(parserImpl, name);
/** * Parses a <code>SELECT</code> statement. * * @return A {@link org.eigenbase.sql.SqlSelect} for a regular <code> * SELECT</code> statement; a {@link org.eigenbase.sql.SqlBinaryOperator} * for a <code>UNION</code>, <code>INTERSECT</code>, or <code>EXCEPT</code>. * @throws SqlParseException if there is a parse error */ public SqlNode parseQuery() throws SqlParseException { try { return parser.parseSqlStmtEof(); } catch (Throwable ex) { if ((ex instanceof EigenbaseContextException) && (originalInput != null)) { ((EigenbaseContextException) ex).setOriginalStatement( originalInput); } throw parser.normalizeException(ex); } }