|
23 | 23 | import static org.junit.Assert.assertNotEquals;
|
24 | 24 | import static org.junit.Assert.assertNull;
|
25 | 25 | import static org.junit.Assert.assertTrue;
|
| 26 | +import static org.junit.Assume.assumeTrue; |
26 | 27 |
|
27 | 28 | import com.google.cloud.spanner.Dialect;
|
28 | 29 | import org.junit.Test;
|
@@ -221,4 +222,29 @@ public void testEatSingleQuotedStringAdvancesPosition() {
|
221 | 222 | assertEquals(NOT_FOUND, parser.eatSingleQuotedString());
|
222 | 223 | assertEquals(parser.getSql().length(), parser.getPos());
|
223 | 224 | }
|
| 225 | + |
| 226 | + @Test |
| 227 | + public void testSkipHint() { |
| 228 | + assumeTrue("Hints in PostgreSQL are comments", dialect == Dialect.GOOGLE_STANDARD_SQL); |
| 229 | + |
| 230 | + assertEquals("SELECT 1", skipHint("SELECT 1")); |
| 231 | + assertEquals("SELECT 1", skipHint("@{rpc_priority=HIGH}SELECT 1")); |
| 232 | + assertEquals("SELECT 1", skipHint("@{statement_tag='test'}SELECT 1")); |
| 233 | + assertEquals(" \nSELECT 1", skipHint(" @{statement_tag = 'test'} \nSELECT 1")); |
| 234 | + assertEquals( |
| 235 | + " /* comment after */ SELECT 1", |
| 236 | + skipHint("/* comment before */ @{statement_tag='test'} /* comment after */ SELECT 1")); |
| 237 | + assertEquals( |
| 238 | + " -- comment after\nSELECT 1", |
| 239 | + skipHint("-- comment before\n @{statement_tag='test'} -- comment after\nSELECT 1")); |
| 240 | + assertEquals( |
| 241 | + "-- comment @{statement_tag='test'}\n -- also a comment\nSELECT 1", |
| 242 | + skipHint("-- comment @{statement_tag='test'}\n -- also a comment\nSELECT 1")); |
| 243 | + } |
| 244 | + |
| 245 | + static String skipHint(String sql) { |
| 246 | + SimpleParser parser = new SimpleParser(Dialect.GOOGLE_STANDARD_SQL, sql); |
| 247 | + parser.skipHint(); |
| 248 | + return parser.getSql().substring(parser.getPos()); |
| 249 | + } |
224 | 250 | }
|
0 commit comments