Skip to content

Commit 3f88299

Browse files
committed
fix: update db2 select grammar as per doc
update as per doc https://www.ibm.com/docs/en/db2-for-zos/13?topic=queries-select-statement Signed-off-by: Aman Prashant <[email protected]>
1 parent f675664 commit 3f88299

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ dbs_select: dbs_select_unpack_function_invocation | (WITH common_table_expressio
888888
| (QUERYNO dbs_integer)
889889
| (SKIPCHAR LOCKED DATA))*;
890890
dbs_select_update: FOR UPDATE (OF dbs_column_name (dbs_comma_separator dbs_column_name)*)? ;
891-
dbs_select_readOnly: FOR READ ONLY;
891+
dbs_select_readOnly: FOR (READ | FETCH) ONLY;
892892
dbs_select_optimize:OPTIMIZE FOR dbs_integer (ROWS | ROW);
893893
/*Queries Subselects (all)*/
894894
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;
@@ -1285,7 +1285,7 @@ dbs_select_into: (WITH common_table_expression_loop)? dbs_select_clause INTO (t
12851285
common_table_expression_loop: dbs_select_statement_common_table_expression (dbs_comma_separator dbs_select_statement_common_table_expression)*;
12861286
target_variable_names_loop: target_variable_names_opts (dbs_comma_separator target_variable_names_opts)*;
12871287
target_variable_names_opts: dbs_global_variable_name | dbs_host_variable | dbs_sql_parameter_name | dbs_sql_variable_name | dbs_transition_variable_name;
1288-
dbs_select_statement_common_table_expression: dbs_sql_identifier LPARENCHAR dbs_sql_identifier (dbs_comma_separator dbs_sql_identifier)* RPARENCHAR AS dbs_fullselect;
1288+
dbs_select_statement_common_table_expression: dbs_sql_identifier (LPARENCHAR dbs_sql_identifier (dbs_comma_separator dbs_sql_identifier)* RPARENCHAR)? AS dbs_fullselect;
12891289
dbs_select_statement_isolation_clause: WITH (RR dbs_select_statement_isolation_clause_lock_clause | RS dbs_select_statement_isolation_clause_lock_clause | CS | UR );
12901290
dbs_select_statement_isolation_clause_lock_clause: USE AND KEEP (EXCLUSIVE | UPDATE | SHARE) LOCKS;
12911291
dbs_select_statement_queryno_clause: QUERYNO dbs_integer;

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

+31-2
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,38 @@ 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+
149+
private static final String SELECT15 =
150+
TEXT
151+
+ " WITH T1 AS\n"
152+
+ " (\n"
153+
+ " SELECT CARD AS PAN\n"
154+
+ " ,CVV AS CVV2\n"
155+
+ " ,Y1 AS W1\n"
156+
+ " ,Y2 AS W2\n"
157+
+ " FROM TABLEY\n"
158+
+ " )\n"
159+
+ " SELECT 'Y'\n"
160+
+ " INTO :{$WS-D-DEB}\n"
161+
+ " FROM TABLEY\n"
162+
+ " INNER JOIN T1 ON\n"
163+
+ " TABLEY.Y1 = T1.W1\n"
164+
+ " AND TABLEY.Y2 = T1.W2\n"
165+
+ " WHERE 1 = 1\n"
166+
+ " FETCH FIRST 1 ROW ONLY\n"
167+
+ " WITH UR\n"
168+
+ " END-EXEC.\n";
169+
142170
private static Stream<String> textsToTest() {
143-
return Stream.of(SELECT, SELECT2, SELECT3, SELECT4, SELECT5, SELECT6, SELECT7, SELECT8, SELECT9, SELECT10,
144-
SELECT11, SELECT12, SELECT13);
171+
return Stream.of(
172+
SELECT, SELECT2, SELECT3, SELECT4, SELECT5, SELECT6, SELECT7, SELECT8, SELECT9, SELECT10,
173+
SELECT11, SELECT12, SELECT13, SELECT14, SELECT15);
145174
}
146175

147176
@ParameterizedTest

0 commit comments

Comments
 (0)