@Override public ParsedSql parse(String sql, StatementContext ctx) { return ParsedSql.builder().append(sql).build(); }
@Test public void testEscapedQuestionMark() { String sql = "SELECT '{\"a\":1, \"b\":2}'::jsonb ?? :key"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed).isEqualTo(ParsedSql.builder() .append("SELECT '{\"a\":1, \"b\":2}'::jsonb ?? ") .appendNamedParameter("key") .build()); } }
@Test public void testEscapedQuestionMark() { String sql = "SELECT '{\"a\":1, \"b\":2}'::jsonb ?? #key"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed).isEqualTo(ParsedSql.builder() .append("SELECT '{\"a\":1, \"b\":2}'::jsonb ?? ") .appendNamedParameter("key") .build()); } }
@Test public void testBuilderWithNamedParameters() { final List<String> names = Arrays.asList("a", "b", "c"); final ParsedSql parsedSql = ParsedSql.builder() .append("insert into test (a, b, c) values (") .appendNamedParameter(names.get(0)) .append(", ") .appendNamedParameter(names.get(1)) .append(", ") .appendNamedParameter(names.get(2)) .append(")") .build(); assertThat(parsedSql).isNotNull(); assertThat(parsedSql.getSql()).isEqualTo("insert into test (a, b, c) values (?, ?, ?)"); assertThat(parsedSql.getParameters().isPositional()).isFalse(); assertThat(parsedSql.getParameters().getParameterNames()).containsExactly("a", "b", "c"); }
@Test public void testBuilderWithPositionalParameters() { final ParsedSql parsedSql = ParsedSql.builder() .append("insert into test (a, b, c) values (") .appendPositionalParameter() .append(", ") .appendPositionalParameter() .append(", ") .appendPositionalParameter() .append(")") .build(); assertThat(parsedSql).isNotNull(); assertThat(parsedSql.getSql()).isEqualTo("insert into test (a, b, c) values (?, ?, ?)"); assertThat(parsedSql.getParameters().isPositional()).isTrue(); assertThat(parsedSql.getParameters().getParameterNames()).containsOnly("?"); } }
private ParsedSql internalParse(final String sql) { ParsedSql.Builder parsedSql = ParsedSql.builder(); HashStatementLexer lexer = new HashStatementLexer(new ANTLRStringStream(sql)); Token t = lexer.nextToken(); while (t.getType() != EOF) { switch (t.getType()) { case COMMENT: case LITERAL: case QUOTED_TEXT: case DOUBLE_QUOTED_TEXT: parsedSql.append(t.getText()); break; case NAMED_PARAM: parsedSql.appendNamedParameter(t.getText().substring(1)); break; case POSITIONAL_PARAM: parsedSql.appendPositionalParameter(); break; case ESCAPED_TEXT: parsedSql.append(t.getText().substring(1)); break; default: break; } t = lexer.nextToken(); } return parsedSql.build(); } }
private ParsedSql internalParse(String sql) throws IllegalArgumentException { ParsedSql.Builder parsedSql = ParsedSql.builder(); ColonStatementLexer lexer = new ColonStatementLexer(new ANTLRStringStream(sql)); Token t = lexer.nextToken(); while (t.getType() != EOF) { switch (t.getType()) { case COMMENT: case LITERAL: case QUOTED_TEXT: case DOUBLE_QUOTED_TEXT: parsedSql.append(t.getText()); break; case NAMED_PARAM: parsedSql.appendNamedParameter(t.getText().substring(1)); break; case POSITIONAL_PARAM: parsedSql.appendPositionalParameter(); break; case ESCAPED_TEXT: parsedSql.append(t.getText().substring(1)); break; default: break; } t = lexer.nextToken(); } return parsedSql.build(); } }
@Override public ParsedSql parse(String sql, StatementContext ctx) { return ParsedSql.builder().append(sql).build(); }
@Override public ParsedSql parse(String sql, StatementContext ctx) { return ParsedSql.builder().append(sql).build(); }
private ParsedSql internalParse(String sql) throws IllegalArgumentException { ParsedSql.Builder parsedSql = ParsedSql.builder(); ColonStatementLexer lexer = new ColonStatementLexer(new ANTLRStringStream(sql)); Token t = lexer.nextToken(); while (t.getType() != EOF) { switch (t.getType()) { case COMMENT: case LITERAL: case QUOTED_TEXT: case DOUBLE_QUOTED_TEXT: parsedSql.append(t.getText()); break; case NAMED_PARAM: parsedSql.appendNamedParameter(t.getText().substring(1)); break; case POSITIONAL_PARAM: parsedSql.appendPositionalParameter(); break; case ESCAPED_TEXT: parsedSql.append(t.getText().substring(1)); break; default: break; } t = lexer.nextToken(); } return parsedSql.build(); } }
private ParsedSql internalParse(final String sql) { ParsedSql.Builder parsedSql = ParsedSql.builder(); HashStatementLexer lexer = new HashStatementLexer(new ANTLRStringStream(sql)); Token t = lexer.nextToken(); while (t.getType() != EOF) { switch (t.getType()) { case COMMENT: case LITERAL: case QUOTED_TEXT: case DOUBLE_QUOTED_TEXT: parsedSql.append(t.getText()); break; case NAMED_PARAM: parsedSql.appendNamedParameter(t.getText().substring(1)); break; case POSITIONAL_PARAM: parsedSql.appendPositionalParameter(); break; case ESCAPED_TEXT: parsedSql.append(t.getText().substring(1)); break; default: break; } t = lexer.nextToken(); } return parsedSql.build(); } }