Skip to content

Commit

Permalink
Add support for DB2 SQL standard language option STDSQL
Browse files Browse the repository at this point in the history
  • Loading branch information
ilidio-lopes authored and ap891843 committed Jul 8, 2024
1 parent c41c755 commit 318be08
Show file tree
Hide file tree
Showing 11 changed files with 115 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
},
{
"pattern": "(?i)(QUALIFY|QUA)\\s*\\(\\s*(COMPAT|C_CHAR|EXTEND|E_CHAR)\\s*\\)"
},
{
"pattern": "(?i)STDSQL\\s*\\(\\s*(YES|NO)\\s*\\)"
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
],
"repository": {
"db2-sql-keywords": {
"match": "(?<![\\-\\w])(?i:ABSOLUTE|ACCELERATION|ACCELERATOR|ACCESS|ACCESSCTRL|ACCTNG|ACTION|ACTIVATE|ACTIVE|ADD|ADDRESS|AFTER|AGE|ALGORITHM|ALIAS|ALL|ALLOCATE|ALLOW|ALTER|ALTERIN|ALWAYS|AND|ANY|APPEND|APPLCOMPAT|APPLICATION|APPLNAME|ARCHIVE|ARRAY|ARRAY_EXISTS|AS|ASC|ASCII|ASENSITIVE|ASSEMBLE|ASSOCIATE|ASUTIME|AT|ATOMIC|ATTRIBUTES|AUDIT|AUTHENTICATION|AUTHID|AUTONOMOUS|AUX|AUXILIARY|AVG|BASED|BEFORE|BEGIN|BETWEEN|BIGINT|BINARY|BIND|BINDADD|BINDAGENT|BIT|BLOB|BOTH|BSDS|BUFFERPOOL|BUFFERPOOLS|BUSINESS_TIME|BY|CACHE|CALL|CALLED|CALLER|CAPTURE|CARDINALITY|CASCADE|CASCADED|CASE|CAST|CATALOG_NAME|CCSID|CHANGE|CHANGED|CHANGES|CHAR|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CLAUSE|CLIENT|CLIENT_ACCTNG|CLIENT_APPLNAME|CLIENT_CORR_TOKEN|CLIENT_USERID|CLIENT_WRKSTNNAME|CLOB|CLONE|CLOSE|CLUSTER|COALESCE|COBOL|COLLECTION|COLLID|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPATIBILITY|COMPRESS|CONCAT|CONCENTRATE|CONCURRENT|CONDITION|CONDITION_NUMBER|CONNECT|CONNECTION|CONSTANT|CONSTRAINT|CONTAINS|CONTEXT|CONTINUE|CONTROL|COPY|CORR|CORRELATION|COUNT|COUNT_BIG|COVARIANCE|CREATE|CREATEALIAS|CREATEDBA|CREATESG|CREATEIN|CREATESG|CREATETAB|CREATETMTAB|CREATETS|CREATE_SECURE_OBJECT|CROSS|CS|CUBE|CUME_DIST|CURRENT|CURRENTLY|CURRENT_DATE|CURRENT_LC_CTYPE|CURRENT_PATH|CURRENT_SCHEMA|CURRENT_SERVER|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_TIMEZONE|CURSOR|CURSORS|CURSOR_NAME|CYCLE|DATA|DATAACCESS|DATABASE|DATACLAS|DATE|DAY|DAYOFMONTH|DAYOFWEEK|DAYOFYEAR|DAYS|DB2SQL|DB2_AUTHENTICATION_TYPE|DB2_AUTHORIZATION_ID|DB2_CONNECTION_STATE|DB2_CONNECTION_STATUS|DB2_ENCRYPTION_TYPE|DB2_ERROR_CODE1|DB2_ERROR_CODE2|DB2_ERROR_CODE3|DB2_ERROR_CODE4|DB2_GET_DIAGNOSTICS_DIAGNOSTICS|DB2_INTERNAL_ERROR_POINTER|DB2_LAST_ROW|DB2_LINE_NUMBER|DB2_MESSAGE_ID|DB2_MODULE_DETECTING_ERROR|DB2_NUMBER_PARAMETER_MARKERS|DB2_NUMBER_RESULT_SETS|DB2_NUMBER_ROWS|DB2_ORDINAL_TOKEN1|DB2_ORDINAL_TOKEN2|DB2_ORDINAL_TOKEN3|DB2_ORDINAL_TOKEN4|DB2_PRODUCT_ID|DB2_REASON_CODE|DB2_RETURNED_SQLCODE|DB2_RETURN_STATUS|DB2_ROW_NUMBER|DB2_SERVER_CLASS_NAME|DB2_SQLERRD1|DB2_SQLERRD2|DB2_SQLERRD3|DB2_SQLERRD4|DB2_SQLERRD5|DB2_SQLERRD6|DB2_SQLERRD_SET|DB2_SQL_ATTR_CURSOR_HOLD|DB2_SQL_ATTRCURSOR_ROWSET|DB2_SQL_ATTR_CURSOR_SCROLLABLE|DB2_SQL_ATTR_CURSOR_SENSITIVITY|DB2_SQL_ATTR_CURSOR_TYPE|DB2_SQL_NESTING_LEVEL|DB2_TOKEN_COUNT|DBADM|DBCLOB|DBCTRL|DBINFO|DBMAINT|DEACTIVATE|DEALLOCATE|DEBUG|DEBUGSESSION|DEC|DECFLOAT|DECIMAL|DECLARE|DEC_ROUND_CEILING|DEC_ROUND_DOWN|DEC_ROUND_FLOOR|DEC_ROUND_HALF_DOWN|DEC_ROUND_HALF_EVEN|DEC_ROUND_HALF_UP|DEC_ROUND_UP|DEFAULT|DEFAULTS|DEFER|DEFERRED|DEFINE|DEFINEBIND|DEFINER|DEFINERUN|DEGREE|DELETE|DENSE_RANK|DEPENDENT|DESC|DESCRIBE|DESCRIPTOR|DETERMINISTIC|DIAGNOSTICS|DISABLE|DISALLOW|DISPATCH|DISPLAY|DISPLAYDB|DISTINCT|DO|DOUBLE|DROP|DROPIN|DSNDB04|DSSIZE|DYNAMIC|DYNAMICRULES|EACH|EBCDIC|EDITPROC|ELEMENT|ELIGIBLE|ELSE|ELSEIF|EMPTY|ENABLE|ENCODING|ENCRYPTION|END|ENDING|ENFORCED|ENVIRONMENT|ERASE|ESCAPE|EUR|EVERY|EXCEPT|EXCHANGE|EXCLUDE|EXCLUDING|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXPLAIN|EXTERNAL|EXTRA|EXTRACT|FAILBACK|FAILURE|FAILURES|FENCED|FETCH|FIELDPROC|FINAL|FIRST|FIRST_VALUE|FLOAT|FOLLOWING|FOR|FOREIGN|FORMAT|FOUND|FREE|FREEPAGE|FROM|FULL|FUNCTION|V10R1|V11R1|GBPCACHE|GENERAL|GENERATE|GENERATED|GENERIC|GET|GET_ACCEL_ARCHIVE|GLOBAL|GO|GOTO|GRANT|GRAPHIC|GROUP|GROUPING|HANDLER|HASH|HAVING|HEX|HIDDEN|HINT|HISTORY|HOLD|HOUR|HOURS|ID|IDENTITY|IF|IGNORE|IMAGCOPY|IMMEDIATE|IMPLICITLY|IN|INCLUDE|INCLUDING|INCLUSIVE|INCREMENT|INDEX|INDEXBP|INDICATOR|INHERIT|INITIALLY|INLINE|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INSTEAD|INT|INTEGER|INTERSECT|INTO|INVALID|INVOKEBIND|INVOKERUN|IS|ISO|ISOLATION|ITERATE|JAR|JAVA|JIS|JOBNAME|JOIN|KEEP|KEY|KEYS|LABEL|LABELS|LAG|LANGUAGE|LARGE|LAST|LAST_VALUE|LC_CTYPE|LEAD|LEAVE|LEFT|LENGTH|LEVEL|LIKE|LIMIT|LITERALS|LOAD|LOB|LOCAL|LOCALE|LOCATION|LOCATOR|LOCATORS|LOCK|LOCKED|LOCKMAX|LOCKS|LOCKSIZE|LOGGED|LOOP|LOWER|MAIN|MAINTAINED|MASK|MATCHED|MATERIALIZED|MAX|MAXPARTITIONS|MAXROWS|MAXVALUE|MEMBER|MERGE|MESSAGE_TEXT|MGMTCLAS|MICROSECOND|MICROSECONDS|MIN|MINUTE|MINUTES|MINVALUE|MIXED|MODE|MODIFIERS|MODIFIES|MONITOR1|MONITOR2|MONTH|MONTHS|MORE|MOVE|MULTIPLIER|NAME|NAMES|NAMESPACE|NATIONAL|NCNAME|NEW|NEW_TABLE|NEXT|NO|NODEFER|NONE|NOT|NTH_VALUE|NTILE|NULL|NULLS|NULTERM|NUMBER|NUMERIC|NUMPARTS|OBID|OBJECT|OF|OFF|OFFSET|OLD|OLD_TABLE|ON|ONCE|ONLY|OPEN|OPERATION|OPTHINT|OPTIMIZATION|OPTION|OPTIONAL|OPTIONS|OR|ORDER|ORDINALITY|ORGANIZE|ORIGINAL|OUT|OUTCOME|OUTER|OUTPUT|OVER|OVERLAPS|OVERRIDING|OWNER|OWNERSHIP|PACKADM|PACKAGE|PACKAGESET|PACKAGE_NAME|PACKAGE_SCHEMA|PACKAGE_VERSION|PADDED|PAGE|PAGENUM|PARALLEL|PARAMETER|PART|PARTITION|PARTITIONED|PASSING|PASSWORD|PATH|PCTFREE|PENDING|PERCENT_RANK|PERIOD|PERMISSION|PIECESIZE|PLAN|PLI|PORTION|POSITION|POSITIONING|PRECEDING|PRECISION|PREPARE|PRESERVE|PREVIOUS|PRIMARY|PRIOR|PRIQTY|PRIVILEGES|PROCEDURE|PROFILE|PROGRAM|PUBLIC|QUALIFIER|QUERY|QUERYNO|RANDOM|RANGE|RANK|RATIO_TO_REPORT|READ|READS|REAL|RECORDS|RECOVER|RECOVERDB|REF|REFERENCES|REFERENCING|REFRESH|REGENERATE|REGISTERS|RELATIVE|RELEASE|REMOVE|RENAME|REOPT|REORG|REPAIR|REPEAT|REPLACE|REQUIRED|RESET|RESIDENT|RESIGNAL|RESOLUTION|RESPECT|RESTART|RESTRICT|RESULT|RESULT-SET-LOCATOR|RETAIN|RETURN|RETURNED_SQLSTATE|RETURNING|RETURNS|REUSE|REVOKE|REXX|RIGHT|ROLE|ROLLBACK|ROLLUP|ROTATE|ROUNDING|ROUND_CEILING|ROUND_DOWN|ROUND_FLOOR|ROUND_HALF_DOWN|ROUND_HALF_EVEN|ROUND_HALF_UP|ROUND_UP|ROUTINE|ROW|ROWID|ROWS|ROWSET|ROW_COUNT|ROW_NUMBER|RR|RS|RULES|RUN|SAVEPOINT|SBCS|SCHEMA|SCHEME|SCRATCHPAD|SCROLL|SECOND|SECONDS|SECQTY|SECTION|SECURED|SECURITY|SEGSIZE|SELECT|SELECTIVITY|SENSITIVE|SEQUENCE|SERVAUTH|SERVER|SERVER_NAME|SESSION|SESSION_USER|SET|SETS|SHARE|SIGNAL|SIZE|SKIP|SMALLINT|SOME|SOURCE|SPACE|SPECIAL|SPECIFIC|SQL|SQLADM|SQLCA|SQLCODE|SQLD|SQLDA|SQLDABC|SQLERROR|SQLEXCEPTION|SQLID|SQLN|SQLSTATE|SQLVAR|SQLWARNING|STABILIZED|STACKED|START|STARTDB|STARTING|STATEMENT|STATEMENTS|STATIC|STATS|STAY|STDDEV|STMTCACHE|STMTID|STMTTOKEN|STOGROUP|STOP|STOPALL|STOPDB|STORAGE|STORCLAS|STORES|STOSPACE|STRUCTURE|STYLE|SUB|SUBSTR|SUBSTRING|SUM|SYNONYM|SYSADM|SYSCTRL|SYSDEFLT|SYSIBM|SYSOPR|SYSTEM|SYSTEM_TIME|TABLE|TABLESPACE|TEMPORAL|TEMPORARY|THEN|TIME|TIMESTAMP|TIMEZONE|TO|TOKEN|TRACE|TRACKMOD|TRANSACTION|TRANSFER|TRANSLATE|TRANSLATION|TRIGGER|TRIGGERS|TRIM|TRUNCATE|TRUSTED|TYPE|TYPES|UNBOUNDED|UNICODE|UNION|UNIQUE|UNNEST|UNPACK|UNTIL|UPDATE|UPON|UPPER|UR|URL|USA|USAGE|USE|USER|USERID|USING|V1|VALIDATE|VALIDPROC|VALUE|VALUES|VARBINARY|VARCHAR|VARGRAPHIC|VARIABLE|VARIANCE|VARYING|VCAT|VERSION|VERSIONING|VERSIONS|VIEW|VOLATILE|VOLUMES|WAIT|WAITFORDATA|WHEN|WHENEVER|WHERE|WHILE|WITH|WITHOUT|WLM|WORK|WORKFILE|WRAPPED|WRITE|WRKSTNNAME|XML|XMLCAST|XMLNAMESPACES|XMLPATTERN|XMLQUERY|XMLSCHEMA|XMLTABLE|YEAR|YEARS|YES|ZONE)(?![\\-\\w])",
"match": "(?<![\\-\\w])(?i:ABSOLUTE|ACCELERATION|ACCELERATOR|ACCESS|ACCESSCTRL|ACCTNG|ACTION|ACTIVATE|ACTIVE|ADD|ADDRESS|AFTER|AGE|ALGORITHM|ALIAS|ALL|ALLOCATE|ALLOW|ALTER|ALTERIN|ALWAYS|AND|ANY|APPEND|APPLCOMPAT|APPLICATION|APPLNAME|ARCHIVE|ARRAY|ARRAY_EXISTS|AS|ASC|ASCII|ASENSITIVE|ASSEMBLE|ASSOCIATE|ASUTIME|AT|ATOMIC|ATTRIBUTES|AUDIT|AUTHENTICATION|AUTHID|AUTONOMOUS|AUX|AUXILIARY|AVG|BASED|BEFORE|BEGIN|BETWEEN|BIGINT|BINARY|BIND|BINDADD|BINDAGENT|BIT|BLOB|BOTH|BSDS|BUFFERPOOL|BUFFERPOOLS|BUSINESS_TIME|BY|CACHE|CALL|CALLED|CALLER|CAPTURE|CARDINALITY|CASCADE|CASCADED|CASE|CAST|CATALOG_NAME|CCSID|CHANGE|CHANGED|CHANGES|CHAR|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CLAUSE|CLIENT|CLIENT_ACCTNG|CLIENT_APPLNAME|CLIENT_CORR_TOKEN|CLIENT_USERID|CLIENT_WRKSTNNAME|CLOB|CLONE|CLOSE|CLUSTER|COALESCE|COBOL|COLLECTION|COLLID|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPATIBILITY|COMPRESS|CONCAT|CONCENTRATE|CONCURRENT|CONDITION|CONDITION_NUMBER|CONNECT|CONNECTION|CONSTANT|CONSTRAINT|CONTAINS|CONTEXT|CONTINUE|CONTROL|COPY|CORR|CORRELATION|COUNT|COUNT_BIG|COVARIANCE|CREATE|CREATEALIAS|CREATEDBA|CREATESG|CREATEIN|CREATESG|CREATETAB|CREATETMTAB|CREATETS|CREATE_SECURE_OBJECT|CROSS|CS|CUBE|CUME_DIST|CURRENT|CURRENTLY|CURRENT_DATE|CURRENT_LC_CTYPE|CURRENT_PATH|CURRENT_SCHEMA|CURRENT_SERVER|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_TIMEZONE|CURSOR|CURSORS|CURSOR_NAME|CYCLE|DATA|DATAACCESS|DATABASE|DATACLAS|DATE|DAY|DAYOFMONTH|DAYOFWEEK|DAYOFYEAR|DAYS|DB2SQL|DB2_AUTHENTICATION_TYPE|DB2_AUTHORIZATION_ID|DB2_CONNECTION_STATE|DB2_CONNECTION_STATUS|DB2_ENCRYPTION_TYPE|DB2_ERROR_CODE1|DB2_ERROR_CODE2|DB2_ERROR_CODE3|DB2_ERROR_CODE4|DB2_GET_DIAGNOSTICS_DIAGNOSTICS|DB2_INTERNAL_ERROR_POINTER|DB2_LAST_ROW|DB2_LINE_NUMBER|DB2_MESSAGE_ID|DB2_MODULE_DETECTING_ERROR|DB2_NUMBER_PARAMETER_MARKERS|DB2_NUMBER_RESULT_SETS|DB2_NUMBER_ROWS|DB2_ORDINAL_TOKEN1|DB2_ORDINAL_TOKEN2|DB2_ORDINAL_TOKEN3|DB2_ORDINAL_TOKEN4|DB2_PRODUCT_ID|DB2_REASON_CODE|DB2_RETURNED_SQLCODE|DB2_RETURN_STATUS|DB2_ROW_NUMBER|DB2_SERVER_CLASS_NAME|DB2_SQLERRD1|DB2_SQLERRD2|DB2_SQLERRD3|DB2_SQLERRD4|DB2_SQLERRD5|DB2_SQLERRD6|DB2_SQLERRD_SET|DB2_SQL_ATTR_CURSOR_HOLD|DB2_SQL_ATTRCURSOR_ROWSET|DB2_SQL_ATTR_CURSOR_SCROLLABLE|DB2_SQL_ATTR_CURSOR_SENSITIVITY|DB2_SQL_ATTR_CURSOR_TYPE|DB2_SQL_NESTING_LEVEL|DB2_TOKEN_COUNT|DBADM|DBCLOB|DBCTRL|DBINFO|DBMAINT|DEACTIVATE|DEALLOCATE|DEBUG|DEBUGSESSION|DEC|DECFLOAT|DECIMAL|DECLARE|DEC_ROUND_CEILING|DEC_ROUND_DOWN|DEC_ROUND_FLOOR|DEC_ROUND_HALF_DOWN|DEC_ROUND_HALF_EVEN|DEC_ROUND_HALF_UP|DEC_ROUND_UP|DEFAULT|DEFAULTS|DEFER|DEFERRED|DEFINE|DEFINEBIND|DEFINER|DEFINERUN|DEGREE|DELETE|DENSE_RANK|DEPENDENT|DESC|DESCRIBE|DESCRIPTOR|DETERMINISTIC|DIAGNOSTICS|DISABLE|DISALLOW|DISPATCH|DISPLAY|DISPLAYDB|DISTINCT|DO|DOUBLE|DROP|DROPIN|DSNDB04|DSSIZE|DYNAMIC|DYNAMICRULES|EACH|EBCDIC|EDITPROC|ELEMENT|ELIGIBLE|ELSE|ELSEIF|EMPTY|ENABLE|ENCODING|ENCRYPTION|END|ENDING|ENFORCED|ENVIRONMENT|ERASE|ESCAPE|EUR|EVERY|EXCEPT|EXCHANGE|EXCLUDE|EXCLUDING|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXPLAIN|EXTERNAL|EXTRA|EXTRACT|FAILBACK|FAILURE|FAILURES|FENCED|FETCH|FIELDPROC|FINAL|FIRST|FIRST_VALUE|FLOAT|FOLLOWING|FOR|FOREIGN|FORMAT|FOUND|FREE|FREEPAGE|FROM|FULL|FUNCTION|V10R1|V11R1|GBPCACHE|GENERAL|GENERATE|GENERATED|GENERIC|GET|GET_ACCEL_ARCHIVE|GLOBAL|GO|GOTO|GRANT|GRAPHIC|GROUP|GROUPING|HANDLER|HASH|HAVING|HEX|HIDDEN|HINT|HISTORY|HOLD|HOUR|HOURS|ID|IDENTITY|IF|IGNORE|IMAGCOPY|IMMEDIATE|IMPLICITLY|IN|INCLUDE|INCLUDING|INCLUSIVE|INCREMENT|INDEX|INDEXBP|INDICATOR|INHERIT|INITIALLY|INLINE|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INSTEAD|INT|INTEGER|INTERSECT|INTO|INVALID|INVOKEBIND|INVOKERUN|IS|ISO|ISOLATION|ITERATE|JAR|JAVA|JIS|JOBNAME|JOIN|KEEP|KEY|KEYS|LABEL|LABELS|LAG|LANGUAGE|LARGE|LAST|LAST_VALUE|LC_CTYPE|LEAD|LEAVE|LEFT|LENGTH|LEVEL|LIKE|LIMIT|LITERALS|LOAD|LOB|LOCAL|LOCALE|LOCATION|LOCATOR|LOCATORS|LOCK|LOCKED|LOCKMAX|LOCKS|LOCKSIZE|LOGGED|LOOP|LOWER|MAIN|MAINTAINED|MASK|MATCHED|MATERIALIZED|MAX|MAXPARTITIONS|MAXROWS|MAXVALUE|MEMBER|MERGE|MESSAGE_TEXT|MGMTCLAS|MICROSECOND|MICROSECONDS|MIN|MINUTE|MINUTES|MINVALUE|MIXED|MODE|MODIFIERS|MODIFIES|MONITOR1|MONITOR2|MONTH|MONTHS|MORE|MOVE|MULTIPLIER|NAME|NAMES|NAMESPACE|NATIONAL|NCNAME|NEW|NEW_TABLE|NEXT|NO|NODEFER|NONE|NOT|NTH_VALUE|NTILE|NULL|NULLS|NULTERM|NUMBER|NUMERIC|NUMPARTS|OBID|OBJECT|OF|OFF|OFFSET|OLD|OLD_TABLE|ON|ONCE|ONLY|OPEN|OPERATION|OPTHINT|OPTIMIZATION|OPTION|OPTIONAL|OPTIONS|OR|ORDER|ORDINALITY|ORGANIZE|ORIGINAL|OUT|OUTCOME|OUTER|OUTPUT|OVER|OVERLAPS|OVERRIDING|OWNER|OWNERSHIP|PACKADM|PACKAGE|PACKAGESET|PACKAGE_NAME|PACKAGE_SCHEMA|PACKAGE_VERSION|PADDED|PAGE|PAGENUM|PARALLEL|PARAMETER|PART|PARTITION|PARTITIONED|PASSING|PASSWORD|PATH|PCTFREE|PENDING|PERCENT_RANK|PERIOD|PERMISSION|PIECESIZE|PLAN|PLI|PORTION|POSITION|POSITIONING|PRECEDING|PRECISION|PREPARE|PRESERVE|PREVIOUS|PRIMARY|PRIOR|PRIQTY|PRIVILEGES|PROCEDURE|PROFILE|PROGRAM|PUBLIC|QUALIFIER|QUERY|QUERYNO|RANDOM|RANGE|RANK|RATIO_TO_REPORT|READ|READS|REAL|RECORDS|RECOVER|RECOVERDB|REF|REFERENCES|REFERENCING|REFRESH|REGENERATE|REGISTERS|RELATIVE|RELEASE|REMOVE|RENAME|REOPT|REORG|REPAIR|REPEAT|REPLACE|REQUIRED|RESET|RESIDENT|RESIGNAL|RESOLUTION|RESPECT|RESTART|RESTRICT|RESULT|RESULT-SET-LOCATOR|RETAIN|RETURN|RETURNED_SQLSTATE|RETURNING|RETURNS|REUSE|REVOKE|REXX|RIGHT|ROLE|ROLLBACK|ROLLUP|ROTATE|ROUNDING|ROUND_CEILING|ROUND_DOWN|ROUND_FLOOR|ROUND_HALF_DOWN|ROUND_HALF_EVEN|ROUND_HALF_UP|ROUND_UP|ROUTINE|ROW|ROWID|ROWS|ROWSET|ROW_COUNT|ROW_NUMBER|RR|RS|RULES|RUN|SAVEPOINT|SBCS|SCHEMA|SCHEME|SCRATCHPAD|SCROLL|SECOND|SECONDS|SECQTY|SECTION|SECURED|SECURITY|SEGSIZE|SELECT|SELECTIVITY|SENSITIVE|SEQUENCE|SERVAUTH|SERVER|SERVER_NAME|SESSION|SESSION_USER|SET|SETS|SHARE|SIGNAL|SIZE|SKIP|SMALLINT|SOME|SOURCE|SPACE|SPECIAL|SPECIFIC|SQL|SQLADM|SQLCA|SQLCADE|SQLCODE|SQLD|SQLDA|SQLDABC|SQLERROR|SQLEXCEPTION|SQLID|SQLN|SQLSTAT|SQLSTATE|SQLVAR|SQLWARNING|STABILIZED|STACKED|START|STARTDB|STARTING|STATEMENT|STATEMENTS|STATIC|STATS|STAY|STDDEV|STMTCACHE|STMTID|STMTTOKEN|STOGROUP|STOP|STOPALL|STOPDB|STORAGE|STORCLAS|STORES|STOSPACE|STRUCTURE|STYLE|SUB|SUBSTR|SUBSTRING|SUM|SYNONYM|SYSADM|SYSCTRL|SYSDEFLT|SYSIBM|SYSOPR|SYSTEM|SYSTEM_TIME|TABLE|TABLESPACE|TEMPORAL|TEMPORARY|THEN|TIME|TIMESTAMP|TIMEZONE|TO|TOKEN|TRACE|TRACKMOD|TRANSACTION|TRANSFER|TRANSLATE|TRANSLATION|TRIGGER|TRIGGERS|TRIM|TRUNCATE|TRUSTED|TYPE|TYPES|UNBOUNDED|UNICODE|UNION|UNIQUE|UNNEST|UNPACK|UNTIL|UPDATE|UPON|UPPER|UR|URL|USA|USAGE|USE|USER|USERID|USING|V1|VALIDATE|VALIDPROC|VALUE|VALUES|VARBINARY|VARCHAR|VARGRAPHIC|VARIABLE|VARIANCE|VARYING|VCAT|VERSION|VERSIONING|VERSIONS|VIEW|VOLATILE|VOLUMES|WAIT|WAITFORDATA|WHEN|WHENEVER|WHERE|WHILE|WITH|WITHOUT|WLM|WORK|WORKFILE|WRAPPED|WRITE|WRKSTNNAME|XML|XMLCAST|XMLNAMESPACES|XMLPATTERN|XMLQUERY|XMLSCHEMA|XMLTABLE|YEAR|YEARS|YES|ZONE)(?![\\-\\w])",
"name": "keyword.verb.sql"
},
"comment-sql-source": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,22 @@ public Optional<CompilerDirectiveOption> getDirectiveOption(String directiveText
public CompilerDirectiveOption defaultValue() {
return new CompilerDirectiveOption(this, ImmutableList.of("XMLSS"));
}
},
STDSQL {
@Override
public Optional<CompilerDirectiveOption> getDirectiveOption(String directiveText) {
if (isContains(directiveText, "STDSQL(YES)")) {
return Optional.of(new CompilerDirectiveOption(this, ImmutableList.of("YES")));
} else if (isContains(directiveText, "STDSQL(NO)")) {
return Optional.of(new CompilerDirectiveOption(this, ImmutableList.of("NO")));
} else {
return Optional.empty();
}
}
@Override
public CompilerDirectiveOption defaultValue() {
return new CompilerDirectiveOption(this, ImmutableList.of("NO"));
}
};

private static boolean isContains(String directiveText, String s) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class CompilerDirectiveContextTest {

public static final String EXTEND = "EXTEND";
public static final String COMPAT = "COMPAT";
public static final String YES = "YES";

@Test
void testCompilerOptionsContextFetch() {
Expand Down Expand Up @@ -55,4 +56,17 @@ void testCompilerOptionsContextFetch() {

assertEquals(COMPAT, contextValueResult3.get(contextValueResult3.size() - 1));
}

@Test
void testCompilerOptionsContextFetchStdSql() {
CompilerDirectiveContext context = new CompilerDirectiveContext();

assertEquals(context.getCompilerDirectiveMap().entrySet().size(), 0);
context.updateDirectiveOptions(
new CompilerDirectiveOption(CompilerDirectiveName.STDSQL, ImmutableList.of(YES)));
Optional<CompilerDirectiveOption> result =
context.filterDirectiveList(ImmutableList.of(CompilerDirectiveName.STDSQL));
assertTrue(result.isPresent());
Assertions.assertTrue(result.get().getValue().contains(YES));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
import lombok.experimental.UtilityClass;
import org.eclipse.lsp.cobol.common.model.Locality;
import org.eclipse.lsp.cobol.common.model.tree.variable.*;
import org.eclipse.lsp.cobol.common.processor.CompilerDirectiveName;
import org.eclipse.lsp.cobol.common.utils.ImplicitCodeUtils;

import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
* Generates SQLCA data structure for DB2
Expand All @@ -34,9 +36,10 @@ public class Db2ImplicitVariablesGenerator {
/**
* Generates SQLCA data structure for DB2
*
* @param compilerDirectiveMap map of compiler directives
* @return SQLCA data structure
*/
public List<VariableNode> generateDb2Nodes() {
public List<VariableNode> generateDb2Nodes(Map<CompilerDirectiveName, List<String>> compilerDirectiveMap) {
/*
01 SQLCA.
05 SQLCAID PIC X(8).
Expand Down Expand Up @@ -66,7 +69,12 @@ PIC S9(9) COMP-5.
VariableNode variable = new GroupItemNode(LOCALITY, 1, "SQLCA", false, false, UsageFormat.UNDEFINED);
addElement(variable, 5, "SQLCAID", "X(8)");
addElement(variable, 5, "SQLCABC", "S9(9)", UsageFormat.COMP_5);
addElement(variable, 5, "SQLCODE", "S9(9)", UsageFormat.COMP_5);
if (compilerDirectiveMap.get(CompilerDirectiveName.STDSQL) != null
&& compilerDirectiveMap.get(CompilerDirectiveName.STDSQL).get(0).equalsIgnoreCase("YES")) {
addElement(variable, 5, "SQLCADE", "S9(9)", UsageFormat.COMP_5);
} else {
addElement(variable, 5, "SQLCODE", "S9(9)", UsageFormat.COMP_5);
}
GroupItemNode sqlerrm = new GroupItemNode(LOCALITY, 5, "SQLERRM", false, false, UsageFormat.UNDEFINED);
variable.addChild(sqlerrm);
addElement(sqlerrm, 49, "SQLERRML", "S9(4)", UsageFormat.COMP_5);
Expand All @@ -90,7 +98,12 @@ PIC S9(9) COMP-5.
addElement(sqlext, 10, "SQLWARN8", "X");
addElement(sqlext, 10, "SQLWARN9", "X");
addElement(sqlext, 10, "SQLWARNA", "X");
addElement(sqlext, 10, "SQLSTATE", "X(5)");
if (compilerDirectiveMap.get(CompilerDirectiveName.STDSQL) != null
&& compilerDirectiveMap.get(CompilerDirectiveName.STDSQL).get(0).equalsIgnoreCase("YES")) {
addElement(sqlext, 10, "SQLSTAT", "X(5)");
} else {
addElement(sqlext, 10, "SQLSTATE", "X(5)");
}

return Collections.singletonList(variable);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public void accept(SectionNode sectionNode, ProcessingContext processingContext)
"Program for section " + sectionNode.getSectionType() + " not found"));
if (getSqlBackendConfig(processingContext).equalsIgnoreCase(SQLBackend.DB2_SERVER.toString()) && !hasSqlCa(programNode)) {
registerVariables(
variableAccumulator, programNode, Db2ImplicitVariablesGenerator.generateDb2Nodes());
variableAccumulator, programNode, Db2ImplicitVariablesGenerator.generateDb2Nodes(
processingContext.getCompilerDirectiveContext().getCompilerDirectiveMap()));
}
if (getSqlBackendConfig(processingContext).equalsIgnoreCase(SQLBackend.DATACOM_SERVER.toString()) && !hasSqlCa(programNode)) {
registerVariables(
Expand Down
Loading

0 comments on commit 318be08

Please sign in to comment.