Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for DB2 SQL standard language option STDSQL #2336

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading