Skip to content

Commit

Permalink
fix: minor fixes for db2 host variable
Browse files Browse the repository at this point in the history
This commit fixes below minor issues for db2 host variables:
a. should not show error for level-1 range exceeding level 48
b. XML Data Host and File Reference Variables should not allow (BLOB/CLOB/DBCLOB)-LOCATOR

Signed-off-by: ap891843 <aman.prashant@broadcom.com>
  • Loading branch information
ap891843 committed Jul 22, 2024
1 parent 0c88f39 commit e8331a7
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ result_set_locator_variable: dbs_level_01 entry_name host_variable_usage result_

tableLocators_variable: dbs_host_var_levels entry_name host_variable_usage tableLocators;

lob_xml_host_variables: dbs_host_var_levels entry_name host_variable_usage (xml_as lobWithSize | xml_as lobNoSize);
lob_xml_host_variables: dbs_host_var_levels entry_name host_variable_usage xml_as (lobWithSize | xml_lobNO_size);

lob_host_variables: dbs_host_var_levels entry_name host_variable_usage (lobWithSize | lobNoSize);
lob_host_variables: dbs_integer entry_name host_variable_usage (lobWithSize | lobNoSize);

dbs_host_var_levels: dbs_level_01 | T=dbs_integer {validateIntegerRange($T.text, 2, 48);};

Expand All @@ -57,8 +57,11 @@ lobWithSize
: (BINARY LARGE OBJECT | BLOB | CHARACTER LARGE OBJECT | CHAR LARGE OBJECT | CLOB | DBCLOB) LPARENCHAR dbs_integer k_m_g? RPARENCHAR
;
lobNoSize
: BLOB_LOCATOR | CLOB_LOCATOR | DBCLOB_LOCATOR | BLOB_FILE | CLOB_FILE | DBCLOB_FILE
: BLOB_LOCATOR | CLOB_LOCATOR | DBCLOB_LOCATOR | xml_lobNO_size
;

xml_lobNO_size: BLOB_FILE | CLOB_FILE | DBCLOB_FILE;

xml_as: XML AS;

entry_name : (FILLER |dbs_host_names);
Expand Down Expand Up @@ -1840,4 +1843,4 @@ dbs_char_a: T=(NONNUMERICLITERAL | IDENTIFIER) {validateValue($T.text, "A");};
dbs_char_n: T=(NONNUMERICLITERAL | IDENTIFIER) {validateValue($T.text, "N");};
dbs_char_r: T=(NONNUMERICLITERAL | IDENTIFIER) {validateValue($T.text, "R");};
dbs_level_01: SINGLEDIGIT_1 | DOUBLEDIGIT_1;
/////
/////
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public List<Node> visitLob_xml_host_variables(Db2SqlParser.Lob_xml_host_variable

@Override
public List<Node> visitLob_host_variables(Db2SqlParser.Lob_host_variablesContext ctx) {
List<Node> hostVariableDefinitionNode = createHostVariableDefinitionNode(ctx, ctx.dbs_host_var_levels(), ctx.entry_name());
List<Node> hostVariableDefinitionNode = createHostVariableDefinitionNode(ctx, ctx.dbs_integer(), ctx.entry_name());
if (ctx.lobWithSize() != null && ctx.lobWithSize().BINARY() != null) {
generateVarbinVariables((VariableDefinitionNode) hostVariableDefinitionNode.get(0),
ctx.lobWithSize().dbs_integer().getText(), ctx);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public class TestSqlHostVariable {
+ " Data Division.\n"
+ " Working-Storage Section.\n"
+ " 01 {$*GREET}.\n"
+ " 49 {$*VAR|1} USAGE IS SQL TYPE IS CHARACTER LARGE OBJECT (10 M).\n"
+ " 49 {$*VAR} USAGE IS SQL TYPE IS CHARACTER LARGE OBJECT (10 M).\n"
+ " PROCEDURE DIVISION.\n"
+ " DISPLAY {$VAR}.";

Expand All @@ -138,9 +138,6 @@ public class TestSqlHostVariable {
+ " 01 {$*VAR-NAME4} USAGE IS SQL TYPE IS XML AS CHAR LARGE OBJECT (10 G).\n"
+ " 01 {$*VAR-NAME5} USAGE IS SQL TYPE IS XML AS CLOB (20).\n"
+ " 01 {$*VAR-NAME6} USAGE IS SQL TYPE IS XML AS DBCLOB (30 K).\n"
+ " 01 {$*VAR-NAME7} USAGE IS SQL TYPE IS XML AS BLOB-LOCATOR.\n"
+ " 01 {$*VAR-NAME8} USAGE IS SQL TYPE IS XML AS CLOB-LOCATOR.\n"
+ " 01 {$*VAR-NAME9} USAGE IS SQL TYPE IS XML AS DBCLOB-LOCATOR.\n"
+ " 01 {$*VAR-NAME10} USAGE IS SQL TYPE IS XML AS BLOB-FILE.\n"
+ " 01 {$*VAR-NAME11} USAGE IS SQL TYPE IS XML AS CLOB-FILE.\n"
+ " 01 {$*VAR-NAME12} USAGE IS SQL TYPE IS XML AS DBCLOB-FILE.\n"
Expand Down Expand Up @@ -272,15 +269,7 @@ void testLobVariables() {

@Test
void testLobVariables_levelError() {
UseCaseEngine.runTest(LOD_VARS_TEXT1, ImmutableList.of(), ImmutableMap.of(
"1",
new Diagnostic(
new Range(),
"Allowed range is 2 to 48",
DiagnosticSeverity.Error,
ErrorSource.PARSING.getText()
)
));
UseCaseEngine.runTest(LOD_VARS_TEXT1, ImmutableList.of(), ImmutableMap.of());
}

@Test
Expand Down

0 comments on commit e8331a7

Please sign in to comment.