/** * Converts the interval value into a millisecond representation. * * @param interval Interval * @return a long value that represents millisecond equivalent of the * interval value. */ public static long intervalToMillis( SqlIntervalLiteral.IntervalValue interval) { return intervalToMillis( interval.getIntervalLiteral(), interval.getIntervalQualifier()); }
/** * Converts the interval value into a months representation. * * @param interval Interval * @return a long value that represents months equivalent of the interval * value. */ public static long intervalToMonths( SqlIntervalLiteral.IntervalValue interval) { return intervalToMonths( interval.getIntervalLiteral(), interval.getIntervalQualifier()); }
/** * Converts a string to a string with one or two carets in it. For example, * <code>addCarets("values (foo)", 1, 9, 1, 12)</code> yields "values * (^foo^)". */ public static String addCarets( String sql, int line, int col, int endLine, int endCol) { String sqlWithCarets; int cut = lineColToIndex(sql, line, col); sqlWithCarets = sql.substring(0, cut) + "^" + sql.substring(cut); if ((col != endCol) || (line != endLine)) { cut = lineColToIndex(sqlWithCarets, endLine, endCol); ++cut; // for caret if (cut < sqlWithCarets.length()) { sqlWithCarets = sqlWithCarets.substring(0, cut) + "^" + sqlWithCarets.substring(cut); } else { sqlWithCarets += "^"; } } return sqlWithCarets; }
case INTERVAL_DAY_TIME: long millis = SqlParserUtil.intervalToMillis( literal, type.getIntervalQualifier()); case INTERVAL_YEAR_MONTH: long months = SqlParserUtil.intervalToMonths( literal, type.getIntervalQualifier());
jj_consume_token(BINARY_STRING_LITERAL); try { p = SqlParserUtil.trim(token.image, "xX'"); frags = startList(SqlLiteral.createBinaryString(p, getPos())); nfrags++; p = SqlParserUtil.trim(token.image, "'"); // no embedded quotes frags.add(SqlLiteral.createBinaryString(p, getPos())); nfrags++; if (jj_2_212(2)) { jj_consume_token(PREFIXED_STRING_LITERAL); charSet = SqlParserUtil.getCharacterSet(token.image); } else if (jj_2_213(2)) { jj_consume_token(QUOTED_STRING); p = SqlParserUtil.parseString(token.image); SqlCharStringLiteral literal; try { p = SqlParserUtil.parseString(token.image); try { literal = SqlLiteral.createCharString(p, charSet, getPos()); String s = SqlParserUtil.parseString(token.image); unicodeEscapeChar = SqlParserUtil.checkUnicodeEscapeChar(s); } else {
} else if (jj_2_267(2)) { jj_consume_token(QUOTED_IDENTIFIER); id = SqlParserUtil.strip(getToken(0).image, DQ, DQ, DQDQ, quotedCasing); } else if (jj_2_268(2)) { jj_consume_token(BACK_QUOTED_IDENTIFIER); id = SqlParserUtil.strip(getToken(0).image, "`", "`", "``", quotedCasing); } else if (jj_2_269(2)) { jj_consume_token(BRACKET_QUOTED_IDENTIFIER); id = SqlParserUtil.strip(getToken(0).image, "[", "]", "]]", quotedCasing); } else if (jj_2_270(2)) { id = getToken(0).image; id = id.substring(id.indexOf('"')); id = SqlParserUtil.strip(id, DQ, DQ, DQDQ, quotedCasing); if (jj_2_265(2)) { jj_consume_token(UESCAPE); jj_consume_token(QUOTED_STRING); String s = SqlParserUtil.parseString(token.image); unicodeEscapeChar = SqlParserUtil.checkUnicodeEscapeChar(s); } else {
public void checkFails( String sql, String expectedMsgPattern) { SqlParserUtil.StringAndPos sap = SqlParserUtil.findPos(sql); Throwable thrown = null; try { final SqlNode sqlNode = parseStmt(sap.sql); Util.discard(sqlNode); } catch (Throwable ex) { thrown = ex; } SqlValidatorTestCase.checkEx(thrown, expectedMsgPattern, sap); }
int [] seq = ex.expectedTokenSequences[i]; String tokenImage = ex.tokenImage[seq[seq.length - 1]]; String token = SqlParserUtil.getTokenVal(tokenImage); if (token == null || !metadata.isNonReservedKeyword(token)) { list.add(seq);
/** * Creates a Collation by its name and its coercibility * * @param collation Collation specification * @param coercibility Coercibility */ public SqlCollation( String collation, Coercibility coercibility) { this.coercibility = coercibility; SqlParserUtil.ParsedCollation parseValues = SqlParserUtil.parseCollation(collation); Charset charset = parseValues.getCharset(); this.wrappedCharset = SerializableCharset.forCharset(charset); locale = parseValues.getLocale(); strength = parseValues.getStrength(); String c = charset.name().toUpperCase() + "$" + locale.toString(); if ((strength != null) && (strength.length() > 0)) { c += "$" + strength; } collationName = c; }
sql.substring(0, firstCaret) + sql.substring(firstCaret + 1); int[] start = indexToLineCol(sql, firstCaret); SqlParserPos pos = new SqlParserPos(start[0], start[1]); return new StringAndPos(sqlSansCaret, firstCaret, pos); + sql.substring(firstCaret + 1, secondCaret) + sql.substring(secondCaret + 1); int[] start = indexToLineCol(sql, firstCaret); int[] end = indexToLineCol(sql, secondCaret);
case INTERVAL_DAY_TIME: long millis = SqlParserUtil.intervalToMillis( literal, type.getIntervalQualifier()); case INTERVAL_YEAR_MONTH: long months = SqlParserUtil.intervalToMonths( literal, type.getIntervalQualifier());
jj_consume_token(BINARY_STRING_LITERAL); try { p = SqlParserUtil.trim(token.image, "xX'"); frags = startList(SqlLiteral.createBinaryString(p, getPos())); nfrags++; p = SqlParserUtil.trim(token.image, "'"); // no embedded quotes frags.add(SqlLiteral.createBinaryString(p, getPos())); nfrags++; if (jj_2_203(2)) { jj_consume_token(PREFIXED_STRING_LITERAL); charSet = SqlParserUtil.getCharacterSet(token.image); } else if (jj_2_204(2)) { jj_consume_token(QUOTED_STRING); p = SqlParserUtil.parseString(token.image); SqlCharStringLiteral literal; try { p = SqlParserUtil.parseString(token.image); try { literal = SqlLiteral.createCharString(p, charSet, getPos()); String s = SqlParserUtil.parseString(token.image); unicodeEscapeChar = SqlParserUtil.checkUnicodeEscapeChar(s); } else {
} else if (jj_2_258(2)) { jj_consume_token(QUOTED_IDENTIFIER); id = SqlParserUtil.strip(getToken(0).image, DOUBLE_QUOTE + ""); } else if (jj_2_259(2)) { jj_consume_token(UNICODE_QUOTED_IDENTIFIER); id = getToken(0).image; id = id.substring(id.indexOf(DOUBLE_QUOTE)); id = SqlParserUtil.strip(id, DOUBLE_QUOTE + ""); if (jj_2_256(2)) { jj_consume_token(UESCAPE); jj_consume_token(QUOTED_STRING); String s = SqlParserUtil.parseString(token.image); unicodeEscapeChar = SqlParserUtil.checkUnicodeEscapeChar(s); } else {
public void checkFails( String sql, String expectedMsgPattern) { SqlParserUtil.StringAndPos sap = SqlParserUtil.findPos(sql); Throwable thrown = null; try { final SqlNode sqlNode = parseStmt(sap.sql); Util.discard(sqlNode); } catch (Throwable ex) { thrown = ex; } SqlValidatorTestCase.checkEx(thrown, expectedMsgPattern, sap); }
int [] seq = ex.expectedTokenSequences[i]; String tokenImage = ex.tokenImage[seq[seq.length - 1]]; String token = SqlParserUtil.getTokenVal(tokenImage); if (token == null || !metadata.isNonReservedKeyword(token)) { list.add(seq);
/** * Creates a Collation by its name and its coercibility * * @param collation Collation specification * @param coercibility Coercibility */ public SqlCollation( String collation, Coercibility coercibility) { this.coercibility = coercibility; SqlParserUtil.ParsedCollation parseValues = SqlParserUtil.parseCollation(collation); Charset charset = parseValues.getCharset(); this.wrappedCharset = SerializableCharset.forCharset(charset); locale = parseValues.getLocale(); strength = parseValues.getStrength(); String c = charset.name().toUpperCase() + "$" + locale.toString(); if ((strength != null) && (strength.length() > 0)) { c += ("$" + strength); } collationName = c; }
sql.substring(0, firstCaret) + sql.substring(firstCaret + 1); int [] start = indexToLineCol(sql, firstCaret); SqlParserPos pos = new SqlParserPos(start[0], start[1]); return new StringAndPos(sqlSansCaret, firstCaret, pos); + sql.substring(firstCaret + 1, secondCaret) + sql.substring(secondCaret + 1); int [] start = indexToLineCol(sql, firstCaret); int [] end = indexToLineCol(sql, secondCaret);
public void checkIntervalConv(String sql, String expected) { SqlValidator validator = getValidator(); final SqlCall n = (SqlCall) parseAndValidate(validator, sql); SqlNode node = null; for (int i = 0; i < n.getOperands().length; i++) { node = n.getOperands()[i]; if (node instanceof SqlCall) { if (node.getKind() == SqlKind.AS) { node = ((SqlCall) node).operands[0]; } node = ((SqlCall) node).getOperands()[0]; break; } } SqlIntervalLiteral.IntervalValue interval = (SqlIntervalLiteral.IntervalValue) ((SqlIntervalLiteral) node) .getValue(); long l = interval.getIntervalQualifier().isYearMonth() ? SqlParserUtil.intervalToMonths(interval) : SqlParserUtil.intervalToMillis(interval); String actual = l + ""; assertEquals(expected, actual); }