Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x | import {ver, seq, tok, alt, starPrio, altPrio, Expression, AlsoIn} from "../combi";
import {SQLSource, SQLSourceNoSpace} from ".";
import {ParenRight, ParenRightW, WParenLeft, WParenLeftW, WParenRight, WParenRightW} from "../../1_lexer/tokens";
import {Release} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
import {SQLSetOpGroup} from "./sql_set_op_group";
import {buildSelectCore} from "./_select_core";
export class SQLIn extends Expression {
public getRunnable(): IStatementRunnable {
const val = new SQLSource();
const short = new SQLSourceNoSpace();
const listOld = seq(tok(WParenLeft), alt(ver(Release.v740sp05, short, {also: AlsoIn.OpenABAP}), val), starPrio(seq(",", val)), altPrio(tok(ParenRight), tok(ParenRightW), tok(WParenRightW)));
const listNew = seq(tok(WParenLeftW), val, starPrio(seq(",", altPrio(short, val))), altPrio(tok(WParenRight), tok(WParenRightW)));
// version is a guess, https://github.com/abaplint/abaplint/issues/2530
const listNeww = ver(Release.v740sp02, listNew, {also: AlsoIn.OpenABAP});
const subSelect = SQLSetOpGroup;
// simple subquery for pre-v750 versions: IN ( SELECT ... ), https://github.com/abaplint/abaplint/issues/3999
const simpleSubSelect = seq("(", "SELECT", buildSelectCore(undefined, false), ")");
const inn = seq("IN", altPrio(subSelect, simpleSubSelect, listOld, listNeww, SQLSource));
return inn;
}
} |