Skip to content

Commit 47a4869

Browse files
committed
fix: update db2 select grammar as per doc
update db2 select grammar as per https://www.ibm.com/docs/en/db2/11.5?topic=queries-select-statement Signed-off-by: Aman Prashant <[email protected]>
1 parent 222d558 commit 47a4869

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

server/engine/src/main/antlr4/org/eclipse/lsp/cobol/core/parser/Db2SqlParser.g4

+8-4
Original file line numberDiff line numberDiff line change
@@ -881,15 +881,19 @@ dbs_savepoint: SAVEPOINT dbs_savepoint_name UNIQUE? ON ROLLBACK RETAIN (CURSORS
881881

882882

883883
dbs_select: dbs_select_unpack_function_invocation | (WITH common_table_expression_loop)? dbs_fullselect
884-
(dbs_select_update
884+
( dbs_select_update
885885
| dbs_select_readOnly
886886
| dbs_select_optimize
887887
| dbs_select_statement_isolation_clause
888-
| (QUERYNO dbs_integer)
889-
| (SKIPCHAR LOCKED DATA))*;
888+
| dbs_concurrent_access_resolution_clause
889+
| dbs_offset_clause
890+
| dbs_fetch_clause
891+
| dbs_lock_req_clause )*;
890892
dbs_select_update: FOR UPDATE (OF dbs_column_name (dbs_comma_separator dbs_column_name)*)? ;
891-
dbs_select_readOnly: FOR READ ONLY;
893+
dbs_select_readOnly: FOR (READ | FETCH) ONLY;
892894
dbs_select_optimize:OPTIMIZE FOR dbs_integer (ROWS | ROW);
895+
dbs_concurrent_access_resolution_clause: (WAIT FOR OUTCOME) | (SKIPCHAR LOCKED DATA) ;
896+
dbs_lock_req_clause: USE AND KEEP (SHARE| UPDATE | EXCLUSIVE) LOCKS;
893897
/*Queries Subselects (all)*/
894898
dbs_select_unpack_function_invocation: UNPACK LPARENCHAR dbs_expression RPARENCHAR DOT_FS ASTERISKCHAR AS LPARENCHAR dbs_field_name db2sql_data_types (dbs_comma_separator dbs_field_name db2sql_data_types)* RPARENCHAR;
895899
dbs_select_row_fullselect: (NONNUMERICLITERAL | NUMERICLITERAL)+ ;

server/engine/src/test/java/org/eclipse/lsp/cobol/usecases/TestSqlSelectStatement.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,16 @@ class TestSqlSelectStatement {
139139
+ " FROM SYSIBM.SYSDUMMY1 00095700\n"
140140
+ " END-EXEC. 00095800";
141141

142+
private static final String SELECT14 =
143+
TEXT
144+
+ " DECLARE C1 CURSOR FOR \n"
145+
+ " SELECT * FROM RMTTAB\n"
146+
+ " FOR FETCH ONLY \n"
147+
+ " END-EXEC.\n";
148+
142149
private static Stream<String> textsToTest() {
143150
return Stream.of(SELECT, SELECT2, SELECT3, SELECT4, SELECT5, SELECT6, SELECT7, SELECT8, SELECT9, SELECT10,
144-
SELECT11, SELECT12, SELECT13);
151+
SELECT11, SELECT12, SELECT13, SELECT14);
145152
}
146153

147154
@ParameterizedTest

0 commit comments

Comments
 (0)