@Test public void testBailsOutOnInvalidInput() { assertThatThrownBy(() -> parser.parse("select * from something\n where id = #\u0087\u008e\u0092\u0097\u009c", ctx)) .isInstanceOf(UnableToCreateStatementException.class); }
@Test public void testDollarSignOkay() { ParsedSql parsed = parser.parse("select * from v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from v$session"); }
@Test public void testColonIsLiteral() { ParsedSql parsed = parser.parse("select * from foo where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from foo where id = :id"); }
@Test public void testCommentQuote() { String sql = "select 1 /* ' \" <foo> */"; assertThat(parser.parse(sql, ctx).getSql()).isEqualTo(sql); }
@Test public void testSubstitutesDefinedAttributes() { String sql = "select foo from bar where foo = #someValue"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed.getSql()).isEqualTo("select foo from bar where foo = ?"); }
@Test public void testNewlinesOkay() { ParsedSql parsed = parser.parse("select * from something\n where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from something\n where id = ?"); }
@Test public void testBacktickOkay() { ParsedSql parsed = parser.parse("select * from `v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from `v$session"); }
@Test public void testOddCharacters() { ParsedSql parsed = parser.parse("~* #boo '#nope' _%&^& *@ #id", ctx); assertThat(parsed.getSql()).isEqualTo("~* ? '#nope' _%&^& *@ ?"); }
@Test public void testOddCharacters() { ParsedSql parsed = parser.parse("~* :boo ':nope' _%&^& *@ :id", ctx); assertThat(parsed.getSql()).isEqualTo("~* ? ':nope' _%&^& *@ ?"); }
@Test public void testNumbers() { ParsedSql parsed = parser.parse(":bo0 ':nope' _%&^& *@ :id", ctx); assertThat(parsed.getSql()).isEqualTo("? ':nope' _%&^& *@ ?"); }
@Test public void testBailsOutOnInvalidInput() { assertThatThrownBy(() -> parser.parse("select * from something\n where id = :\u0087\u008e\u0092\u0097\u009c", ctx).getSql()) .isInstanceOf(UnableToCreateStatementException.class); }
@Test public void testNumbers() { ParsedSql parsed = parser.parse("#bo0 '#nope' _%&^& *@ #id", ctx); assertThat(parsed.getSql()).isEqualTo("? '#nope' _%&^& *@ ?"); }
@Test public void testHashInColumnNameOkay() { ParsedSql parsed = parser.parse("select column# from thetable where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select column# from thetable where id = ?"); }
@Test public void testDoubleColon() { final String doubleColon = "select 1::int"; ParsedSql parsed = parser.parse(doubleColon, ctx); assertThat(parsed.getSql()).isEqualTo(doubleColon); }
@Test public void testNewlinesOkay() { ParsedSql parsed = parser.parse("select * from something\n where id = #id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from something\n where id = ?"); }
@Test public void testDollarSignOkay() { ParsedSql parsed = parser.parse("select * from v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from v$session"); }
@Test public void testSubstitutesDefinedAttributes() { String sql = "select foo from bar where foo = :someValue"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed.getSql()).isEqualTo("select foo from bar where foo = ?"); }
@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()); } }