@@ -317,7 +317,7 @@ public void testIsQuery() {
317317 }
318318
319319 @ Test
320- public void testQueryHints () {
320+ public void testIsQuery_QueryHints () {
321321 // Valid query hints.
322322 assertTrue (parser .isQuery ("@{JOIN_METHOD=HASH_JOIN} SELECT * FROM PersonsTable" ));
323323 assertTrue (parser .isQuery ("@ {JOIN_METHOD=HASH_JOIN} SELECT * FROM PersonsTable" ));
@@ -358,9 +358,51 @@ public void testQueryHints() {
358358 assertFalse (parser .isQuery ("@{JOIN_METHOD=HASH_JOIN SELECT * FROM PersonsTable" ));
359359 assertFalse (parser .isQuery ("@JOIN_METHOD=HASH_JOIN} SELECT * FROM PersonsTable" ));
360360 assertFalse (parser .isQuery ("@JOIN_METHOD=HASH_JOIN SELECT * FROM PersonsTable" ));
361+ }
362+
363+ @ Test
364+ public void testIsUpdate_QueryHints () {
365+ // Valid query hints.
366+ assertTrue (
367+ parser .isUpdateStatement (
368+ "@{LOCK_SCANNED_RANGES=exclusive} UPDATE FOO SET NAME='foo' WHERE ID=1" ));
369+ assertTrue (
370+ parser .isUpdateStatement (
371+ "@ {LOCK_SCANNED_RANGES=exclusive} UPDATE FOO SET NAME='foo' WHERE ID=1" ));
372+ assertTrue (
373+ parser .isUpdateStatement (
374+ "@{ LOCK_SCANNED_RANGES=exclusive} UPDATE FOO SET NAME='foo' WHERE ID=1" ));
375+ assertTrue (
376+ parser .isUpdateStatement (
377+ "@{LOCK_SCANNED_RANGES=exclusive } UPDATE FOO SET NAME='foo' WHERE ID=1" ));
378+ assertTrue (
379+ parser .isUpdateStatement (
380+ "@{LOCK_SCANNED_RANGES=exclusive}\n UPDATE FOO SET NAME='foo' WHERE ID=1" ));
381+ assertTrue (
382+ parser .isUpdateStatement (
383+ "@{\n LOCK_SCANNED_RANGES = exclusive \t }\n \t UPDATE FOO SET NAME='foo' WHERE ID=1" ));
384+ assertTrue (
385+ parser .isUpdateStatement (
386+ "@{LOCK_SCANNED_RANGES=exclusive}\n -- Single line comment\n UPDATE FOO SET NAME='foo' WHERE ID=1" ));
387+ assertTrue (
388+ parser .isUpdateStatement (
389+ "@{LOCK_SCANNED_RANGES=exclusive}\n /* Multi line comment\n with more comments\n */UPDATE FOO SET NAME='foo' WHERE ID=1" ));
390+
391+ // Multiple query hints.
392+ assertTrue (
393+ StatementParser .INSTANCE .isUpdateStatement (
394+ "@{LOCK_SCANNED_RANGES=exclusive} @{USE_ADDITIONAL_PARALLELISM=TRUE} UPDATE FOO SET NAME='foo' WHERE ID=1" ));
395+
396+ // Invalid query hints.
361397 assertFalse (
362- StatementParser .INSTANCE .isQuery (
363- "@{FORCE_INDEX=index_name} @{JOIN_METHOD=HASH_JOIN} UPDATE tbl set FOO=1 WHERE ID=2" ));
398+ parser .isUpdateStatement (
399+ "@{LOCK_SCANNED_RANGES=exclusive UPDATE FOO SET NAME='foo' WHERE ID=1" ));
400+ assertFalse (
401+ parser .isUpdateStatement (
402+ "@LOCK_SCANNED_RANGES=exclusive} UPDATE FOO SET NAME='foo' WHERE ID=1" ));
403+ assertFalse (
404+ parser .isUpdateStatement (
405+ "@LOCK_SCANNED_RANGES=exclusive UPDATE FOO SET NAME='foo' WHERE ID=1" ));
364406 }
365407
366408 @ Test
0 commit comments